summaryrefslogtreecommitdiff
path: root/sys/src/9/cycv
diff options
context:
space:
mode:
authoraiju <devnull@localhost>2020-01-10 20:43:24 +0000
committeraiju <devnull@localhost>2020-01-10 20:43:24 +0000
commitffd9c39d1c019c9592b8b8981a463afa040c7f98 (patch)
treebb647493f8bcf8de77b89696d7f4b9fdf29f86d2 /sys/src/9/cycv
parent9ab87f6241ef1b3bb6b179b109b016a383eed6a8 (diff)
dont spin on MDIO
Diffstat (limited to 'sys/src/9/cycv')
-rw-r--r--sys/src/9/cycv/ethercycv.c12
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];
}