net: phy: introduce a quirk PHY_FLAG_BROKEN_RESET
authorShaohui Xie <Shaohui.Xie@nxp.com>
Thu, 28 Jan 2016 07:55:46 +0000 (15:55 +0800)
committerJoe Hershberger <joe.hershberger@ni.com>
Thu, 28 Jan 2016 19:20:30 +0000 (13:20 -0600)
Current driver always performs a phy soft reset when connecting the phy
device, but soft reset is not always supported by a phy device, so
introduce a quirk PHY_FLAG_BROKEN_RESET to let such a phy device to skip
soft reset. This commit uses 'flags' of phy device structure to store the
quirk.

Signed-off-by: Shaohui Xie <Shaohui.Xie@nxp.com>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
drivers/net/phy/phy.c
include/phy.h

index 467efd8..17866a2 100644 (file)
@@ -743,6 +743,9 @@ int phy_reset(struct phy_device *phydev)
        int timeout = 500;
        int devad = MDIO_DEVAD_NONE;
 
+       if (phydev->flags & PHY_FLAG_BROKEN_RESET)
+               return 0;
+
 #ifdef CONFIG_PHYLIB_10G
        /* If it's 10G, we need to issue reset through one of the MMDs */
        if (is_10g_interface(phydev->interface)) {
index e030c9f..09bbe48 100644 (file)
@@ -17,6 +17,8 @@
 
 #define PHY_MAX_ADDR 32
 
+#define PHY_FLAG_BROKEN_RESET  (1 << 0) /* soft reset not supported */
+
 #define PHY_DEFAULT_FEATURES   (SUPPORTED_Autoneg | \
                                 SUPPORTED_TP | \
                                 SUPPORTED_MII)