MEAR
#define MDIO_DELAY(dp) {(void) INL(dp, MEAR); (void) INL(dp, MEAR); }
OUTL(dp, MEAR, MEAR_MDDIR | MEAR_MDIO);
OUTL(dp, MEAR, MEAR_MDDIR | MEAR_MDIO | MEAR_MDC);
OUTL(dp, MEAR, data | MEAR_MDDIR);
OUTL(dp, MEAR, data | MEAR_MDDIR | MEAR_MDC);
OUTL(dp, MEAR, 0);
OUTL(dp, MEAR, MEAR_MDC);
OUTL(dp, MEAR, 0);
(void) INL(dp, MEAR); /* delay */
if (INL(dp, MEAR) & MEAR_MDIO) {
OUTL(dp, MEAR, MEAR_MDC);
OUTL(dp, MEAR, 0);
(void) INL(dp, MEAR); /* delay */
ret = (ret << 1) | ((INL(dp, MEAR) >> MEAR_MDIO_SHIFT) & 1);
OUTL(dp, MEAR, MEAR_MDC);
OUTL(dp, MEAR, 0);
OUTL(dp, MEAR, MEAR_MDC);
OUTL(dp, MEAR, data | MEAR_MDDIR);
OUTL(dp, MEAR, data | MEAR_MDDIR | MEAR_MDC);
OUTL(dp, MEAR, 0);
OUTL(dp, MEAR, MEAR_MDC);
OUTL(dp, MEAR, EROMAR_EEREQ);
for (i = 0; (INL(dp, MEAR) & EROMAR_EEGNT) == 0; i++) {
OUTL(dp, MEAR, EROMAR_EEDONE);