@ -50,7 +50,7 @@ static void smc911x_handle_mac_address(struct eth_device *dev)
printf ( DRIVERNAME " : MAC %pM \n " , m ) ;
}
static int smc911x_mii phy_read ( struct eth_device * dev ,
static int smc911x_eth_ phy_read ( struct eth_device * dev ,
u8 phy , u8 reg , u16 * val )
{
while ( smc911x_get_mac_csr ( dev , MII_ACC ) & MII_ACC_MII_BUSY )
@ -67,7 +67,7 @@ static int smc911x_miiphy_read(struct eth_device *dev,
return 0 ;
}
static int smc911x_mii phy_write ( struct eth_device * dev ,
static int smc911x_eth_ phy_write ( struct eth_device * dev ,
u8 phy , u8 reg , u16 val )
{
while ( smc911x_get_mac_csr ( dev , MII_ACC ) & MII_ACC_MII_BUSY )
@ -103,10 +103,10 @@ static void smc911x_phy_configure(struct eth_device *dev)
smc911x_phy_reset ( dev ) ;
smc911x_mii phy_write ( dev , 1 , MII_BMCR , BMCR_RESET ) ;
smc911x_eth_ phy_write ( dev , 1 , MII_BMCR , BMCR_RESET ) ;
mdelay ( 1 ) ;
smc911x_mii phy_write ( dev , 1 , MII_ADVERTISE , 0x01e1 ) ;
smc911x_mii phy_write ( dev , 1 , MII_BMCR , BMCR_ANENABLE |
smc911x_eth_ phy_write ( dev , 1 , MII_ADVERTISE , 0x01e1 ) ;
smc911x_eth_ phy_write ( dev , 1 , MII_BMCR , BMCR_ANENABLE |
BMCR_ANRESTART ) ;
timeout = 5000 ;
@ -115,7 +115,7 @@ static void smc911x_phy_configure(struct eth_device *dev)
if ( ( timeout - - ) = = 0 )
goto err_out ;
if ( smc911x_mii phy_read ( dev , 1 , MII_BMSR , & status ) ! = 0 )
if ( smc911x_eth_ phy_read ( dev , 1 , MII_BMSR , & status ) ! = 0 )
goto err_out ;
} while ( ! ( status & BMSR_LSTATUS ) ) ;
@ -235,6 +235,25 @@ static int smc911x_rx(struct eth_device *dev)
return 0 ;
}
# if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
/* wrapper for smc911x_eth_phy_read */
static int smc911x_miiphy_read ( char * devname , u8 phy , u8 reg , u16 * val )
{
struct eth_device * dev = eth_get_dev_by_name ( devname ) ;
if ( dev )
return smc911x_eth_phy_read ( dev , phy , reg , val ) ;
return - 1 ;
}
/* wrapper for smc911x_eth_phy_write */
static int smc911x_miiphy_write ( char * devname , u8 phy , u8 reg , u16 val )
{
struct eth_device * dev = eth_get_dev_by_name ( devname ) ;
if ( dev )
return smc911x_eth_phy_write ( dev , phy , reg , val ) ;
return - 1 ;
}
# endif
int smc911x_initialize ( u8 dev_num , int base_addr )
{
unsigned long addrl , addrh ;
@ -273,5 +292,10 @@ int smc911x_initialize(u8 dev_num, int base_addr)
sprintf ( dev - > name , " %s-%hu " , DRIVERNAME , dev_num ) ;
eth_register ( dev ) ;
# if defined(CONFIG_MII) || defined(CONFIG_CMD_MII)
miiphy_register ( dev - > name , smc911x_miiphy_read , smc911x_miiphy_write ) ;
# endif
return 1 ;
}