diff options
Diffstat (limited to 'target/linux/mvebu/patches-4.9/402-net-phy-make-phy_-read-write-_mmd-generic-MMD-access.patch')
-rw-r--r-- | target/linux/mvebu/patches-4.9/402-net-phy-make-phy_-read-write-_mmd-generic-MMD-access.patch | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/target/linux/mvebu/patches-4.9/402-net-phy-make-phy_-read-write-_mmd-generic-MMD-access.patch b/target/linux/mvebu/patches-4.9/402-net-phy-make-phy_-read-write-_mmd-generic-MMD-access.patch deleted file mode 100644 index 33d467794a..0000000000 --- a/target/linux/mvebu/patches-4.9/402-net-phy-make-phy_-read-write-_mmd-generic-MMD-access.patch +++ /dev/null @@ -1,97 +0,0 @@ -From: Russell King <rmk+kernel@armlinux.org.uk> -Date: Wed, 4 Jan 2017 19:20:21 +0000 -Subject: [PATCH] net: phy: make phy_(read|write)_mmd() generic MMD - accessors - -Make phy_(read|write)_mmd() generic 802.3 clause 45 register accessors -for both Clause 22 and Clause 45 PHYs, using either the direct register -reading for Clause 45, or the indirect method for Clause 22 PHYs. -Allow this behaviour to be overriden by PHY drivers where necessary. - -Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> ---- - ---- a/drivers/net/phy/phy-core.c -+++ b/drivers/net/phy/phy-core.c -@@ -69,11 +69,18 @@ EXPORT_SYMBOL(phy_read_mmd_indirect); - */ - int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum) - { -- if (!phydev->is_c45) -- return -EOPNOTSUPP; -+ if (regnum > (u16)~0 || devad > 32) -+ return -EINVAL; - -- return mdiobus_read(phydev->mdio.bus, phydev->mdio.addr, -- MII_ADDR_C45 | (devad << 16) | (regnum & 0xffff)); -+ if (phydev->drv->read_mmd) -+ return phydev->drv->read_mmd(phydev, devad, regnum); -+ -+ if (phydev->is_c45) { -+ u32 addr = MII_ADDR_C45 | (devad << 16) | (regnum & 0xffff); -+ return mdiobus_read(phydev->mdio.bus, phydev->mdio.addr, addr); -+ } -+ -+ return phy_read_mmd_indirect(phydev, regnum, devad); - } - EXPORT_SYMBOL(phy_read_mmd); - -@@ -125,11 +132,21 @@ EXPORT_SYMBOL(phy_write_mmd_indirect); - */ - int phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val) - { -- if (!phydev->is_c45) -- return -EOPNOTSUPP; -+ if (regnum > (u16)~0 || devad > 32) -+ return -EINVAL; -+ -+ if (phydev->drv->read_mmd) -+ return phydev->drv->write_mmd(phydev, devad, regnum, val); -+ -+ if (phydev->is_c45) { -+ u32 addr = MII_ADDR_C45 | (devad << 16) | (regnum & 0xffff); -+ -+ return mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, -+ addr, val); -+ } - -- regnum = MII_ADDR_C45 | ((devad & 0x1f) << 16) | (regnum & 0xffff); -+ phy_write_mmd_indirect(phydev, regnum, devad, val); - -- return mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, regnum, val); -+ return 0; - } - EXPORT_SYMBOL(phy_write_mmd); ---- a/include/linux/phy.h -+++ b/include/linux/phy.h -@@ -569,6 +569,30 @@ struct phy_driver { - */ - void (*link_change_notify)(struct phy_device *dev); - -+ /* -+ * Phy specific driver override for reading a MMD register. -+ * This function is optional for PHY specific drivers. When -+ * not provided, the default MMD read function will be used -+ * by phy_read_mmd(), which will use either a direct read for -+ * Clause 45 PHYs or an indirect read for Clause 22 PHYs. -+ * devnum is the MMD device number within the PHY device, -+ * regnum is the register within the selected MMD device. -+ */ -+ int (*read_mmd)(struct phy_device *dev, int devnum, u16 regnum); -+ -+ /* -+ * Phy specific driver override for writing a MMD register. -+ * This function is optional for PHY specific drivers. When -+ * not provided, the default MMD write function will be used -+ * by phy_write_mmd(), which will use either a direct write for -+ * Clause 45 PHYs, or an indirect write for Clause 22 PHYs. -+ * devnum is the MMD device number within the PHY device, -+ * regnum is the register within the selected MMD device. -+ * val is the value to be written. -+ */ -+ int (*write_mmd)(struct phy_device *dev, int devnum, u16 regnum, -+ u16 val); -+ - /* A function provided by a phy specific driver to override the - * the PHY driver framework support for reading a MMD register - * from the PHY. If not supported, return -1. This function is |