summaryrefslogtreecommitdiffstats
path: root/src/drivers/net/smsc95xx.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/smsc95xx.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/smsc95xx.c')
-rw-r--r--src/drivers/net/smsc95xx.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/drivers/net/smsc95xx.c b/src/drivers/net/smsc95xx.c
index e56cf5b4..9b09657d 100644
--- a/src/drivers/net/smsc95xx.c
+++ b/src/drivers/net/smsc95xx.c
@@ -462,7 +462,9 @@ static int smsc95xx_open ( struct net_device *netdev ) {
goto err_set_address;
/* Enable PHY interrupts and update link status */
- if ( ( rc = smscusb_mii_open ( smscusb ) ) != 0 )
+ if ( ( rc = smscusb_mii_open ( smscusb, SMSC95XX_MII_PHY_INTR_MASK,
+ ( SMSC95XX_PHY_INTR_ANEG_DONE |
+ SMSC95XX_PHY_INTR_LINK_DOWN ) ) ) != 0)
goto err_mii_open;
return 0;
@@ -606,7 +608,8 @@ static int smsc95xx_probe ( struct usb_function *func,
smscusb = netdev->priv;
memset ( smscusb, 0, sizeof ( *smscusb ) );
smscusb_init ( smscusb, netdev, func, &smsc95xx_in_operations );
- smscusb_mii_init ( smscusb, SMSC95XX_MII_BASE );
+ smscusb_mii_init ( smscusb, SMSC95XX_MII_BASE,
+ SMSC95XX_MII_PHY_INTR_SOURCE );
usb_refill_init ( &smscusb->usbnet.in,
( sizeof ( struct smsc95xx_tx_header ) -
sizeof ( struct smsc95xx_rx_header ) ),