aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx/patches-3.3
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2012-05-17 13:22:38 +0000
committerHauke Mehrtens <hauke@hauke-m.de>2012-05-17 13:22:38 +0000
commit273797f15a2ec0fc47cd88a92904a5712bd6539e (patch)
treec6806b48609216e9a0e3f0d613471ac270fbc168 /target/linux/brcm47xx/patches-3.3
parent3491d8c01799eedc6bb00405d306b206242abe40 (diff)
downloadupstream-273797f15a2ec0fc47cd88a92904a5712bd6539e.tar.gz
upstream-273797f15a2ec0fc47cd88a92904a5712bd6539e.tar.bz2
upstream-273797f15a2ec0fc47cd88a92904a5712bd6539e.zip
kernel: ssb/bcma: update to version from wireless-testing tag master-2012-05-16-2
SVN-Revision: 31772
Diffstat (limited to 'target/linux/brcm47xx/patches-3.3')
-rw-r--r--target/linux/brcm47xx/patches-3.3/047-bcma-add-new-PCI-ID.patch2
-rw-r--r--target/linux/brcm47xx/patches-3.3/060-bcma-use-fallback-sprom-if-no-on-chip-sprom-is-avail.patch24
-rw-r--r--target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch6
-rw-r--r--target/linux/brcm47xx/patches-3.3/230-bcma-find-name-for-non-brcm.patch99
-rw-r--r--target/linux/brcm47xx/patches-3.3/232-bcma_account_for_variable_pci_memory.patch14
-rw-r--r--target/linux/brcm47xx/patches-3.3/234-bcma-always-map-4-bytes.patch29
-rw-r--r--target/linux/brcm47xx/patches-3.3/238-bcma-host_pci_devexit.patch20
-rw-r--r--target/linux/brcm47xx/patches-3.3/239-bcma-add-flush-for-resetctl-write.patch10
-rw-r--r--target/linux/brcm47xx/patches-3.3/250-ssb-remove-rev-from-boardinfo.patch11
-rw-r--r--target/linux/brcm47xx/patches-3.3/251-MIPS-bcm47xx-refactor-fetching-board-data.patch46
-rw-r--r--target/linux/brcm47xx/patches-3.3/252-bcma-add-boardinfo-struct.patch41
-rw-r--r--target/linux/brcm47xx/patches-3.3/253-MIPS-bcm47xx-read-baordrev-without-prefix-from-sprom.patch11
-rw-r--r--target/linux/brcm47xx/patches-3.3/400-arch-bcm47xx.patch2
-rw-r--r--target/linux/brcm47xx/patches-3.3/980-wnr834b_no_cardbus_invariant.patch2
14 files changed, 115 insertions, 202 deletions
diff --git a/target/linux/brcm47xx/patches-3.3/047-bcma-add-new-PCI-ID.patch b/target/linux/brcm47xx/patches-3.3/047-bcma-add-new-PCI-ID.patch
index 77062c3dab..fb658345e6 100644
--- a/target/linux/brcm47xx/patches-3.3/047-bcma-add-new-PCI-ID.patch
+++ b/target/linux/brcm47xx/patches-3.3/047-bcma-add-new-PCI-ID.patch
@@ -14,7 +14,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
--- a/drivers/bcma/host_pci.c
+++ b/drivers/bcma/host_pci.c
-@@ -269,6 +269,7 @@ static DEFINE_PCI_DEVICE_TABLE(bcma_pci_
+@@ -272,6 +272,7 @@ static DEFINE_PCI_DEVICE_TABLE(bcma_pci_
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4353) },
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4357) },
{ PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, 0x4727) },
diff --git a/target/linux/brcm47xx/patches-3.3/060-bcma-use-fallback-sprom-if-no-on-chip-sprom-is-avail.patch b/target/linux/brcm47xx/patches-3.3/060-bcma-use-fallback-sprom-if-no-on-chip-sprom-is-avail.patch
deleted file mode 100644
index abc638d244..0000000000
--- a/target/linux/brcm47xx/patches-3.3/060-bcma-use-fallback-sprom-if-no-on-chip-sprom-is-avail.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- a/drivers/bcma/sprom.c
-+++ b/drivers/bcma/sprom.c
-@@ -404,16 +404,19 @@ int bcma_sprom_get(struct bcma_bus *bus)
- return -EOPNOTSUPP;
-
- if (!bcma_sprom_ext_available(bus)) {
-+ bool sprom_onchip;
-+
- /*
- * External SPROM takes precedence so check
- * on-chip OTP only when no external SPROM
- * is present.
- */
-- if (bcma_sprom_onchip_available(bus)) {
-+ sprom_onchip = bcma_sprom_onchip_available(bus);
-+ if (sprom_onchip) {
- /* determine offset */
- offset = bcma_sprom_onchip_offset(bus);
- }
-- if (!offset) {
-+ if (!offset || !sprom_onchip) {
- /*
- * Maybe there is no SPROM on the device?
- * Now we ask the arch code if there is some sprom
diff --git a/target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch b/target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch
index 6e68f0cc8f..fdf5cfbe9d 100644
--- a/target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch
+++ b/target/linux/brcm47xx/patches-3.3/182-bcma-scan-for-extra-address-space.patch
@@ -1,6 +1,6 @@
--- a/drivers/bcma/scan.c
+++ b/drivers/bcma/scan.c
-@@ -297,6 +297,23 @@ static int bcma_get_next_core(struct bcm
+@@ -323,6 +323,23 @@ static int bcma_get_next_core(struct bcm
return -EILSEQ;
}
@@ -24,7 +24,7 @@
/* get & parse slave ports */
for (i = 0; i < ports[1]; i++) {
for (j = 0; ; j++) {
-@@ -309,7 +326,7 @@ static int bcma_get_next_core(struct bcm
+@@ -335,7 +352,7 @@ static int bcma_get_next_core(struct bcm
break;
} else {
if (i == 0 && j == 0)
@@ -35,7 +35,7 @@
}
--- a/include/linux/bcma/bcma.h
+++ b/include/linux/bcma/bcma.h
-@@ -139,6 +139,7 @@ struct bcma_device {
+@@ -144,6 +144,7 @@ struct bcma_device {
u8 core_unit;
u32 addr;
diff --git a/target/linux/brcm47xx/patches-3.3/230-bcma-find-name-for-non-brcm.patch b/target/linux/brcm47xx/patches-3.3/230-bcma-find-name-for-non-brcm.patch
deleted file mode 100644
index 54addee966..0000000000
--- a/target/linux/brcm47xx/patches-3.3/230-bcma-find-name-for-non-brcm.patch
+++ /dev/null
@@ -1,99 +0,0 @@
---- a/drivers/bcma/scan.c
-+++ b/drivers/bcma/scan.c
-@@ -19,7 +19,14 @@ struct bcma_device_id_name {
- u16 id;
- const char *name;
- };
--struct bcma_device_id_name bcma_device_names[] = {
-+
-+static const struct bcma_device_id_name bcma_arm_device_names[] = {
-+ { BCMA_CORE_ARM_1176, "ARM 1176" },
-+ { BCMA_CORE_ARM_7TDMI, "ARM 7TDMI" },
-+ { BCMA_CORE_ARM_CM3, "ARM CM3" },
-+};
-+
-+static const struct bcma_device_id_name bcma_bcm_device_names[] = {
- { BCMA_CORE_OOB_ROUTER, "OOB Router" },
- { BCMA_CORE_INVALID, "Invalid" },
- { BCMA_CORE_CHIPCOMMON, "ChipCommon" },
-@@ -27,7 +34,6 @@ struct bcma_device_id_name bcma_device_n
- { BCMA_CORE_SRAM, "SRAM" },
- { BCMA_CORE_SDRAM, "SDRAM" },
- { BCMA_CORE_PCI, "PCI" },
-- { BCMA_CORE_MIPS, "MIPS" },
- { BCMA_CORE_ETHERNET, "Fast Ethernet" },
- { BCMA_CORE_V90, "V90" },
- { BCMA_CORE_USB11_HOSTDEV, "USB 1.1 Hostdev" },
-@@ -44,7 +50,6 @@ struct bcma_device_id_name bcma_device_n
- { BCMA_CORE_PHY_A, "PHY A" },
- { BCMA_CORE_PHY_B, "PHY B" },
- { BCMA_CORE_PHY_G, "PHY G" },
-- { BCMA_CORE_MIPS_3302, "MIPS 3302" },
- { BCMA_CORE_USB11_HOST, "USB 1.1 Host" },
- { BCMA_CORE_USB11_DEV, "USB 1.1 Device" },
- { BCMA_CORE_USB20_HOST, "USB 2.0 Host" },
-@@ -58,15 +63,11 @@ struct bcma_device_id_name bcma_device_n
- { BCMA_CORE_PHY_N, "PHY N" },
- { BCMA_CORE_SRAM_CTL, "SRAM Controller" },
- { BCMA_CORE_MINI_MACPHY, "Mini MACPHY" },
-- { BCMA_CORE_ARM_1176, "ARM 1176" },
-- { BCMA_CORE_ARM_7TDMI, "ARM 7TDMI" },
- { BCMA_CORE_PHY_LP, "PHY LP" },
- { BCMA_CORE_PMU, "PMU" },
- { BCMA_CORE_PHY_SSN, "PHY SSN" },
- { BCMA_CORE_SDIO_DEV, "SDIO Device" },
-- { BCMA_CORE_ARM_CM3, "ARM CM3" },
- { BCMA_CORE_PHY_HT, "PHY HT" },
-- { BCMA_CORE_MIPS_74K, "MIPS 74K" },
- { BCMA_CORE_MAC_GBIT, "GBit MAC" },
- { BCMA_CORE_DDR12_MEM_CTL, "DDR1/DDR2 Memory Controller" },
- { BCMA_CORE_PCIE_RC, "PCIe Root Complex" },
-@@ -79,16 +80,41 @@ struct bcma_device_id_name bcma_device_n
- { BCMA_CORE_SHIM, "SHIM" },
- { BCMA_CORE_DEFAULT, "Default" },
- };
--const char *bcma_device_name(struct bcma_device_id *id)
-+
-+static const struct bcma_device_id_name bcma_mips_device_names[] = {
-+ { BCMA_CORE_MIPS, "MIPS" },
-+ { BCMA_CORE_MIPS_3302, "MIPS 3302" },
-+ { BCMA_CORE_MIPS_74K, "MIPS 74K" },
-+};
-+
-+static const char *bcma_device_name(const struct bcma_device_id *id)
- {
-- int i;
-+ const struct bcma_device_id_name *names;
-+ int size, i;
-
-- if (id->manuf == BCMA_MANUF_BCM) {
-- for (i = 0; i < ARRAY_SIZE(bcma_device_names); i++) {
-- if (bcma_device_names[i].id == id->id)
-- return bcma_device_names[i].name;
-- }
-+ /* search manufacturer specific names */
-+ switch (id->manuf) {
-+ case BCMA_MANUF_ARM:
-+ names = bcma_arm_device_names;
-+ size = ARRAY_SIZE(bcma_arm_device_names);
-+ break;
-+ case BCMA_MANUF_BCM:
-+ names = bcma_bcm_device_names;
-+ size = ARRAY_SIZE(bcma_bcm_device_names);
-+ break;
-+ case BCMA_MANUF_MIPS:
-+ names = bcma_mips_device_names;
-+ size = ARRAY_SIZE(bcma_mips_device_names);
-+ break;
-+ default:
-+ return "UNKNOWN";
- }
-+
-+ for (i = 0; i < size; i++) {
-+ if (names[i].id == id->id)
-+ return names[i].name;
-+ }
-+
- return "UNKNOWN";
- }
-
diff --git a/target/linux/brcm47xx/patches-3.3/232-bcma_account_for_variable_pci_memory.patch b/target/linux/brcm47xx/patches-3.3/232-bcma_account_for_variable_pci_memory.patch
deleted file mode 100644
index 3a2d512dc7..0000000000
--- a/target/linux/brcm47xx/patches-3.3/232-bcma_account_for_variable_pci_memory.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/drivers/bcma/driver_pci_host.c
-+++ b/drivers/bcma/driver_pci_host.c
-@@ -491,8 +491,9 @@ void __devinit bcma_core_pci_hostmode_in
- /* Ok, ready to run, register it to the system.
- * The following needs change, if we want to port hostmode
- * to non-MIPS platform. */
-- io_map_base = (unsigned long)ioremap_nocache(BCMA_SOC_PCI_MEM,
-- 0x04000000);
-+ io_map_base = (unsigned long)ioremap_nocache(pc_host->mem_resource.start,
-+ pc_host->mem_resource.end -
-+ pc_host->mem_resource.start + 1);
- pc_host->pci_controller.io_map_base = io_map_base;
- set_io_port_base(pc_host->pci_controller.io_map_base);
- /* Give some time to the PCI controller to configure itself with the new
diff --git a/target/linux/brcm47xx/patches-3.3/234-bcma-always-map-4-bytes.patch b/target/linux/brcm47xx/patches-3.3/234-bcma-always-map-4-bytes.patch
deleted file mode 100644
index adaadcc031..0000000000
--- a/target/linux/brcm47xx/patches-3.3/234-bcma-always-map-4-bytes.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/drivers/bcma/driver_pci_host.c
-+++ b/drivers/bcma/driver_pci_host.c
-@@ -119,7 +119,7 @@ static int bcma_extpci_read_config(struc
- if (unlikely(!addr))
- goto out;
- err = -ENOMEM;
-- mmio = ioremap_nocache(addr, len);
-+ mmio = ioremap_nocache(addr, sizeof(val));
- if (!mmio)
- goto out;
-
-@@ -171,7 +171,7 @@ static int bcma_extpci_write_config(stru
- addr = pc->core->addr + BCMA_CORE_PCI_PCICFG0;
- addr |= (func << 8);
- addr |= (off & 0xfc);
-- mmio = ioremap_nocache(addr, len);
-+ mmio = ioremap_nocache(addr, sizeof(val));
- if (!mmio)
- goto out;
- }
-@@ -180,7 +180,7 @@ static int bcma_extpci_write_config(stru
- if (unlikely(!addr))
- goto out;
- err = -ENOMEM;
-- mmio = ioremap_nocache(addr, len);
-+ mmio = ioremap_nocache(addr, sizeof(val));
- if (!mmio)
- goto out;
-
diff --git a/target/linux/brcm47xx/patches-3.3/238-bcma-host_pci_devexit.patch b/target/linux/brcm47xx/patches-3.3/238-bcma-host_pci_devexit.patch
deleted file mode 100644
index 85b47fa7f8..0000000000
--- a/target/linux/brcm47xx/patches-3.3/238-bcma-host_pci_devexit.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- a/drivers/bcma/host_pci.c
-+++ b/drivers/bcma/host_pci.c
-@@ -222,7 +222,7 @@ err_kfree_bus:
- return err;
- }
-
--static void bcma_host_pci_remove(struct pci_dev *dev)
-+static void __devexit bcma_host_pci_remove(struct pci_dev *dev)
- {
- struct bcma_bus *bus = pci_get_drvdata(dev);
-
-@@ -278,7 +278,7 @@ static struct pci_driver bcma_pci_bridge
- .name = "bcma-pci-bridge",
- .id_table = bcma_pci_bridge_tbl,
- .probe = bcma_host_pci_probe,
-- .remove = bcma_host_pci_remove,
-+ .remove = __devexit_p(bcma_host_pci_remove),
- .driver.pm = BCMA_PM_OPS,
- };
-
diff --git a/target/linux/brcm47xx/patches-3.3/239-bcma-add-flush-for-resetctl-write.patch b/target/linux/brcm47xx/patches-3.3/239-bcma-add-flush-for-resetctl-write.patch
deleted file mode 100644
index 285c356adf..0000000000
--- a/target/linux/brcm47xx/patches-3.3/239-bcma-add-flush-for-resetctl-write.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/drivers/bcma/core.c
-+++ b/drivers/bcma/core.c
-@@ -30,6 +30,7 @@ void bcma_core_disable(struct bcma_devic
- udelay(10);
-
- bcma_awrite32(core, BCMA_RESET_CTL, BCMA_RESET_CTL_RESET);
-+ bcma_aread32(core, BCMA_RESET_CTL);
- udelay(1);
- }
- EXPORT_SYMBOL_GPL(bcma_core_disable);
diff --git a/target/linux/brcm47xx/patches-3.3/250-ssb-remove-rev-from-boardinfo.patch b/target/linux/brcm47xx/patches-3.3/250-ssb-remove-rev-from-boardinfo.patch
new file mode 100644
index 0000000000..9e9f426605
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.3/250-ssb-remove-rev-from-boardinfo.patch
@@ -0,0 +1,11 @@
+--- a/arch/mips/bcm47xx/setup.c
++++ b/arch/mips/bcm47xx/setup.c
+@@ -163,8 +163,6 @@ static int bcm47xx_get_invariants(struct
+ iv->boardinfo.vendor = SSB_BOARDVENDOR_BCM;
+ if (nvram_getenv("boardtype", buf, sizeof(buf)) >= 0)
+ iv->boardinfo.type = (u16)simple_strtoul(buf, NULL, 0);
+- if (nvram_getenv("boardrev", buf, sizeof(buf)) >= 0)
+- iv->boardinfo.rev = (u16)simple_strtoul(buf, NULL, 0);
+
+ memset(&iv->sprom, 0, sizeof(struct ssb_sprom));
+ bcm47xx_fill_sprom(&iv->sprom, NULL);
diff --git a/target/linux/brcm47xx/patches-3.3/251-MIPS-bcm47xx-refactor-fetching-board-data.patch b/target/linux/brcm47xx/patches-3.3/251-MIPS-bcm47xx-refactor-fetching-board-data.patch
new file mode 100644
index 0000000000..a50cd8c048
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.3/251-MIPS-bcm47xx-refactor-fetching-board-data.patch
@@ -0,0 +1,46 @@
+--- a/arch/mips/bcm47xx/setup.c
++++ b/arch/mips/bcm47xx/setup.c
+@@ -157,12 +157,7 @@ static int bcm47xx_get_invariants(struct
+ /* Fill boardinfo structure */
+ memset(&(iv->boardinfo), 0 , sizeof(struct ssb_boardinfo));
+
+- if (nvram_getenv("boardvendor", buf, sizeof(buf)) >= 0)
+- iv->boardinfo.vendor = (u16)simple_strtoul(buf, NULL, 0);
+- else
+- iv->boardinfo.vendor = SSB_BOARDVENDOR_BCM;
+- if (nvram_getenv("boardtype", buf, sizeof(buf)) >= 0)
+- iv->boardinfo.type = (u16)simple_strtoul(buf, NULL, 0);
++ bcm47xx_fill_ssb_boardinfo(&iv->boardinfo, NULL);
+
+ memset(&iv->sprom, 0, sizeof(struct ssb_sprom));
+ bcm47xx_fill_sprom(&iv->sprom, NULL);
+--- a/arch/mips/bcm47xx/sprom.c
++++ b/arch/mips/bcm47xx/sprom.c
+@@ -616,3 +616,15 @@ void bcm47xx_fill_sprom(struct ssb_sprom
+ bcm47xx_fill_sprom_r1(sprom, prefix);
+ }
+ }
++
++#ifdef CONFIG_BCM47XX_SSB
++void bcm47xx_fill_ssb_boardinfo(struct ssb_boardinfo *boardinfo,
++ const char *prefix)
++{
++ nvram_read_u16(prefix, NULL, "boardvendor", &boardinfo->vendor, 0);
++ if (!boardinfo->vendor)
++ boardinfo->vendor = SSB_BOARDVENDOR_BCM;
++
++ nvram_read_u16(prefix, NULL, "boardtype", &boardinfo->type, 0);
++}
++#endif
+--- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
++++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
+@@ -47,4 +47,9 @@ extern enum bcm47xx_bus_type bcm47xx_bus
+ void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix);
+ void bcm47xx_fill_sprom_ethernet(struct ssb_sprom *sprom, const char *prefix);
+
++#ifdef CONFIG_BCM47XX_SSB
++void bcm47xx_fill_ssb_boardinfo(struct ssb_boardinfo *boardinfo,
++ const char *prefix);
++#endif
++
+ #endif /* __ASM_BCM47XX_H */
diff --git a/target/linux/brcm47xx/patches-3.3/252-bcma-add-boardinfo-struct.patch b/target/linux/brcm47xx/patches-3.3/252-bcma-add-boardinfo-struct.patch
new file mode 100644
index 0000000000..31ed817cca
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.3/252-bcma-add-boardinfo-struct.patch
@@ -0,0 +1,41 @@
+--- a/arch/mips/bcm47xx/setup.c
++++ b/arch/mips/bcm47xx/setup.c
+@@ -297,6 +297,8 @@ static void __init bcm47xx_register_bcma
+
+ if (bcm47xx_bus.bcma.bus.drv_cc.flash_type == BCMA_NFLASH)
+ bcm47xx_nflash_struct_bcma_init(&bcm47xx_nflash, &bcm47xx_bus.bcma.bus.drv_cc);
++
++ bcm47xx_fill_bcma_boardinfo(&bcm47xx_bus.bcma.bus.boardinfo, NULL);
+ }
+
+ static int __init bcm47xx_register_flash_bcma(void)
+--- a/arch/mips/bcm47xx/sprom.c
++++ b/arch/mips/bcm47xx/sprom.c
+@@ -628,3 +628,15 @@ void bcm47xx_fill_ssb_boardinfo(struct s
+ nvram_read_u16(prefix, NULL, "boardtype", &boardinfo->type, 0);
+ }
+ #endif
++
++#ifdef CONFIG_BCM47XX_BCMA
++void bcm47xx_fill_bcma_boardinfo(struct bcma_boardinfo *boardinfo,
++ const char *prefix)
++{
++ nvram_read_u16(prefix, NULL, "boardvendor", &boardinfo->vendor, 0);
++ if (!boardinfo->vendor)
++ boardinfo->vendor = SSB_BOARDVENDOR_BCM;
++
++ nvram_read_u16(prefix, NULL, "boardtype", &boardinfo->type, 0);
++}
++#endif
+--- a/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
++++ b/arch/mips/include/asm/mach-bcm47xx/bcm47xx.h
+@@ -51,5 +51,9 @@ void bcm47xx_fill_sprom_ethernet(struct
+ void bcm47xx_fill_ssb_boardinfo(struct ssb_boardinfo *boardinfo,
+ const char *prefix);
+ #endif
++#ifdef CONFIG_BCM47XX_BCMA
++void bcm47xx_fill_bcma_boardinfo(struct bcma_boardinfo *boardinfo,
++ const char *prefix);
++#endif
+
+ #endif /* __ASM_BCM47XX_H */
diff --git a/target/linux/brcm47xx/patches-3.3/253-MIPS-bcm47xx-read-baordrev-without-prefix-from-sprom.patch b/target/linux/brcm47xx/patches-3.3/253-MIPS-bcm47xx-read-baordrev-without-prefix-from-sprom.patch
new file mode 100644
index 0000000000..108987d83d
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.3/253-MIPS-bcm47xx-read-baordrev-without-prefix-from-sprom.patch
@@ -0,0 +1,11 @@
+--- a/arch/mips/bcm47xx/sprom.c
++++ b/arch/mips/bcm47xx/sprom.c
+@@ -165,6 +165,8 @@ static void bcm47xx_fill_sprom_r1234589(
+ const char *prefix)
+ {
+ nvram_read_u16(prefix, NULL, "boardrev", &sprom->board_rev, 0);
++ if (!sprom->board_rev)
++ nvram_read_u16(NULL, NULL, "boardrev", &sprom->board_rev, 0);
+ nvram_read_u16(prefix, NULL, "boardnum", &sprom->board_num, 0);
+ nvram_read_u8(prefix, NULL, "ledbh0", &sprom->gpio0, 0xff);
+ nvram_read_u8(prefix, NULL, "ledbh1", &sprom->gpio1, 0xff);
diff --git a/target/linux/brcm47xx/patches-3.3/400-arch-bcm47xx.patch b/target/linux/brcm47xx/patches-3.3/400-arch-bcm47xx.patch
index 0933fb6959..796a98aa82 100644
--- a/target/linux/brcm47xx/patches-3.3/400-arch-bcm47xx.patch
+++ b/target/linux/brcm47xx/patches-3.3/400-arch-bcm47xx.patch
@@ -33,7 +33,7 @@
+EXPORT_SYMBOL(nvram_get);
--- a/arch/mips/bcm47xx/setup.c
+++ b/arch/mips/bcm47xx/setup.c
-@@ -384,3 +384,20 @@ static int __init bcm47xx_register_flash
+@@ -379,3 +379,20 @@ static int __init bcm47xx_register_flash
return -1;
}
fs_initcall(bcm47xx_register_flash);
diff --git a/target/linux/brcm47xx/patches-3.3/980-wnr834b_no_cardbus_invariant.patch b/target/linux/brcm47xx/patches-3.3/980-wnr834b_no_cardbus_invariant.patch
index 42f00ddc31..c6de865c7e 100644
--- a/target/linux/brcm47xx/patches-3.3/980-wnr834b_no_cardbus_invariant.patch
+++ b/target/linux/brcm47xx/patches-3.3/980-wnr834b_no_cardbus_invariant.patch
@@ -1,6 +1,6 @@
--- a/arch/mips/bcm47xx/setup.c
+++ b/arch/mips/bcm47xx/setup.c
-@@ -172,6 +172,10 @@ static int bcm47xx_get_invariants(struct
+@@ -165,6 +165,10 @@ static int bcm47xx_get_invariants(struct
if (nvram_getenv("cardbus", buf, sizeof(buf)) >= 0)
iv->has_cardbus_slot = !!simple_strtoul(buf, NULL, 10);