summaryrefslogtreecommitdiff
path: root/drivers/net
diff options
context:
space:
mode:
authorkarl beldan <karl.beldan@gmail.com>2016-08-20 08:56:53 +0000
committerJoe Hershberger <joe.hershberger@ni.com>2016-08-22 14:21:20 -0500
commit05237f735e5f325e03db8ff153cb5266e337a2fe (patch)
treeffd65a23052d8d260f34d367b850eca2bb8ff452 /drivers/net
parentc23c7d461fc52f03f784dee9792f8547d14e731d (diff)
net: davinci_emac: Restore the internal MDIO accessors return values
The spatch series converting legacy drivers from miiphy_register to mdio_register changed the return convention of the davinci_emac internal MDIO accessors, making the internal code relying on it misbehaving: no mdiodev get registered and U-Boot crashes when using net cmds in the context of the old legacy net API. ATM davinci_emac_initialize and cpu_eth_init don't return a proper value in that case but fixing them would not avoid the crash. This change is just a follow-up to the spatch pass, the MDIO accessors of the mdiodev introduced by the spatch pass retain their proper values. Signed-off-by: Karl Beldan <karl.beldan+oss@gmail.com> Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/davinci_emac.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/net/davinci_emac.c b/drivers/net/davinci_emac.c
index 6283487708..5e7ebc8a99 100644
--- a/drivers/net/davinci_emac.c
+++ b/drivers/net/davinci_emac.c
@@ -223,10 +223,10 @@ int davinci_eth_phy_read(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t *data)
if (tmp & MDIO_USERACCESS0_ACK) {
*data = tmp & 0xffff;
- return 0;
+ return 1;
}
- return -EIO;
+ return 0;
}
/* Write to a PHY register via MDIO inteface. Blocks until operation is complete. */
@@ -247,7 +247,7 @@ int davinci_eth_phy_write(u_int8_t phy_addr, u_int8_t reg_num, u_int16_t data)
while (readl(&adap_mdio->USERACCESS0) & MDIO_USERACCESS0_GO)
;
- return 0;
+ return 1;
}
/* PHY functions for a generic PHY */
@@ -374,15 +374,14 @@ static int davinci_mii_phy_read(struct mii_dev *bus, int addr, int devad,
{
unsigned short value = 0;
int retval = davinci_eth_phy_read(addr, reg, &value);
- if (retval < 0)
- return retval;
- return value;
+
+ return retval ? value : -EIO;
}
static int davinci_mii_phy_write(struct mii_dev *bus, int addr, int devad,
int reg, u16 value)
{
- return davinci_eth_phy_write(addr, reg, value);
+ return davinci_eth_phy_write(addr, reg, value) ? 0 : 1;
}
#endif