Don't try to cache the page setting - always set the page before
doing a switch register read/write. PR: kern/172968
This commit is contained in:
parent
2da1951583
commit
68629cc4f1
@ -72,11 +72,18 @@ arswitch_split_setpage(device_t dev, uint32_t addr, uint16_t *phy,
|
||||
*phy = (((addr) >> 6) & 0x07) | 0x10;
|
||||
*reg = ((addr) >> 1) & 0x1f;
|
||||
|
||||
if (sc->page != page) {
|
||||
/*
|
||||
* The earlier code would only switch the page
|
||||
* over if the page were different. Experiments have
|
||||
* shown that this is unstable.
|
||||
*
|
||||
* Hence, the page is always set here.
|
||||
*
|
||||
* See PR kern/172968
|
||||
*/
|
||||
MDIO_WRITEREG(device_get_parent(dev), 0x18, 0, page);
|
||||
sc->page = page;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Read half a register. Some of the registers define control bits, and
|
||||
|
Loading…
Reference in New Issue
Block a user