diff options
-rw-r--r-- | src/drivers/net/lan78xx.c | 8 | ||||
-rw-r--r-- | src/drivers/net/lan78xx.h | 6 |
2 files changed, 14 insertions, 0 deletions
diff --git a/src/drivers/net/lan78xx.c b/src/drivers/net/lan78xx.c index a8cf57408..3f4f21b60 100644 --- a/src/drivers/net/lan78xx.c +++ b/src/drivers/net/lan78xx.c @@ -198,6 +198,13 @@ static int lan78xx_open ( struct net_device *netdev ) { LAN78XX_BULK_IN_DLY_SET ( 0 ) ) ) != 0 ) goto err_bulk_in_dly; + /* Enable automatic speed and duplex detection */ + if ( ( rc = smscusb_writel ( smscusb, LAN78XX_MAC_CR, + ( LAN78XX_MAC_CR_ADP | + LAN78XX_MAC_CR_ADD | + LAN78XX_MAC_CR_ASD ) ) ) != 0 ) + goto err_mac_cr; + /* Configure receive filters */ if ( ( rc = smscusb_writel ( smscusb, LAN78XX_RFE_CTL, ( LAN78XX_RFE_CTL_AB | @@ -256,6 +263,7 @@ static int lan78xx_open ( struct net_device *netdev ) { err_fct_tx_ctl: err_fct_rx_ctl: err_rfe_ctl: + err_mac_cr: err_bulk_in_dly: err_int_ep_ctl: usbnet_close ( &smscusb->usbnet ); diff --git a/src/drivers/net/lan78xx.h b/src/drivers/net/lan78xx.h index 6ae17238e..39422aec0 100644 --- a/src/drivers/net/lan78xx.h +++ b/src/drivers/net/lan78xx.h @@ -49,6 +49,12 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define LAN78XX_FCT_TX_CTL 0x00c4 #define LAN78XX_FCT_TX_CTL_EN 0x80000000UL /**< FCT TX enable */ +/** MAC control register */ +#define LAN78XX_MAC_CR 0x0100 +#define LAN78XX_MAC_CR_ADP 0x00002000UL /**< Duplex polarity */ +#define LAN78XX_MAC_CR_ADD 0x00001000UL /**< Auto duplex */ +#define LAN78XX_MAC_CR_ASD 0x00000800UL /**< Auto speed */ + /** MAC receive register */ #define LAN78XX_MAC_RX 0x0104 #define LAN78XX_MAC_RX_MAX_SIZE(mtu) ( (mtu) << 16 ) /**< Max frame size */ |