XIRCREG2_GPR2
PutByte(XIRCREG2_GPR2, 0x04|0); /* drive MDCK low */
PutByte(XIRCREG2_GPR2, 0x04|1); /* and drive MDCK high */
PutByte(XIRCREG2_GPR2, 0x0c|2|0); /* set MDIO */
PutByte(XIRCREG2_GPR2, 0x0c|2|1); /* and drive MDCK high */
PutByte(XIRCREG2_GPR2, 0x0c|0|0); /* clear MDIO */
PutByte(XIRCREG2_GPR2, 0x0c|0|1); /* and drive MDCK high */
PutWord(XIRCREG2_GPR2-1, 0x0e0e);
PutWord(XIRCREG2_GPR2-1, 0x0f0f);
PutWord(XIRCREG2_GPR2-1, 0x0c0c);
PutWord(XIRCREG2_GPR2-1, 0x0d0d);
PutByte(XIRCREG2_GPR2, 4|0); /* drive MDCK low */
d = GetByte(XIRCREG2_GPR2); /* read MDIO */
PutByte(XIRCREG2_GPR2, 4|1); /* drive MDCK high again */