aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/phy
diff options
context:
space:
mode:
authorKevin Hao <haokexin@gmail.com>2018-03-20 09:44:52 +0800
committerDavid S. Miller <davem@davemloft.net>2018-03-22 11:41:07 -0400
commit5df7af85ecd88e8b5f1f31d6456c3cf38a8bbdda (patch)
treec9d7e9ff21610ab5735d9f4641dc0c870cd3d6e0 /drivers/net/phy
parentMerge tag 'batadv-net-for-davem-20180319' of git://git.open-mesh.org/linux-merge (diff)
downloadlinux-dev-5df7af85ecd88e8b5f1f31d6456c3cf38a8bbdda.tar.xz
linux-dev-5df7af85ecd88e8b5f1f31d6456c3cf38a8bbdda.zip
net: phy: Add general dummy stubs for MMD register access
For some phy devices, even though they don't support the MMD extended register access, it does have some side effect if we are trying to read/write the MMD registers via indirect method. So introduce general dummy stubs for MMD register access which these devices can use to avoid such side effect. Fixes: b6b5e8a69118 ("gianfar: Disable EEE autoneg by default") Signed-off-by: Kevin Hao <haokexin@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy')
-rw-r--r--drivers/net/phy/phy_device.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index fe16f5894092..74664a6c0cdc 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1673,6 +1673,23 @@ int genphy_config_init(struct phy_device *phydev)
}
EXPORT_SYMBOL(genphy_config_init);
+/* This is used for the phy device which doesn't support the MMD extended
+ * register access, but it does have side effect when we are trying to access
+ * the MMD register via indirect method.
+ */
+int genphy_read_mmd_unsupported(struct phy_device *phdev, int devad, u16 regnum)
+{
+ return -EOPNOTSUPP;
+}
+EXPORT_SYMBOL(genphy_read_mmd_unsupported);
+
+int genphy_write_mmd_unsupported(struct phy_device *phdev, int devnum,
+ u16 regnum, u16 val)
+{
+ return -EOPNOTSUPP;
+}
+EXPORT_SYMBOL(genphy_write_mmd_unsupported);
+
int genphy_suspend(struct phy_device *phydev)
{
return phy_set_bits(phydev, MII_BMCR, BMCR_PDOWN);