net: davinci_emac: Restore the internal MDIO accessors return values
authorkarl beldan <karl.beldan@gmail.com>
Sat, 20 Aug 2016 08:56:53 +0000 (08:56 +0000)
committerJoe Hershberger <joe.hershberger@ni.com>
Mon, 22 Aug 2016 19:21:20 +0000 (14:21 -0500)
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>
drivers/net/davinci_emac.c

index 62834877082214b38360ee39111656187511e4a7..5e7ebc8a99f3cb7b458b6e973947759cf47a4a61 100644 (file)
@@ -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