diff options
author | aiju <devnull@localhost> | 2020-01-10 20:43:24 +0000 |
---|---|---|
committer | aiju <devnull@localhost> | 2020-01-10 20:43:24 +0000 |
commit | ffd9c39d1c019c9592b8b8981a463afa040c7f98 (patch) | |
tree | bb647493f8bcf8de77b89696d7f4b9fdf29f86d2 /sys/src/9/cycv | |
parent | 9ab87f6241ef1b3bb6b179b109b016a383eed6a8 (diff) |
dont spin on MDIO
Diffstat (limited to 'sys/src/9/cycv')
-rw-r--r-- | sys/src/9/cycv/ethercycv.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/src/9/cycv/ethercycv.c b/sys/src/9/cycv/ethercycv.c index 576eae63d..64c4ea91a 100644 --- a/sys/src/9/cycv/ethercycv.c +++ b/sys/src/9/cycv/ethercycv.c @@ -87,18 +87,22 @@ struct Ctlr { 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]; } |