brcm47xx: group MIPS BCM47XX backported patches by source kernel
[openwrt/openwrt.git] / target / linux / brcm47xx / patches-3.18 / 033-MIPS-BCM47XX-Move-SPROM-fallback-code-into-sprom.c.patch
diff --git a/target/linux/brcm47xx/patches-3.18/033-MIPS-BCM47XX-Move-SPROM-fallback-code-into-sprom.c.patch b/target/linux/brcm47xx/patches-3.18/033-MIPS-BCM47XX-Move-SPROM-fallback-code-into-sprom.c.patch
deleted file mode 100644 (file)
index fe49629..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-From a59da8fb3b2a1f2df5f871464e43cd5b6ca6ceb1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
-Date: Tue, 28 Oct 2014 12:52:02 +0100
-Subject: [PATCH 157/158] MIPS: BCM47XX: Move SPROM fallback code into sprom.c
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This is some general cleanup as well as preparing sprom.c to become a
-standalone driver. We will need this for bcm53xx ARM arch support.
-
-Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
-Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
-Cc: linux-mips@linux-mips.org
-Patchwork: https://patchwork.linux-mips.org/patch/8232/
-Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
----
- arch/mips/bcm47xx/bcm47xx_private.h |  3 ++
- arch/mips/bcm47xx/setup.c           | 58 ++-----------------------------
- arch/mips/bcm47xx/sprom.c           | 68 +++++++++++++++++++++++++++++++++++++
- 3 files changed, 73 insertions(+), 56 deletions(-)
-
-diff --git a/arch/mips/bcm47xx/bcm47xx_private.h b/arch/mips/bcm47xx/bcm47xx_private.h
-index f1cc9d0..12a112d 100644
---- a/arch/mips/bcm47xx/bcm47xx_private.h
-+++ b/arch/mips/bcm47xx/bcm47xx_private.h
-@@ -6,6 +6,9 @@
- /* prom.c */
- void __init bcm47xx_prom_highmem_init(void);
-+/* sprom.c */
-+void bcm47xx_sprom_register_fallbacks(void);
-+
- /* buttons.c */
- int __init bcm47xx_buttons_register(void);
-diff --git a/arch/mips/bcm47xx/setup.c b/arch/mips/bcm47xx/setup.c
-index c00585d..444c65a 100644
---- a/arch/mips/bcm47xx/setup.c
-+++ b/arch/mips/bcm47xx/setup.c
-@@ -102,23 +102,6 @@ static void bcm47xx_machine_halt(void)
- }
- #ifdef CONFIG_BCM47XX_SSB
--static int bcm47xx_get_sprom_ssb(struct ssb_bus *bus, struct ssb_sprom *out)
--{
--      char prefix[10];
--
--      if (bus->bustype == SSB_BUSTYPE_PCI) {
--              memset(out, 0, sizeof(struct ssb_sprom));
--              snprintf(prefix, sizeof(prefix), "pci/%u/%u/",
--                       bus->host_pci->bus->number + 1,
--                       PCI_SLOT(bus->host_pci->devfn));
--              bcm47xx_fill_sprom(out, prefix, false);
--              return 0;
--      } else {
--              printk(KERN_WARNING "bcm47xx: unable to fill SPROM for given bustype.\n");
--              return -EINVAL;
--      }
--}
--
- static int bcm47xx_get_invariants(struct ssb_bus *bus,
-                                 struct ssb_init_invariants *iv)
- {
-@@ -144,11 +127,6 @@ static void __init bcm47xx_register_ssb(void)
-       char buf[100];
-       struct ssb_mipscore *mcore;
--      err = ssb_arch_register_fallback_sprom(&bcm47xx_get_sprom_ssb);
--      if (err)
--              printk(KERN_WARNING "bcm47xx: someone else already registered"
--                      " a ssb SPROM callback handler (err %d)\n", err);
--
-       err = ssb_bus_ssbbus_register(&(bcm47xx_bus.ssb), SSB_ENUM_BASE,
-                                     bcm47xx_get_invariants);
-       if (err)
-@@ -171,44 +149,10 @@ static void __init bcm47xx_register_ssb(void)
- #endif
- #ifdef CONFIG_BCM47XX_BCMA
--static int bcm47xx_get_sprom_bcma(struct bcma_bus *bus, struct ssb_sprom *out)
--{
--      char prefix[10];
--      struct bcma_device *core;
--
--      switch (bus->hosttype) {
--      case BCMA_HOSTTYPE_PCI:
--              memset(out, 0, sizeof(struct ssb_sprom));
--              snprintf(prefix, sizeof(prefix), "pci/%u/%u/",
--                       bus->host_pci->bus->number + 1,
--                       PCI_SLOT(bus->host_pci->devfn));
--              bcm47xx_fill_sprom(out, prefix, false);
--              return 0;
--      case BCMA_HOSTTYPE_SOC:
--              memset(out, 0, sizeof(struct ssb_sprom));
--              core = bcma_find_core(bus, BCMA_CORE_80211);
--              if (core) {
--                      snprintf(prefix, sizeof(prefix), "sb/%u/",
--                               core->core_index);
--                      bcm47xx_fill_sprom(out, prefix, true);
--              } else {
--                      bcm47xx_fill_sprom(out, NULL, false);
--              }
--              return 0;
--      default:
--              pr_warn("bcm47xx: unable to fill SPROM for given bustype.\n");
--              return -EINVAL;
--      }
--}
--
- static void __init bcm47xx_register_bcma(void)
- {
-       int err;
--      err = bcma_arch_register_fallback_sprom(&bcm47xx_get_sprom_bcma);
--      if (err)
--              pr_warn("bcm47xx: someone else already registered a bcma SPROM callback handler (err %d)\n", err);
--
-       err = bcma_host_soc_register(&bcm47xx_bus.bcma);
-       if (err)
-               panic("Failed to register BCMA bus (err %d)", err);
-@@ -229,6 +173,7 @@ void __init plat_mem_setup(void)
-               printk(KERN_INFO "bcm47xx: using bcma bus\n");
- #ifdef CONFIG_BCM47XX_BCMA
-               bcm47xx_bus_type = BCM47XX_BUS_TYPE_BCMA;
-+              bcm47xx_sprom_register_fallbacks();
-               bcm47xx_register_bcma();
-               bcm47xx_set_system_type(bcm47xx_bus.bcma.bus.chipinfo.id);
- #ifdef CONFIG_HIGHMEM
-@@ -239,6 +184,7 @@ void __init plat_mem_setup(void)
-               printk(KERN_INFO "bcm47xx: using ssb bus\n");
- #ifdef CONFIG_BCM47XX_SSB
-               bcm47xx_bus_type = BCM47XX_BUS_TYPE_SSB;
-+              bcm47xx_sprom_register_fallbacks();
-               bcm47xx_register_ssb();
-               bcm47xx_set_system_type(bcm47xx_bus.ssb.chip_id);
- #endif
-diff --git a/arch/mips/bcm47xx/sprom.c b/arch/mips/bcm47xx/sprom.c
-index 41226b6..e772e77 100644
---- a/arch/mips/bcm47xx/sprom.c
-+++ b/arch/mips/bcm47xx/sprom.c
-@@ -801,3 +801,71 @@ void bcm47xx_fill_bcma_boardinfo(struct bcma_boardinfo *boardinfo,
-       nvram_read_u16(prefix, NULL, "boardtype", &boardinfo->type, 0, true);
- }
- #endif
-+
-+#if defined(CONFIG_BCM47XX_SSB)
-+static int bcm47xx_get_sprom_ssb(struct ssb_bus *bus, struct ssb_sprom *out)
-+{
-+      char prefix[10];
-+
-+      if (bus->bustype == SSB_BUSTYPE_PCI) {
-+              memset(out, 0, sizeof(struct ssb_sprom));
-+              snprintf(prefix, sizeof(prefix), "pci/%u/%u/",
-+                       bus->host_pci->bus->number + 1,
-+                       PCI_SLOT(bus->host_pci->devfn));
-+              bcm47xx_fill_sprom(out, prefix, false);
-+              return 0;
-+      } else {
-+              pr_warn("bcm47xx: unable to fill SPROM for given bustype.\n");
-+              return -EINVAL;
-+      }
-+}
-+#endif
-+
-+#if defined(CONFIG_BCM47XX_BCMA)
-+static int bcm47xx_get_sprom_bcma(struct bcma_bus *bus, struct ssb_sprom *out)
-+{
-+      char prefix[10];
-+      struct bcma_device *core;
-+
-+      switch (bus->hosttype) {
-+      case BCMA_HOSTTYPE_PCI:
-+              memset(out, 0, sizeof(struct ssb_sprom));
-+              snprintf(prefix, sizeof(prefix), "pci/%u/%u/",
-+                       bus->host_pci->bus->number + 1,
-+                       PCI_SLOT(bus->host_pci->devfn));
-+              bcm47xx_fill_sprom(out, prefix, false);
-+              return 0;
-+      case BCMA_HOSTTYPE_SOC:
-+              memset(out, 0, sizeof(struct ssb_sprom));
-+              core = bcma_find_core(bus, BCMA_CORE_80211);
-+              if (core) {
-+                      snprintf(prefix, sizeof(prefix), "sb/%u/",
-+                               core->core_index);
-+                      bcm47xx_fill_sprom(out, prefix, true);
-+              } else {
-+                      bcm47xx_fill_sprom(out, NULL, false);
-+              }
-+              return 0;
-+      default:
-+              pr_warn("bcm47xx: unable to fill SPROM for given bustype.\n");
-+              return -EINVAL;
-+      }
-+}
-+#endif
-+
-+/*
-+ * On bcm47xx we need to register SPROM fallback handler very early, so we can't
-+ * use anything like platform device / driver for this.
-+ */
-+void bcm47xx_sprom_register_fallbacks(void)
-+{
-+#if defined(CONFIG_BCM47XX_SSB)
-+      if (ssb_arch_register_fallback_sprom(&bcm47xx_get_sprom_ssb))
-+              pr_warn("Failed to registered ssb SPROM handler\n");
-+#endif
-+
-+#if defined(CONFIG_BCM47XX_BCMA)
-+      if (bcma_arch_register_fallback_sprom(&bcm47xx_get_sprom_bcma))
-+              pr_warn("Failed to registered bcma SPROM handler\n");
-+#endif
-+}
--- 
-1.8.4.5
-