Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: phy: xgmiitorgmii: Use correct mdio bus

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>

authored by

Brandon Maier and committed by
David S. Miller
cf31ea71 ab4e6ee5

+6 -4
+6 -4
drivers/net/phy/xilinx_gmii2rgmii.c
··· 33 33 struct phy_device *phy_dev; 34 34 struct phy_driver *phy_drv; 35 35 struct phy_driver conv_phy_drv; 36 - int addr; 36 + struct mdio_device *mdio; 37 37 }; 38 38 39 39 static int xgmiitorgmii_read_status(struct phy_device *phydev) 40 40 { 41 41 struct gmii2rgmii *priv = phydev->priv; 42 + struct mii_bus *bus = priv->mdio->bus; 43 + int addr = priv->mdio->addr; 42 44 u16 val = 0; 43 45 44 46 priv->phy_drv->read_status(phydev); 45 47 46 - val = mdiobus_read(phydev->mdio.bus, priv->addr, XILINX_GMII2RGMII_REG); 48 + val = mdiobus_read(bus, addr, XILINX_GMII2RGMII_REG); 47 49 val &= ~XILINX_GMII2RGMII_SPEED_MASK; 48 50 49 51 if (phydev->speed == SPEED_1000) ··· 55 53 else 56 54 val |= BMCR_SPEED10; 57 55 58 - mdiobus_write(phydev->mdio.bus, priv->addr, XILINX_GMII2RGMII_REG, val); 56 + mdiobus_write(bus, addr, XILINX_GMII2RGMII_REG, val); 59 57 60 58 return 0; 61 59 } ··· 88 86 return -EPROBE_DEFER; 89 87 } 90 88 91 - priv->addr = mdiodev->addr; 89 + priv->mdio = mdiodev; 92 90 priv->phy_drv = priv->phy_dev->drv; 93 91 memcpy(&priv->conv_phy_drv, priv->phy_dev->drv, 94 92 sizeof(struct phy_driver));