XE_OUTB
XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08);
XE_OUTB(XE_SWC1, 0x80);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~0x08); /* Disable PHY? */
XE_OUTB(XE_SWC1, 0x80);
XE_OUTB(XE_GPR0, 4);
XE_OUTB(XE_SWC1, (XE_INB(XE_ESR) & XE_ESR_MEDIA_SELECT) ? 0x80 : 0xc0);
XE_OUTB(XE_SWC1, 0);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~0x08); /* Disable PHY */
XE_OUTB(XE_SWC1, 0x80);
XE_OUTB(XE_SWC1, 0xc0);
XE_OUTB(XE_LED, 0x3b);
XE_OUTB(0x0b, 0x04); /* 100Mbit LED */
XE_OUTB(XE_LED, 0x3a);
XE_OUTB(XE_GPR1, 0);
XE_OUTB(XE_GPR1, XE_GPR1_POWER_DOWN);
XE_OUTB(XE_GPR1, XE_GPR1_POWER_DOWN|XE_GPR1_AIC);
XE_OUTB(XE_GPR1, 0);
XE_OUTB(XE_GPR0, XE_GPR0_GP2_SELECT|XE_GPR0_GP1_SELECT|XE_GPR0_GP1_OUT);
XE_OUTB(XE_CR, XE_CR_ENABLE_INTR); /* Enable interrupts */
XE_OUTB(0x10, 0x11); /* Unmask master int enable bit */
XE_OUTB(XE_CR, 0); /* Disable interrupts */
XE_OUTB(0x10, 0x10); /* Mask the master int enable bit */
XE_OUTB(XE_SWC1, XE_INB(XE_SWC1) | XE_SWC1_PROMISCUOUS);
XE_OUTB(XE_SWC1, XE_INB(XE_SWC1) & ~XE_SWC1_PROMISCUOUS);
XE_OUTB(XE_SWC1, XE_INB(XE_SWC1) | XE_SWC1_ALLMULTI);
XE_OUTB(XE_SWC1, XE_INB(XE_SWC1) & ~XE_SWC1_ALLMULTI);
XE_OUTB(XE_SWC1, XE_INB(XE_SWC1) & ~(XE_SWC1_IA_ENABLE|XE_SWC1_ALLMULTI));
XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~XE_MSR_HASH_TABLE);
XE_OUTB(XE_SWC1, (XE_INB(XE_SWC1) & ~XE_SWC1_ALLMULTI) | XE_SWC1_IA_ENABLE);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~XE_MSR_HASH_TABLE);
XE_OUTB(XE_SWC1, (XE_INB(XE_SWC1) & ~XE_SWC1_IA_ENABLE) | XE_SWC1_ALLMULTI);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~XE_MSR_HASH_TABLE);
XE_OUTB(XE_SWC1, (XE_INB(XE_SWC1) & ~XE_SWC1_ALLMULTI) | XE_SWC1_IA_ENABLE);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) | XE_MSR_HASH_TABLE);
XE_OUTB(XE_SWC1, (XE_INB(XE_SWC1) & ~XE_SWC1_IA_ENABLE) | XE_SWC1_ALLMULTI);
XE_OUTB(reg, addr[scp->mohawk ? 5 - i : i]);
XE_OUTB(byte, XE_INB(byte) | bit);
XE_OUTB(XE_EDP, savebyte[0]);
XE_OUTB(XE_CR, XE_CR_TX_PACKET | XE_CR_RESTART_TX | XE_CR_ENABLE_INTR);
XE_OUTB(XE_EDP, 0xaa);
#define XE_MII_SET(x) XE_OUTB(XE_GPR2, (XE_INB(XE_GPR2) | 0x04) | (x))
#define XE_MII_CLR(x) XE_OUTB(XE_GPR2, (XE_INB(XE_GPR2) | 0x04) & ~(x))
XE_OUTB(XE_GPR2, 0);
XE_OUTB(XE_CR, XE_CR_SOFT_RESET);
XE_OUTB(XE_CR, 0);
XE_OUTB(XE_GPR0, XE_GPR0_GP2_SELECT|XE_GPR0_GP1_SELECT|XE_GPR0_GP2_OUT);
XE_OUTB(XE_SWC0, XE_SWC0_NO_SRC_INSERT);
XE_OUTB(XE_ECR, XE_INB(XE_ECR) | XE_ECR_EARLY_TX);
XE_OUTB(0x08 + i, scp->arpcom.ac_enaddr[scp->mohawk ? 5 - i : i]);
XE_OUTB(XE_IMR0, XE_IMR0_TX_PACKET | XE_IMR0_MAC_INTR | XE_IMR0_RX_PACKET);
XE_OUTB(XE_RX0Msk,
XE_OUTB(XE_TX0Msk,
XE_OUTB(XE_RST0, 0x00);
XE_OUTB(XE_TXST0, 0x00);
XE_OUTB(XE_CMD0, XE_CMD0_RX_ENABLE|XE_CMD0_ONLINE);
XE_OUTB(XE_CR, 0);
XE_OUTB(XE_RST0, 0);
XE_OUTB(XE_TXST0, 0);
XE_OUTB(XE_TXST1, 0);
XE_OUTB(XE_CR, XE_CR_RESTART_TX);
XE_OUTB(XE_CR, XE_CR_CLEAR_OVERRUN);
XE_OUTB(XE_CR, XE_CR_ENABLE_INTR);
#define XE_SELECT_PAGE(p) XE_OUTB(XE_PR, (p))