brcm63xx: add linux 4.4 support
[openwrt.git] / target / linux / brcm63xx / patches-4.4 / 801-ssb_export_fallback_sprom.patch
diff --git a/target/linux/brcm63xx/patches-4.4/801-ssb_export_fallback_sprom.patch b/target/linux/brcm63xx/patches-4.4/801-ssb_export_fallback_sprom.patch
new file mode 100644 (file)
index 0000000..11a8353
--- /dev/null
@@ -0,0 +1,31 @@
+--- a/arch/mips/bcm63xx/sprom.c
++++ b/arch/mips/bcm63xx/sprom.c
+@@ -8,6 +8,7 @@
+  */
+ #include <linux/init.h>
++#include <linux/export.h>
+ #include <linux/kernel.h>
+ #include <linux/string.h>
+ #include <linux/platform_device.h>
+@@ -387,7 +388,19 @@ struct fallback_sprom_match {
+       struct ssb_sprom sprom;
+ };
+-static struct fallback_sprom_match fallback_sprom;
++struct fallback_sprom_match fallback_sprom;
++
++int bcm63xx_get_fallback_sprom(uint pci_bus, uint pci_slot, struct ssb_sprom *out)
++{
++      if (pci_bus != fallback_sprom.pci_bus ||
++          pci_slot != fallback_sprom.pci_dev)
++              pr_warn("fallback_sprom: pci bus/device num mismatch: expected %i/%i, but got %i/%i\n",
++                      fallback_sprom.pci_bus, fallback_sprom.pci_dev,
++                      pci_bus, pci_slot);
++      memcpy(out, &fallback_sprom.sprom, sizeof(struct ssb_sprom));
++      return 0;
++}
++EXPORT_SYMBOL(bcm63xx_get_fallback_sprom);
+ #if defined(CONFIG_SSB_PCIHOST)
+ int bcm63xx_get_fallback_ssb_sprom(struct ssb_bus *bus, struct ssb_sprom *out)