diff options
author | Florian Fainelli <f.fainelli@gmail.com> | 2015-06-26 10:39:05 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-06-28 20:28:20 -0700 |
commit | 7b635da86821005cd131369b7a4268df8067cc6c (patch) | |
tree | 80e2c8d5e756a9d632cd4b1ca0cb6d9927376dad /drivers/net/ethernet/broadcom/genet/bcmgenet.h | |
parent | net: phy: bcm7xxx: workaround MDIO management controller initial read (diff) | |
download | linux-dev-7b635da86821005cd131369b7a4268df8067cc6c.tar.xz linux-dev-7b635da86821005cd131369b7a4268df8067cc6c.zip |
net: bcmgenet: workaround initial read failures for integrated PHYs
All BCM7xxx integrated Gigabit PHYs have an issue in their MDIO
management controller which will make the initial read or write to them
to fail and return 0xffff. This is a real issue as the typical first
thing we do is read from MII_PHYSID1 and MII_PHYSID2 from get_phy_id()
to register a driver for these PHYs.
Coupled with the workaround in drivers/net/phy/bcm7xxx.c, this
workaround for the MDIO bus controller consists in scanning the list of
PHYs to do this initial read workaround for as part of the MDIO bus
reset routine which is invoked prior to mdiobus_scan().
Once we have a proper PHY driver/device registered, all workarounds are
located there (e.g: power management suspend/resume calls).
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/genet/bcmgenet.h')
-rw-r--r-- | drivers/net/ethernet/broadcom/genet/bcmgenet.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/ethernet/broadcom/genet/bcmgenet.h index 6f2887a5e0be..6159deab8c98 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h @@ -594,6 +594,7 @@ struct bcmgenet_priv { wait_queue_head_t wq; struct phy_device *phydev; struct device_node *phy_dn; + struct device_node *mdio_dn; struct mii_bus *mii_bus; u16 gphy_rev; struct clk *clk_eee; |