aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch')
-rw-r--r--target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch292
1 files changed, 0 insertions, 292 deletions
diff --git a/target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch b/target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch
deleted file mode 100644
index 481d3d5e13..0000000000
--- a/target/linux/mvebu/patches-4.9/401-net-phy-move-phy-MMD-accessors-to-phy-core.c.patch
+++ /dev/null
@@ -1,292 +0,0 @@
-From: Russell King <rmk+kernel@armlinux.org.uk>
-Date: Wed, 4 Jan 2017 10:46:43 +0000
-Subject: [PATCH] net: phy: move phy MMD accessors to phy-core.c
-
-Move the phy_(read|write)__mmd() helpers out of line, they will become
-our main MMD accessor functions, and so will be a little more complex.
-This complexity doesn't belong in an inline function. Also move the
-_indirect variants as well to keep like functionality together.
-
-Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
----
- create mode 100644 drivers/net/phy/phy-core.c
-
---- a/drivers/net/phy/Makefile
-+++ b/drivers/net/phy/Makefile
-@@ -1,6 +1,7 @@
- # Makefile for Linux PHY drivers and MDIO bus drivers
-
--libphy-y := phy.o phy_device.o mdio_bus.o mdio_device.o
-+libphy-y := phy.o phy_device.o mdio_bus.o mdio_device.o \
-+ phy-core.o
- libphy-$(CONFIG_SWPHY) += swphy.o
-
- obj-$(CONFIG_MDIO_BOARDINFO) += mdio-boardinfo.o
---- a/drivers/net/phy/phy.c
-+++ b/drivers/net/phy/phy.c
-@@ -1216,91 +1216,6 @@ void phy_mac_interrupt(struct phy_device
- }
- EXPORT_SYMBOL(phy_mac_interrupt);
-
--static inline void mmd_phy_indirect(struct mii_bus *bus, int prtad, int devad,
-- int addr)
--{
-- /* Write the desired MMD Devad */
-- bus->write(bus, addr, MII_MMD_CTRL, devad);
--
-- /* Write the desired MMD register address */
-- bus->write(bus, addr, MII_MMD_DATA, prtad);
--
-- /* Select the Function : DATA with no post increment */
-- bus->write(bus, addr, MII_MMD_CTRL, (devad | MII_MMD_CTRL_NOINCR));
--}
--
--/**
-- * phy_read_mmd_indirect - reads data from the MMD registers
-- * @phydev: The PHY device bus
-- * @prtad: MMD Address
-- * @devad: MMD DEVAD
-- *
-- * Description: it reads data from the MMD registers (clause 22 to access to
-- * clause 45) of the specified phy address.
-- * To read these register we have:
-- * 1) Write reg 13 // DEVAD
-- * 2) Write reg 14 // MMD Address
-- * 3) Write reg 13 // MMD Data Command for MMD DEVAD
-- * 3) Read reg 14 // Read MMD data
-- */
--int phy_read_mmd_indirect(struct phy_device *phydev, int prtad, int devad)
--{
-- struct phy_driver *phydrv = phydev->drv;
-- int addr = phydev->mdio.addr;
-- int value = -1;
--
-- if (!phydrv->read_mmd_indirect) {
-- struct mii_bus *bus = phydev->mdio.bus;
--
-- mutex_lock(&bus->mdio_lock);
-- mmd_phy_indirect(bus, prtad, devad, addr);
--
-- /* Read the content of the MMD's selected register */
-- value = bus->read(bus, addr, MII_MMD_DATA);
-- mutex_unlock(&bus->mdio_lock);
-- } else {
-- value = phydrv->read_mmd_indirect(phydev, prtad, devad, addr);
-- }
-- return value;
--}
--EXPORT_SYMBOL(phy_read_mmd_indirect);
--
--/**
-- * phy_write_mmd_indirect - writes data to the MMD registers
-- * @phydev: The PHY device
-- * @prtad: MMD Address
-- * @devad: MMD DEVAD
-- * @data: data to write in the MMD register
-- *
-- * Description: Write data from the MMD registers of the specified
-- * phy address.
-- * To write these register we have:
-- * 1) Write reg 13 // DEVAD
-- * 2) Write reg 14 // MMD Address
-- * 3) Write reg 13 // MMD Data Command for MMD DEVAD
-- * 3) Write reg 14 // Write MMD data
-- */
--void phy_write_mmd_indirect(struct phy_device *phydev, int prtad,
-- int devad, u32 data)
--{
-- struct phy_driver *phydrv = phydev->drv;
-- int addr = phydev->mdio.addr;
--
-- if (!phydrv->write_mmd_indirect) {
-- struct mii_bus *bus = phydev->mdio.bus;
--
-- mutex_lock(&bus->mdio_lock);
-- mmd_phy_indirect(bus, prtad, devad, addr);
--
-- /* Write the data into MMD's selected register */
-- bus->write(bus, addr, MII_MMD_DATA, data);
-- mutex_unlock(&bus->mdio_lock);
-- } else {
-- phydrv->write_mmd_indirect(phydev, prtad, devad, addr, data);
-- }
--}
--EXPORT_SYMBOL(phy_write_mmd_indirect);
--
- /**
- * phy_init_eee - init and check the EEE feature
- * @phydev: target phy_device struct
---- /dev/null
-+++ b/drivers/net/phy/phy-core.c
-@@ -0,0 +1,135 @@
-+/*
-+ * Core PHY library, taken from phy.c
-+ *
-+ * This program is free software; you can redistribute it and/or modify it
-+ * under the terms of the GNU General Public License as published by the
-+ * Free Software Foundation; either version 2 of the License, or (at your
-+ * option) any later version.
-+ */
-+#include <linux/export.h>
-+#include <linux/phy.h>
-+
-+static inline void mmd_phy_indirect(struct mii_bus *bus, int prtad, int devad,
-+ int addr)
-+{
-+ /* Write the desired MMD Devad */
-+ bus->write(bus, addr, MII_MMD_CTRL, devad);
-+
-+ /* Write the desired MMD register address */
-+ bus->write(bus, addr, MII_MMD_DATA, prtad);
-+
-+ /* Select the Function : DATA with no post increment */
-+ bus->write(bus, addr, MII_MMD_CTRL, (devad | MII_MMD_CTRL_NOINCR));
-+}
-+
-+/**
-+ * phy_read_mmd_indirect - reads data from the MMD registers
-+ * @phydev: The PHY device bus
-+ * @prtad: MMD Address
-+ * @devad: MMD DEVAD
-+ *
-+ * Description: it reads data from the MMD registers (clause 22 to access to
-+ * clause 45) of the specified phy address.
-+ * To read these register we have:
-+ * 1) Write reg 13 // DEVAD
-+ * 2) Write reg 14 // MMD Address
-+ * 3) Write reg 13 // MMD Data Command for MMD DEVAD
-+ * 3) Read reg 14 // Read MMD data
-+ */
-+int phy_read_mmd_indirect(struct phy_device *phydev, int prtad, int devad)
-+{
-+ struct phy_driver *phydrv = phydev->drv;
-+ int addr = phydev->mdio.addr;
-+ int value = -1;
-+
-+ if (!phydrv->read_mmd_indirect) {
-+ struct mii_bus *bus = phydev->mdio.bus;
-+
-+ mutex_lock(&bus->mdio_lock);
-+ mmd_phy_indirect(bus, prtad, devad, addr);
-+
-+ /* Read the content of the MMD's selected register */
-+ value = bus->read(bus, addr, MII_MMD_DATA);
-+ mutex_unlock(&bus->mdio_lock);
-+ } else {
-+ value = phydrv->read_mmd_indirect(phydev, prtad, devad, addr);
-+ }
-+ return value;
-+}
-+EXPORT_SYMBOL(phy_read_mmd_indirect);
-+
-+/**
-+ * phy_read_mmd - Convenience function for reading a register
-+ * from an MMD on a given PHY.
-+ * @phydev: The phy_device struct
-+ * @devad: The MMD to read from
-+ * @regnum: The register on the MMD to read
-+ *
-+ * Same rules as for phy_read();
-+ */
-+int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum)
-+{
-+ if (!phydev->is_c45)
-+ return -EOPNOTSUPP;
-+
-+ return mdiobus_read(phydev->mdio.bus, phydev->mdio.addr,
-+ MII_ADDR_C45 | (devad << 16) | (regnum & 0xffff));
-+}
-+EXPORT_SYMBOL(phy_read_mmd);
-+
-+/**
-+ * phy_write_mmd_indirect - writes data to the MMD registers
-+ * @phydev: The PHY device
-+ * @prtad: MMD Address
-+ * @devad: MMD DEVAD
-+ * @data: data to write in the MMD register
-+ *
-+ * Description: Write data from the MMD registers of the specified
-+ * phy address.
-+ * To write these register we have:
-+ * 1) Write reg 13 // DEVAD
-+ * 2) Write reg 14 // MMD Address
-+ * 3) Write reg 13 // MMD Data Command for MMD DEVAD
-+ * 3) Write reg 14 // Write MMD data
-+ */
-+void phy_write_mmd_indirect(struct phy_device *phydev, int prtad,
-+ int devad, u32 data)
-+{
-+ struct phy_driver *phydrv = phydev->drv;
-+ int addr = phydev->mdio.addr;
-+
-+ if (!phydrv->write_mmd_indirect) {
-+ struct mii_bus *bus = phydev->mdio.bus;
-+
-+ mutex_lock(&bus->mdio_lock);
-+ mmd_phy_indirect(bus, prtad, devad, addr);
-+
-+ /* Write the data into MMD's selected register */
-+ bus->write(bus, addr, MII_MMD_DATA, data);
-+ mutex_unlock(&bus->mdio_lock);
-+ } else {
-+ phydrv->write_mmd_indirect(phydev, prtad, devad, addr, data);
-+ }
-+}
-+EXPORT_SYMBOL(phy_write_mmd_indirect);
-+
-+/**
-+ * phy_write_mmd - Convenience function for writing a register
-+ * on an MMD on a given PHY.
-+ * @phydev: The phy_device struct
-+ * @devad: The MMD to read from
-+ * @regnum: The register on the MMD to read
-+ * @val: value to write to @regnum
-+ *
-+ * Same rules as for phy_write();
-+ */
-+int phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val)
-+{
-+ if (!phydev->is_c45)
-+ return -EOPNOTSUPP;
-+
-+ regnum = MII_ADDR_C45 | ((devad & 0x1f) << 16) | (regnum & 0xffff);
-+
-+ return mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, regnum, val);
-+}
-+EXPORT_SYMBOL(phy_write_mmd);
---- a/include/linux/phy.h
-+++ b/include/linux/phy.h
-@@ -626,14 +626,7 @@ struct phy_fixup {
- *
- * Same rules as for phy_read();
- */
--static inline int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum)
--{
-- if (!phydev->is_c45)
-- return -EOPNOTSUPP;
--
-- return mdiobus_read(phydev->mdio.bus, phydev->mdio.addr,
-- MII_ADDR_C45 | (devad << 16) | (regnum & 0xffff));
--}
-+int phy_read_mmd(struct phy_device *phydev, int devad, u32 regnum);
-
- /**
- * phy_read_mmd_indirect - reads data from the MMD registers
-@@ -738,16 +731,7 @@ static inline bool phy_is_pseudo_fixed_l
- *
- * Same rules as for phy_write();
- */
--static inline int phy_write_mmd(struct phy_device *phydev, int devad,
-- u32 regnum, u16 val)
--{
-- if (!phydev->is_c45)
-- return -EOPNOTSUPP;
--
-- regnum = MII_ADDR_C45 | ((devad & 0x1f) << 16) | (regnum & 0xffff);
--
-- return mdiobus_write(phydev->mdio.bus, phydev->mdio.addr, regnum, val);
--}
-+int phy_write_mmd(struct phy_device *phydev, int devad, u32 regnum, u16 val);
-
- /**
- * phy_write_mmd_indirect - writes data to the MMD registers