Skip to content
Snippets Groups Projects
Commit 6af1d41a authored by Helmut Raiger's avatar Helmut Raiger Committed by Wolfgang Denk
Browse files

smc911x MII made available


The driver already had the MII functions, but they have not been
registered using miiphy_register().

Signed-off-by: default avatarHelmut Raiger <helmut.raiger@hale.at>
parent 155cfb5e
No related branches found
No related tags found
No related merge requests found
......@@ -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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment