From f113e2d6d54ff2b2de6330fdf9f72bbb622e27f4 Mon Sep 17 00:00:00 2001 From: aiju Date: Sat, 10 Feb 2018 01:04:05 +0000 Subject: zynq: fix 10BASE-T and 100BASE-TX support --- sys/src/9/zynq/etherzynq.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'sys') 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){ -- cgit v1.2.3