XE_INB
XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~0x08); /* Disable PHY? */
XE_OUTB(XE_SWC1, (XE_INB(XE_ESR) & XE_ESR_MEDIA_SELECT) ? 0x80 : 0xc0);
scp->media = IFM_ETHER|((XE_INB(XE_ESR) & XE_ESR_MEDIA_SELECT) ? IFM_10_T : IFM_10_2);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08);
XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~0x08); /* Disable PHY */
if (!(XE_INB(0x10) & 0x01)) {
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);
if (XE_INB(i) != 0xff)
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(byte, XE_INB(byte) | bit);
#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))
ack = XE_INB(XE_GPR2) & XE_MII_RDD;
if (XE_INB(XE_GPR2) & XE_MII_RDD)
kprintf(" %2.2x", XE_INB(i));
kprintf(" %2.2x", XE_INB(i));
kprintf(" %2.2x", XE_INB(i));
scp->version = XE_INB(XE_BOV);
scp->srev = (XE_INB(XE_BOV) & 0x70) >> 4;
scp->srev = (XE_INB(XE_BOV) & 0x30) >> 4;
DEVPRINTF(1, (dev, "CE2 version = 0x%#02x\n", XE_INB(XE_REV)));
XE_OUTB(XE_ECR, XE_INB(XE_ECR) | XE_ECR_EARLY_TX);
psr = XE_INB(XE_PR);
while ((isr = XE_INB(XE_ISR)) != 0) {
rst0 = XE_INB(XE_RST0);
txst0 = XE_INB(XE_TXST0);
txst1 = XE_INB(XE_TXST1);
tpr = XE_INB(XE_TPR);
while ((esr = XE_INB(XE_ESR)) & XE_ESR_FULL_PACKET_RX) {
rsr = XE_INB(XE_RSR);
((char *)ehp)[i] = XE_INB(XE_EDP);