summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/smsc75xx.c
diff options
context:
space:
mode:
authorMichael Brown2017-07-10 13:38:39 +0200
committerMichael Brown2017-07-10 13:41:23 +0200
commit74f934a14e8d0bead8086433596745e7c2b67990 (patch)
tree2ca329bea266f5aa5507ca1a80c5a90ee5d7a6a4 /src/drivers/net/smsc75xx.c
parent[smscusb] Move non-inline register access functions to smscusb.c (diff)
downloadipxe-74f934a14e8d0bead8086433596745e7c2b67990.tar.gz
ipxe-74f934a14e8d0bead8086433596745e7c2b67990.tar.xz
ipxe-74f934a14e8d0bead8086433596745e7c2b67990.zip
[smscusb] Allow for alternative PHY register layouts
The LAN78xx PHY interrupt source and mask registers do not match those used by the SMSC75xx and SMSC95xx. Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/net/smsc75xx.c')
-rw-r--r--src/drivers/net/smsc75xx.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/drivers/net/smsc75xx.c b/src/drivers/net/smsc75xx.c
index c04dc1a7..0da255c2 100644
--- a/src/drivers/net/smsc75xx.c
+++ b/src/drivers/net/smsc75xx.c
@@ -350,7 +350,9 @@ static int smsc75xx_open ( struct net_device *netdev ) {
goto err_set_filter;
/* Enable PHY interrupts and update link status */
- if ( ( rc = smscusb_mii_open ( smscusb ) ) != 0 )
+ if ( ( rc = smscusb_mii_open ( smscusb, SMSC75XX_MII_PHY_INTR_MASK,
+ ( SMSC75XX_PHY_INTR_ANEG_DONE |
+ SMSC75XX_PHY_INTR_LINK_DOWN ) ) ) != 0)
goto err_mii_open;
return 0;
@@ -497,7 +499,8 @@ static int smsc75xx_probe ( struct usb_function *func,
smscusb = netdev->priv;
memset ( smscusb, 0, sizeof ( *smscusb ) );
smscusb_init ( smscusb, netdev, func, &smsc75xx_in_operations );
- smscusb_mii_init ( smscusb, SMSC75XX_MII_BASE );
+ smscusb_mii_init ( smscusb, SMSC75XX_MII_BASE,
+ SMSC75XX_MII_PHY_INTR_SOURCE );
usb_refill_init ( &smscusb->usbnet.in, 0, SMSC75XX_IN_MTU,
SMSC75XX_IN_MAX_FILL );
DBGC ( smscusb, "SMSC75XX %p on %s\n", smscusb, func->name );