]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/commitdiff
net: phy: xgmiitorgmii: Use correct mdio bus
authorBrandon Maier <brandon.maier@rockwellcollins.com>
Tue, 26 Jun 2018 17:50:49 +0000 (12:50 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 28 Jun 2018 07:12:06 +0000 (16:12 +0900)
The xgmiitorgmii is using the mii_bus of the device it's attached to,
instead of the bus it was given during probe.

Signed-off-by: Brandon Maier <brandon.maier@rockwellcollins.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/xilinx_gmii2rgmii.c

index 04c8bec1c4c15dabf78717d0161aa210a828f6c0..d6f8b64cddbe43ed58d9133b452df523ca16ac5e 100644 (file)
@@ -33,17 +33,19 @@ struct gmii2rgmii {
        struct phy_device *phy_dev;
        struct phy_driver *phy_drv;
        struct phy_driver conv_phy_drv;
-       int addr;
+       struct mdio_device *mdio;
 };
 
 static int xgmiitorgmii_read_status(struct phy_device *phydev)
 {
        struct gmii2rgmii *priv = phydev->priv;
+       struct mii_bus *bus = priv->mdio->bus;
+       int addr = priv->mdio->addr;
        u16 val = 0;
 
        priv->phy_drv->read_status(phydev);
 
-       val = mdiobus_read(phydev->mdio.bus, priv->addr, XILINX_GMII2RGMII_REG);
+       val = mdiobus_read(bus, addr, XILINX_GMII2RGMII_REG);
        val &= ~XILINX_GMII2RGMII_SPEED_MASK;
 
        if (phydev->speed == SPEED_1000)
@@ -53,7 +55,7 @@ static int xgmiitorgmii_read_status(struct phy_device *phydev)
        else
                val |= BMCR_SPEED10;
 
-       mdiobus_write(phydev->mdio.bus, priv->addr, XILINX_GMII2RGMII_REG, val);
+       mdiobus_write(bus, addr, XILINX_GMII2RGMII_REG, val);
 
        return 0;
 }
@@ -86,7 +88,7 @@ static int xgmiitorgmii_probe(struct mdio_device *mdiodev)
                return -EPROBE_DEFER;
        }
 
-       priv->addr = mdiodev->addr;
+       priv->mdio = mdiodev;
        priv->phy_drv = priv->phy_dev->drv;
        memcpy(&priv->conv_phy_drv, priv->phy_dev->drv,
               sizeof(struct phy_driver));