--- a/arch/mips/bcm63xx/sprom.c +++ b/arch/mips/bcm63xx/sprom.c @@ -8,6 +8,7 @@ */ #include +#include #include #include #include @@ -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)