ref: f4cd802657b89270653c95d224156ff78981d7ca
parent: 106cbc54a185bca1efa644f3aed97a4b3e5e35eb
author: aiju <devnull@localhost>
date: Fri Jan 10 15:43:24 EST 2020
dont spin on MDIO
--- a/sys/src/9/cycv/ethercycv.c
+++ b/sys/src/9/cycv/ethercycv.c
@@ -87,18 +87,22 @@
static void
mdwrite(Ctlr *c, int r, u16int v)
{- while((c->r[GMII_ADDRESS] & 1<<0) != 0);
+ while((c->r[GMII_ADDRESS] & 1<<0) != 0)
+ tsleep(&up->sleep, return0, nil, 1);
c->r[GMII_DATA] = v;
c->r[GMII_ADDRESS] = 1<<11 | (r&31)<<6 | 1<<1 | 1<<0;
- while((c->r[GMII_ADDRESS] & 1<<0) != 0);
+ while((c->r[GMII_ADDRESS] & 1<<0) != 0)
+ tsleep(&up->sleep, return0, nil, 1);
}
static u16int
mdread(Ctlr *c, int r)
{- while((c->r[GMII_ADDRESS] & 1<<0) != 0);
+ while((c->r[GMII_ADDRESS] & 1<<0) != 0)
+ tsleep(&up->sleep, return0, nil, 1);
c->r[GMII_ADDRESS] = 1<<11 | (r&31)<<6 | 1<<0;
- while((c->r[GMII_ADDRESS] & 1<<0) != 0);
+ while((c->r[GMII_ADDRESS] & 1<<0) != 0)
+ tsleep(&up->sleep, return0, nil, 1);
return c->r[GMII_DATA];
}
--
⑨