| 233 | */ |
| 234 | |
| 235 | static int |
| 236 | awg_miibus_readreg(device_t dev, int phy, int reg) |
| 237 | { |
| 238 | struct awg_softc *sc; |
| 239 | int retry, val; |
| 240 | |
| 241 | sc = device_get_softc(dev); |
| 242 | val = 0; |
| 243 | |
| 244 | WR4(sc, EMAC_MII_CMD, |
| 245 | (sc->mdc_div_ratio_m << MDC_DIV_RATIO_M_SHIFT) | |
| 246 | (phy << PHY_ADDR_SHIFT) | |
| 247 | (reg << PHY_REG_ADDR_SHIFT) | |
| 248 | MII_BUSY); |
| 249 | for (retry = MII_BUSY_RETRY; retry > 0; retry--) { |
| 250 | if ((RD4(sc, EMAC_MII_CMD) & MII_BUSY) == 0) { |
| 251 | val = RD4(sc, EMAC_MII_DATA); |
| 252 | break; |
| 253 | } |
| 254 | DELAY(10); |
| 255 | } |
| 256 | |
| 257 | if (retry == 0) |
| 258 | device_printf(dev, "phy read timeout, phy=%d reg=%d\n", |
| 259 | phy, reg); |
| 260 | |
| 261 | return (val); |
| 262 | } |
| 263 | |
| 264 | static int |
| 265 | awg_miibus_writereg(device_t dev, int phy, int reg, int val) |
nothing calls this directly
no test coverage detected