smc911x MII made available
The driver already had the MII functions, but they have not been registered using miiphy_register(). Signed-off-by: Helmut Raiger <helmut.raiger@hale.at>
This commit is contained in:
parent
155cfb5ef1
commit
6af1d41a46
@ -50,7 +50,7 @@ static void smc911x_handle_mac_address(struct eth_device *dev)
|
||||
printf(DRIVERNAME ": MAC %pM\n", m);
|
||||
}
|
||||
|
||||
static int smc911x_miiphy_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_miiphy_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_miiphy_write(dev, 1, MII_BMCR, BMCR_RESET);
|
||||
smc911x_eth_phy_write(dev, 1, MII_BMCR, BMCR_RESET);
|
||||
mdelay(1);
|
||||
smc911x_miiphy_write(dev, 1, MII_ADVERTISE, 0x01e1);
|
||||
smc911x_miiphy_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_miiphy_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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user