|
@@ -30,10 +30,10 @@
|
|
#define GET_REGS(eth_dev) (GET_PRIV(eth_dev)->regs)
|
|
#define GET_REGS(eth_dev) (GET_PRIV(eth_dev)->regs)
|
|
|
|
|
|
/* ep93xx_miiphy ops forward declarations */
|
|
/* ep93xx_miiphy ops forward declarations */
|
|
-static int ep93xx_miiphy_read(const char * const dev, unsigned char const addr,
|
|
|
|
- unsigned char const reg, unsigned short * const value);
|
|
|
|
-static int ep93xx_miiphy_write(const char * const dev, unsigned char const addr,
|
|
|
|
- unsigned char const reg, unsigned short const value);
|
|
|
|
|
|
+static int ep93xx_miiphy_read(struct mii_dev *bus, int addr, int devad,
|
|
|
|
+ int reg);
|
|
|
|
+static int ep93xx_miiphy_write(struct mii_dev *bus, int addr, int devad,
|
|
|
|
+ int reg, u16 value);
|
|
|
|
|
|
#if defined(EP93XX_MAC_DEBUG)
|
|
#if defined(EP93XX_MAC_DEBUG)
|
|
/**
|
|
/**
|
|
@@ -421,7 +421,17 @@ eth_send_out:
|
|
#if defined(CONFIG_MII)
|
|
#if defined(CONFIG_MII)
|
|
int ep93xx_miiphy_initialize(bd_t * const bd)
|
|
int ep93xx_miiphy_initialize(bd_t * const bd)
|
|
{
|
|
{
|
|
- miiphy_register("ep93xx_eth0", ep93xx_miiphy_read, ep93xx_miiphy_write);
|
|
|
|
|
|
+ int retval;
|
|
|
|
+ struct mii_dev *mdiodev = mdio_alloc();
|
|
|
|
+ if (!mdiodev)
|
|
|
|
+ return -ENOMEM;
|
|
|
|
+ strncpy(mdiodev->name, "ep93xx_eth0", MDIO_NAME_LEN);
|
|
|
|
+ mdiodev->read = ep93xx_miiphy_read;
|
|
|
|
+ mdiodev->write = ep93xx_miiphy_write;
|
|
|
|
+
|
|
|
|
+ retval = mdio_register(mdiodev);
|
|
|
|
+ if (retval < 0)
|
|
|
|
+ return retval;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
@@ -542,9 +552,10 @@ eth_init_done:
|
|
/**
|
|
/**
|
|
* Read a 16-bit value from an MII register.
|
|
* Read a 16-bit value from an MII register.
|
|
*/
|
|
*/
|
|
-static int ep93xx_miiphy_read(const char * const dev, unsigned char const addr,
|
|
|
|
- unsigned char const reg, unsigned short * const value)
|
|
|
|
|
|
+static int ep93xx_miiphy_read(struct mii_dev *bus, int addr, int devad,
|
|
|
|
+ int reg)
|
|
{
|
|
{
|
|
|
|
+ unsigned short value = 0;
|
|
struct mac_regs *mac = (struct mac_regs *)MAC_BASE;
|
|
struct mac_regs *mac = (struct mac_regs *)MAC_BASE;
|
|
int ret = -1;
|
|
int ret = -1;
|
|
uint32_t self_ctl;
|
|
uint32_t self_ctl;
|
|
@@ -552,10 +563,10 @@ static int ep93xx_miiphy_read(const char * const dev, unsigned char const addr,
|
|
debug("+ep93xx_miiphy_read");
|
|
debug("+ep93xx_miiphy_read");
|
|
|
|
|
|
/* Parameter checks */
|
|
/* Parameter checks */
|
|
- BUG_ON(dev == NULL);
|
|
|
|
|
|
+ BUG_ON(bus->name == NULL);
|
|
BUG_ON(addr > MII_ADDRESS_MAX);
|
|
BUG_ON(addr > MII_ADDRESS_MAX);
|
|
BUG_ON(reg > MII_REGISTER_MAX);
|
|
BUG_ON(reg > MII_REGISTER_MAX);
|
|
- BUG_ON(value == NULL);
|
|
|
|
|
|
+ BUG_ON(&value == NULL);
|
|
|
|
|
|
/*
|
|
/*
|
|
* Save the current SelfCTL register value. Set MAC to suppress
|
|
* Save the current SelfCTL register value. Set MAC to suppress
|
|
@@ -579,7 +590,7 @@ static int ep93xx_miiphy_read(const char * const dev, unsigned char const addr,
|
|
while (readl(&mac->miists) & MIISTS_BUSY)
|
|
while (readl(&mac->miists) & MIISTS_BUSY)
|
|
; /* noop */
|
|
; /* noop */
|
|
|
|
|
|
- *value = (unsigned short)readl(&mac->miidata);
|
|
|
|
|
|
+ value = (unsigned short)readl(&mac->miidata);
|
|
|
|
|
|
/* Restore the saved SelfCTL value and return. */
|
|
/* Restore the saved SelfCTL value and return. */
|
|
writel(self_ctl, &mac->selfctl);
|
|
writel(self_ctl, &mac->selfctl);
|
|
@@ -588,14 +599,16 @@ static int ep93xx_miiphy_read(const char * const dev, unsigned char const addr,
|
|
/* Fall through */
|
|
/* Fall through */
|
|
|
|
|
|
debug("-ep93xx_miiphy_read");
|
|
debug("-ep93xx_miiphy_read");
|
|
- return ret;
|
|
|
|
|
|
+ if (ret < 0)
|
|
|
|
+ return ret;
|
|
|
|
+ return value;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* Write a 16-bit value to an MII register.
|
|
* Write a 16-bit value to an MII register.
|
|
*/
|
|
*/
|
|
-static int ep93xx_miiphy_write(const char * const dev, unsigned char const addr,
|
|
|
|
- unsigned char const reg, unsigned short const value)
|
|
|
|
|
|
+static int ep93xx_miiphy_write(struct mii_dev *bus, int addr, int devad,
|
|
|
|
+ int reg, u16 value)
|
|
{
|
|
{
|
|
struct mac_regs *mac = (struct mac_regs *)MAC_BASE;
|
|
struct mac_regs *mac = (struct mac_regs *)MAC_BASE;
|
|
int ret = -1;
|
|
int ret = -1;
|
|
@@ -604,7 +617,7 @@ static int ep93xx_miiphy_write(const char * const dev, unsigned char const addr,
|
|
debug("+ep93xx_miiphy_write");
|
|
debug("+ep93xx_miiphy_write");
|
|
|
|
|
|
/* Parameter checks */
|
|
/* Parameter checks */
|
|
- BUG_ON(dev == NULL);
|
|
|
|
|
|
+ BUG_ON(bus->name == NULL);
|
|
BUG_ON(addr > MII_ADDRESS_MAX);
|
|
BUG_ON(addr > MII_ADDRESS_MAX);
|
|
BUG_ON(reg > MII_REGISTER_MAX);
|
|
BUG_ON(reg > MII_REGISTER_MAX);
|
|
|
|
|