summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2018-02-10 01:04:05 +0000
committeraiju <devnull@localhost>2018-02-10 01:04:05 +0000
commitf113e2d6d54ff2b2de6330fdf9f72bbb622e27f4 (patch)
treef11dca8ea630eb6f3cee39be7fc053b1c4f958d0 /sys
parentaf0de5ada83205e6016b108a2f19dbc5782d5e8e (diff)
zynq: fix 10BASE-T and 100BASE-TX support
Diffstat (limited to 'sys')
-rw-r--r--sys/src/9/zynq/etherzynq.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/src/9/zynq/etherzynq.c b/sys/src/9/zynq/etherzynq.c
index 48b1d7c4b..de13b9020 100644
--- a/sys/src/9/zynq/etherzynq.c
+++ b/sys/src/9/zynq/etherzynq.c
@@ -96,6 +96,10 @@ enum {
FrameEnd = 1<<15,
};
+enum {
+ GEM0_CLK_CTRL = 0x140/4,
+};
+
typedef struct Ctlr Ctlr;
struct Ctlr {
@@ -157,14 +161,17 @@ ethproc(void *ved)
;
edev->mbps = 1000;
c->r[NET_CFG] |= GIGE_EN;
+ slcr[GEM0_CLK_CTRL] = 1 << 20 | 8 << 8 | 1;
}else if((v & 0x20) != 0){
sp = "100BASE-TX";
edev->mbps = 100;
- c->r[NET_CFG] = NET_CFG & ~GIGE_EN | SPEED;
+ c->r[NET_CFG] = c->r[NET_CFG] & ~GIGE_EN | SPEED;
+ slcr[GEM0_CLK_CTRL] = 5 << 20 | 8 << 8 | 1;
}else if((v & 0x10) != 0){
sp = "10BASE-T";
edev->mbps = 10;
- c->r[NET_CFG] = NET_CFG & ~(GIGE_EN | SPEED);
+ c->r[NET_CFG] = c->r[NET_CFG] & ~(GIGE_EN | SPEED);
+ slcr[GEM0_CLK_CTRL] = 20 << 20 | 20 << 8 | 1;
}else
sp = "???";
if((v & 0x08) != 0){