diff options
author | hauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-05-05 14:05:21 +0000 |
---|---|---|
committer | hauke <hauke@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2011-05-05 14:05:21 +0000 |
commit | a9215205081ddf159ae656d082f92abee540338b (patch) | |
tree | c448fe35965da34ed489819b78ac541fdbdf4710 /target/linux/brcm47xx | |
parent | 6a2f5043e3f6f8aa0c9bfd8248f9fc31f315128b (diff) |
brcm47xx: when detecting a ssb pci device without an own sprom write the sprom data from the platform device to the correct pointer.
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26829 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/brcm47xx')
4 files changed, 26 insertions, 24 deletions
diff --git a/target/linux/brcm47xx/patches-2.6.37/031-ssb-add-callback-for-sprom.patch b/target/linux/brcm47xx/patches-2.6.37/031-ssb-add-callback-for-sprom.patch index 1bb2f0fc01..9dac61c6b3 100644 --- a/target/linux/brcm47xx/patches-2.6.37/031-ssb-add-callback-for-sprom.patch +++ b/target/linux/brcm47xx/patches-2.6.37/031-ssb-add-callback-for-sprom.patch @@ -5,10 +5,10 @@ .boardflags_hi = 0x0000, }; + -+int bcm63xx_get_fallback_sprom(struct ssb_bus *bus) ++int bcm63xx_get_fallback_sprom(struct ssb_bus *bus, struct ssb_sprom *out) +{ + if (bus->bustype == SSB_BUSTYPE_PCI) { -+ memcpy(&bus->sprom, &bcm63xx_sprom, sizeof(struct ssb_sprom)); ++ memcpy(out, &bcm63xx_sprom, sizeof(struct ssb_sprom)); + return 0; + } else { + printk(KERN_ERR PFX "unable to fill SPROM for given bustype.\n"); @@ -50,7 +50,7 @@ - memcpy(sprom, fallback, sizeof(*sprom)); + * Now we ask the arch code if there is some sprom + * avaliable for this device in some other storage */ -+ err = ssb_fill_sprom_with_fallback(bus); ++ err = ssb_fill_sprom_with_fallback(bus, sprom); + if (err) { + ssb_printk(KERN_WARNING PFX "WARNING: Using" + " fallback SPROM failed (err %d)\n", @@ -66,7 +66,7 @@ -static const struct ssb_sprom *fallback_sprom; -+static int(*get_fallback_sprom)(struct ssb_bus *dev); ++static int(*get_fallback_sprom)(struct ssb_bus *dev, struct ssb_sprom *out); static int sprom2hex(const u16 *sprom, char *buf, size_t buf_len, @@ -95,7 +95,7 @@ * This function is available for architecture code, only. So it is not exported. */ -int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom) -+int ssb_arch_register_fallback_sprom(int (*sprom_callback)(struct ssb_bus *bus)) ++int ssb_arch_register_fallback_sprom(int (*sprom_callback)(struct ssb_bus *bus, struct ssb_sprom *out)) { - if (fallback_sprom) + if (get_fallback_sprom) @@ -107,13 +107,13 @@ } -const struct ssb_sprom *ssb_get_fallback_sprom(void) -+int ssb_fill_sprom_with_fallback(struct ssb_bus *bus) ++int ssb_fill_sprom_with_fallback(struct ssb_bus *bus, struct ssb_sprom *out) { - return fallback_sprom; + if (!get_fallback_sprom) + return -ENOENT; + -+ return get_fallback_sprom(bus); ++ return get_fallback_sprom(bus, out); } /* http://bcm-v4.sipsolutions.net/802.11/IsSpromAvailable */ @@ -124,19 +124,20 @@ int (*sprom_check_crc)(const u16 *sprom, size_t size), int (*sprom_write)(struct ssb_bus *bus, const u16 *sprom)); -extern const struct ssb_sprom *ssb_get_fallback_sprom(void); -+extern int ssb_fill_sprom_with_fallback(struct ssb_bus *bus); ++extern int ssb_fill_sprom_with_fallback(struct ssb_bus *bus, struct ssb_sprom *out); /* core.c */ --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h -@@ -404,7 +404,8 @@ extern bool ssb_is_sprom_available(struc +@@ -404,7 +404,9 @@ extern bool ssb_is_sprom_available(struc /* Set a fallback SPROM. * See kdoc at the function definition for complete documentation. */ -extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom); +extern int ssb_arch_register_fallback_sprom( -+ int (*sprom_callback)(struct ssb_bus *bus)); ++ int (*sprom_callback)(struct ssb_bus *bus, ++ struct ssb_sprom *out)); /* Suspend a SSB bus. * Call this from the parent bus suspend routine. */ diff --git a/target/linux/brcm47xx/patches-2.6.37/033-bcm47xx-register-fallback-callback.patch b/target/linux/brcm47xx/patches-2.6.37/033-bcm47xx-register-fallback-callback.patch index f63deacddf..4e88cf644d 100644 --- a/target/linux/brcm47xx/patches-2.6.37/033-bcm47xx-register-fallback-callback.patch +++ b/target/linux/brcm47xx/patches-2.6.37/033-bcm47xx-register-fallback-callback.patch @@ -15,7 +15,7 @@ } } -+int bcm47xx_get_sprom(struct ssb_bus *bus) ++int bcm47xx_get_sprom(struct ssb_bus *bus, struct ssb_sprom *out) +{ + char prefix[10]; + @@ -23,7 +23,7 @@ + snprintf(prefix, sizeof(prefix), "pci/%x/%x/", + bus->host_pci->bus->number + 1, + PCI_SLOT(bus->host_pci->devfn)); -+ bcm47xx_fill_sprom(&bus->sprom, prefix); ++ bcm47xx_fill_sprom(out, prefix); + return 0; + } else { + printk(KERN_WARNING "bcm47xx: unable to fill SPROM for given bustype.\n"); diff --git a/target/linux/brcm47xx/patches-2.6.38/031-ssb-add-callback-for-sprom.patch b/target/linux/brcm47xx/patches-2.6.38/031-ssb-add-callback-for-sprom.patch index 1bb2f0fc01..9dac61c6b3 100644 --- a/target/linux/brcm47xx/patches-2.6.38/031-ssb-add-callback-for-sprom.patch +++ b/target/linux/brcm47xx/patches-2.6.38/031-ssb-add-callback-for-sprom.patch @@ -5,10 +5,10 @@ .boardflags_hi = 0x0000, }; + -+int bcm63xx_get_fallback_sprom(struct ssb_bus *bus) ++int bcm63xx_get_fallback_sprom(struct ssb_bus *bus, struct ssb_sprom *out) +{ + if (bus->bustype == SSB_BUSTYPE_PCI) { -+ memcpy(&bus->sprom, &bcm63xx_sprom, sizeof(struct ssb_sprom)); ++ memcpy(out, &bcm63xx_sprom, sizeof(struct ssb_sprom)); + return 0; + } else { + printk(KERN_ERR PFX "unable to fill SPROM for given bustype.\n"); @@ -50,7 +50,7 @@ - memcpy(sprom, fallback, sizeof(*sprom)); + * Now we ask the arch code if there is some sprom + * avaliable for this device in some other storage */ -+ err = ssb_fill_sprom_with_fallback(bus); ++ err = ssb_fill_sprom_with_fallback(bus, sprom); + if (err) { + ssb_printk(KERN_WARNING PFX "WARNING: Using" + " fallback SPROM failed (err %d)\n", @@ -66,7 +66,7 @@ -static const struct ssb_sprom *fallback_sprom; -+static int(*get_fallback_sprom)(struct ssb_bus *dev); ++static int(*get_fallback_sprom)(struct ssb_bus *dev, struct ssb_sprom *out); static int sprom2hex(const u16 *sprom, char *buf, size_t buf_len, @@ -95,7 +95,7 @@ * This function is available for architecture code, only. So it is not exported. */ -int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom) -+int ssb_arch_register_fallback_sprom(int (*sprom_callback)(struct ssb_bus *bus)) ++int ssb_arch_register_fallback_sprom(int (*sprom_callback)(struct ssb_bus *bus, struct ssb_sprom *out)) { - if (fallback_sprom) + if (get_fallback_sprom) @@ -107,13 +107,13 @@ } -const struct ssb_sprom *ssb_get_fallback_sprom(void) -+int ssb_fill_sprom_with_fallback(struct ssb_bus *bus) ++int ssb_fill_sprom_with_fallback(struct ssb_bus *bus, struct ssb_sprom *out) { - return fallback_sprom; + if (!get_fallback_sprom) + return -ENOENT; + -+ return get_fallback_sprom(bus); ++ return get_fallback_sprom(bus, out); } /* http://bcm-v4.sipsolutions.net/802.11/IsSpromAvailable */ @@ -124,19 +124,20 @@ int (*sprom_check_crc)(const u16 *sprom, size_t size), int (*sprom_write)(struct ssb_bus *bus, const u16 *sprom)); -extern const struct ssb_sprom *ssb_get_fallback_sprom(void); -+extern int ssb_fill_sprom_with_fallback(struct ssb_bus *bus); ++extern int ssb_fill_sprom_with_fallback(struct ssb_bus *bus, struct ssb_sprom *out); /* core.c */ --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h -@@ -404,7 +404,8 @@ extern bool ssb_is_sprom_available(struc +@@ -404,7 +404,9 @@ extern bool ssb_is_sprom_available(struc /* Set a fallback SPROM. * See kdoc at the function definition for complete documentation. */ -extern int ssb_arch_set_fallback_sprom(const struct ssb_sprom *sprom); +extern int ssb_arch_register_fallback_sprom( -+ int (*sprom_callback)(struct ssb_bus *bus)); ++ int (*sprom_callback)(struct ssb_bus *bus, ++ struct ssb_sprom *out)); /* Suspend a SSB bus. * Call this from the parent bus suspend routine. */ diff --git a/target/linux/brcm47xx/patches-2.6.38/033-bcm47xx-register-fallback-callback.patch b/target/linux/brcm47xx/patches-2.6.38/033-bcm47xx-register-fallback-callback.patch index f63deacddf..4e88cf644d 100644 --- a/target/linux/brcm47xx/patches-2.6.38/033-bcm47xx-register-fallback-callback.patch +++ b/target/linux/brcm47xx/patches-2.6.38/033-bcm47xx-register-fallback-callback.patch @@ -15,7 +15,7 @@ } } -+int bcm47xx_get_sprom(struct ssb_bus *bus) ++int bcm47xx_get_sprom(struct ssb_bus *bus, struct ssb_sprom *out) +{ + char prefix[10]; + @@ -23,7 +23,7 @@ + snprintf(prefix, sizeof(prefix), "pci/%x/%x/", + bus->host_pci->bus->number + 1, + PCI_SLOT(bus->host_pci->devfn)); -+ bcm47xx_fill_sprom(&bus->sprom, prefix); ++ bcm47xx_fill_sprom(out, prefix); + return 0; + } else { + printk(KERN_WARNING "bcm47xx: unable to fill SPROM for given bustype.\n"); |