summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2018-02-10 13:15:57 +0000
committeraiju <devnull@localhost>2018-02-10 13:15:57 +0000
commitdebb786fea3d6ea8018c3d83cdedfdbff0703441 (patch)
tree2ee06c66441b38b4c24462dc893fecbc135a67de /sys
parentf113e2d6d54ff2b2de6330fdf9f72bbb622e27f4 (diff)
aijuboard bootloader: fix 10BASE-T / 100BASE-TX support
Diffstat (limited to 'sys')
-rw-r--r--sys/src/boot/zynq/net.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/sys/src/boot/zynq/net.c b/sys/src/boot/zynq/net.c
index 5b81706af..120b0e37d 100644
--- a/sys/src/boot/zynq/net.c
+++ b/sys/src/boot/zynq/net.c
@@ -168,20 +168,25 @@ ethinit(ulong *r)
while((mdread(r, MDSTATUS) & LINK) == 0)
;
}
+ *(u32int*)(SLCR_BASE + SLCR_UNLOCK) = UNLOCK_KEY;
v = mdread(r, MDPHYCTRL);
if((v & 0x40) != 0){
puts("1000BASE-T");
while((mdread(r, MDGSTATUS) & RECVOK) != RECVOK)
;
r[NET_CFG] |= GIGE_EN;
+ *(u32int*)(SLCR_BASE + GEM0_CLK_CTRL) = 1 << 20 | 8 << 8 | 1;
}else if((v & 0x20) != 0){
puts("100BASE-TX");
- r[NET_CFG] = NET_CFG & ~GIGE_EN | SPEED;
+ r[NET_CFG] = r[NET_CFG] & ~GIGE_EN | SPEED;
+ *(u32int*)(SLCR_BASE + GEM0_CLK_CTRL) = 5 << 20 | 8 << 8 | 1;
}else if((v & 0x10) != 0){
puts("10BASE-T");
- r[NET_CFG] = NET_CFG & ~(GIGE_EN | SPEED);
+ r[NET_CFG] = r[NET_CFG] & ~(GIGE_EN | SPEED);
+ *(u32int*)(SLCR_BASE + GEM0_CLK_CTRL) = 20 << 20 | 20 << 8 | 1;
}else
puts("???");
+ *(u32int*)(SLCR_BASE + SLCR_UNLOCK) = LOCK_KEY;
if((v & 0x08) != 0)
puts(" Full Duplex\n");
else{