mvebu: remove linux 4.4 support
[openwrt/staging/lynxis/omap.git] / target / linux / mvebu / patches-4.4 / 123-phy-generate-swphy-registers-on-the-fly.patch
diff --git a/target/linux/mvebu/patches-4.4/123-phy-generate-swphy-registers-on-the-fly.patch b/target/linux/mvebu/patches-4.4/123-phy-generate-swphy-registers-on-the-fly.patch
deleted file mode 100644 (file)
index 218b902..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-From e0f33a88243329da1aa5a90fe10ab25c9fb0a091 Mon Sep 17 00:00:00 2001
-From: Russell King <rmk+kernel@arm.linux.org.uk>
-Date: Sun, 20 Sep 2015 11:28:39 +0100
-Subject: [PATCH 712/744] phy: generate swphy registers on the fly
-
-Generate software phy registers as and when requested, rather than
-duplicating the state in fixed_phy.  This allows us to eliminate
-the duplicate storage of of the same data, which is only different
-in format.
-
-As fixed_phy_update_regs() no longer updates register state, rename
-it to fixed_phy_update().
-
-Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
-Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
----
- drivers/net/phy/fixed_phy.c | 31 +++++-------------------------
- drivers/net/phy/swphy.c     | 47 ++++++++++++++++++++++++++++++++-------------
- drivers/net/phy/swphy.h     |  2 +-
- 3 files changed, 40 insertions(+), 40 deletions(-)
-
---- a/drivers/net/phy/fixed_phy.c
-+++ b/drivers/net/phy/fixed_phy.c
-@@ -26,8 +26,6 @@
- #include "swphy.h"
--#define MII_REGS_NUM 29
--
- struct fixed_mdio_bus {
-       int irqs[PHY_MAX_ADDR];
-       struct mii_bus *mii_bus;
-@@ -36,7 +34,6 @@ struct fixed_mdio_bus {
- struct fixed_phy {
-       int addr;
--      u16 regs[MII_REGS_NUM];
-       struct phy_device *phydev;
-       struct fixed_phy_status status;
-       int (*link_update)(struct net_device *, struct fixed_phy_status *);
-@@ -49,12 +46,10 @@ static struct fixed_mdio_bus platform_fm
-       .phys = LIST_HEAD_INIT(platform_fmb.phys),
- };
--static void fixed_phy_update_regs(struct fixed_phy *fp)
-+static void fixed_phy_update(struct fixed_phy *fp)
- {
-       if (gpio_is_valid(fp->link_gpio))
-               fp->status.link = !!gpio_get_value_cansleep(fp->link_gpio);
--
--      swphy_update_regs(fp->regs, &fp->status);
- }
- static int fixed_mdio_read(struct mii_bus *bus, int phy_addr, int reg_num)
-@@ -62,29 +57,15 @@ static int fixed_mdio_read(struct mii_bu
-       struct fixed_mdio_bus *fmb = bus->priv;
-       struct fixed_phy *fp;
--      if (reg_num >= MII_REGS_NUM)
--              return -1;
--
--      /* We do not support emulating Clause 45 over Clause 22 register reads
--       * return an error instead of bogus data.
--       */
--      switch (reg_num) {
--      case MII_MMD_CTRL:
--      case MII_MMD_DATA:
--              return -1;
--      default:
--              break;
--      }
--
-       list_for_each_entry(fp, &fmb->phys, node) {
-               if (fp->addr == phy_addr) {
-                       /* Issue callback if user registered it. */
-                       if (fp->link_update) {
-                               fp->link_update(fp->phydev->attached_dev,
-                                               &fp->status);
--                              fixed_phy_update_regs(fp);
-+                              fixed_phy_update(fp);
-                       }
--                      return fp->regs[reg_num];
-+                      return swphy_read_reg(reg_num, &fp->status);
-               }
-       }
-@@ -144,7 +125,7 @@ int fixed_phy_update_state(struct phy_de
-                       _UPD(pause);
-                       _UPD(asym_pause);
- #undef _UPD
--                      fixed_phy_update_regs(fp);
-+                      fixed_phy_update(fp);
-                       return 0;
-               }
-       }
-@@ -169,8 +150,6 @@ int fixed_phy_add(unsigned int irq, int
-       if (!fp)
-               return -ENOMEM;
--      memset(fp->regs, 0xFF,  sizeof(fp->regs[0]) * MII_REGS_NUM);
--
-       fmb->irqs[phy_addr] = irq;
-       fp->addr = phy_addr;
-@@ -184,7 +163,7 @@ int fixed_phy_add(unsigned int irq, int
-                       goto err_regs;
-       }
--      fixed_phy_update_regs(fp);
-+      fixed_phy_update(fp);
-       list_add_tail(&fp->node, &fmb->phys);
---- a/drivers/net/phy/swphy.c
-+++ b/drivers/net/phy/swphy.c
-@@ -20,6 +20,8 @@
- #include "swphy.h"
-+#define MII_REGS_NUM 29
-+
- struct swmii_regs {
-       u16 bmcr;
-       u16 bmsr;
-@@ -110,14 +112,13 @@ int swphy_validate_state(const struct fi
- EXPORT_SYMBOL_GPL(swphy_validate_state);
- /**
-- * swphy_update_regs - update MII register array with fixed phy state
-- * @regs: array of 32 registers to update
-+ * swphy_read_reg - return a MII register from the fixed phy state
-+ * @reg: MII register
-  * @state: fixed phy status
-  *
-- * Update the array of MII registers with the fixed phy link, speed,
-- * duplex and pause mode settings.
-+ * Return the MII @reg register generated from the fixed phy state @state.
-  */
--void swphy_update_regs(u16 *regs, const struct fixed_phy_status *state)
-+int swphy_read_reg(int reg, const struct fixed_phy_status *state)
- {
-       int speed_index, duplex_index;
-       u16 bmsr = BMSR_ANEGCAPABLE;
-@@ -125,9 +126,12 @@ void swphy_update_regs(u16 *regs, const
-       u16 lpagb = 0;
-       u16 lpa = 0;
-+      if (reg > MII_REGS_NUM)
-+              return -1;
-+
-       speed_index = swphy_decode_speed(state->speed);
-       if (WARN_ON(speed_index < 0))
--              return;
-+              return 0;
-       duplex_index = state->duplex ? SWMII_DUPLEX_FULL : SWMII_DUPLEX_HALF;
-@@ -147,12 +151,29 @@ void swphy_update_regs(u16 *regs, const
-                       lpa |= LPA_PAUSE_ASYM;
-       }
--      regs[MII_PHYSID1] = 0;
--      regs[MII_PHYSID2] = 0;
-+      switch (reg) {
-+      case MII_BMCR:
-+              return bmcr;
-+      case MII_BMSR:
-+              return bmsr;
-+      case MII_PHYSID1:
-+      case MII_PHYSID2:
-+              return 0;
-+      case MII_LPA:
-+              return lpa;
-+      case MII_STAT1000:
-+              return lpagb;
-+
-+      /*
-+       * We do not support emulating Clause 45 over Clause 22 register
-+       * reads.  Return an error instead of bogus data.
-+       */
-+      case MII_MMD_CTRL:
-+      case MII_MMD_DATA:
-+              return -1;
--      regs[MII_BMSR] = bmsr;
--      regs[MII_BMCR] = bmcr;
--      regs[MII_LPA] = lpa;
--      regs[MII_STAT1000] = lpagb;
-+      default:
-+              return 0xffff;
-+      }
- }
--EXPORT_SYMBOL_GPL(swphy_update_regs);
-+EXPORT_SYMBOL_GPL(swphy_read_reg);
---- a/drivers/net/phy/swphy.h
-+++ b/drivers/net/phy/swphy.h
-@@ -4,6 +4,6 @@
- struct fixed_phy_status;
- int swphy_validate_state(const struct fixed_phy_status *state);
--void swphy_update_regs(u16 *regs, const struct fixed_phy_status *state);
-+int swphy_read_reg(int reg, const struct fixed_phy_status *state);
- #endif