bcm27xx: remove linux 5.10 compatibility
[openwrt/staging/chunkeey.git] / target / linux / bcm27xx / patches-5.10 / 950-0135-soc-bcm-bcm2835-pm-Add-support-for-2711.patch
diff --git a/target/linux/bcm27xx/patches-5.10/950-0135-soc-bcm-bcm2835-pm-Add-support-for-2711.patch b/target/linux/bcm27xx/patches-5.10/950-0135-soc-bcm-bcm2835-pm-Add-support-for-2711.patch
deleted file mode 100644 (file)
index 4624dd2..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-From ca09b9e400f42e5be7d0646237f6ada07ee6c01c Mon Sep 17 00:00:00 2001
-From: Eric Anholt <eric@anholt.net>
-Date: Fri, 11 Jan 2019 17:31:07 -0800
-Subject: [PATCH] soc: bcm: bcm2835-pm: Add support for 2711.
-
-Without the actual power management part any more, there's a lot less
-to set up for V3D.  We just need to clear the RSTN field for the power
-domain, and expose the reset controller for toggling it again.
-
-This is definitely incomplete -- the old ISP and H264 is in the old
-bridge, but since we have no consumers of it I've just done the
-minimum to get V3D working.
-
-Signed-off-by: Eric Anholt <eric@anholt.net>
----
- drivers/mfd/bcm2835-pm.c        | 11 +++++++++++
- drivers/soc/bcm/bcm2835-power.c | 22 ++++++++++++++++++++++
- include/linux/mfd/bcm2835-pm.h  |  1 +
- 3 files changed, 34 insertions(+)
-
---- a/drivers/mfd/bcm2835-pm.c
-+++ b/drivers/mfd/bcm2835-pm.c
-@@ -50,6 +50,17 @@ static int bcm2835_pm_probe(struct platf
-       if (ret)
-               return ret;
-+      /* Map the ARGON ASB regs if present. */
-+      res = platform_get_resource(pdev, IORESOURCE_MEM, 2);
-+      if (res) {
-+              pm->arg_asb = devm_ioremap_resource(dev, res);
-+              if (IS_ERR(pm->arg_asb)) {
-+                      dev_err(dev, "Failed to map ARGON ASB: %ld\n",
-+                              PTR_ERR(pm->arg_asb));
-+                      return PTR_ERR(pm->arg_asb);
-+              }
-+      }
-+
-       /* We'll use the presence of the AXI ASB regs in the
-        * bcm2835-pm binding as the key for whether we can reference
-        * the full PM register range and support power domains.
---- a/drivers/soc/bcm/bcm2835-power.c
-+++ b/drivers/soc/bcm/bcm2835-power.c
-@@ -143,6 +143,8 @@ struct bcm2835_power {
-       /* AXI Async bridge registers. */
-       void __iomem            *asb;
-+      bool is_2711;
-+
-       struct genpd_onecell_data pd_xlate;
-       struct bcm2835_power_domain domains[BCM2835_POWER_DOMAIN_COUNT];
-       struct reset_controller_dev reset;
-@@ -192,6 +194,10 @@ static int bcm2835_power_power_off(struc
- {
-       struct bcm2835_power *power = pd->power;
-+      /* 2711 has no power domains above the reset controller. */
-+      if (power->is_2711)
-+              return 0;
-+
-       /* Enable functional isolation */
-       PM_WRITE(pm_reg, PM_READ(pm_reg) & ~PM_ISFUNC);
-@@ -213,6 +219,10 @@ static int bcm2835_power_power_on(struct
-       int inrush;
-       bool powok;
-+      /* 2711 has no power domains above the reset controller. */
-+      if (power->is_2711)
-+              return 0;
-+
-       /* If it was already powered on by the fw, leave it that way. */
-       if (PM_READ(pm_reg) & PM_POWUP)
-               return 0;
-@@ -627,6 +637,18 @@ static int bcm2835_power_probe(struct pl
-       power->base = pm->base;
-       power->asb = pm->asb;
-+      /* 2711 hack: the new ARGON ASB took over V3D, which is our
-+       * only consumer of this driver so far.  The old ASB seems to
-+       * still be present with ISP and H264 bits but no V3D, but I
-+       * don't know if that's real or not.  The V3D is in the same
-+       * place in the new ASB as the old one, so just poke the new
-+       * one for now.
-+       */
-+      if (pm->arg_asb) {
-+              power->asb = pm->arg_asb;
-+              power->is_2711 = true;
-+      }
-+
-       id = ASB_READ(ASB_AXI_BRDG_ID);
-       if (id != 0x62726467 /* "BRDG" */) {
-               dev_err(dev, "ASB register ID returned 0x%08x\n", id);
---- a/include/linux/mfd/bcm2835-pm.h
-+++ b/include/linux/mfd/bcm2835-pm.h
-@@ -9,6 +9,7 @@ struct bcm2835_pm {
-       struct device *dev;
-       void __iomem *base;
-       void __iomem *asb;
-+      void __iomem *arg_asb;
- };
- #endif /* BCM2835_MFD_PM_H */