From bbf739a59fc8f0eaa66b78d2f9e631cef1d569d0 Mon Sep 17 00:00:00 2001
From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Sun, 11 Mar 2012 11:50:59 +0000
Subject: [PATCH] BCMA - Reorder SPROM fill

The SPROM is initialized in bcm47xx_fill_sprom, so move the call to bcm47xx_fill_sprom_ethernet after it.

Signed-off-by: Nathan Hintz <nlhintz@hotmail.com>

SVN-Revision: 30873
---
 .../231-bcma_reorder_sprom_fill.patch         | 44 +++++++++++++++++++
 .../patches-3.2/400-arch-bcm47xx.patch        |  2 +-
 .../980-wnr834b_no_cardbus_invariant.patch    |  2 +-
 3 files changed, 46 insertions(+), 2 deletions(-)
 create mode 100644 target/linux/brcm47xx/patches-3.2/231-bcma_reorder_sprom_fill.patch

diff --git a/target/linux/brcm47xx/patches-3.2/231-bcma_reorder_sprom_fill.patch b/target/linux/brcm47xx/patches-3.2/231-bcma_reorder_sprom_fill.patch
new file mode 100644
index 0000000000..a9f176f9a0
--- /dev/null
+++ b/target/linux/brcm47xx/patches-3.2/231-bcma_reorder_sprom_fill.patch
@@ -0,0 +1,44 @@
+--- a/arch/mips/bcm47xx/setup.c
++++ b/arch/mips/bcm47xx/setup.c
+@@ -96,6 +96,7 @@ static int bcm47xx_get_sprom_ssb(struct
+ 	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));
+@@ -124,6 +125,7 @@ static int bcm47xx_get_invariants(struct
+ 	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);
+ 
+ 	if (nvram_getenv("cardbus", buf, sizeof(buf)) >= 0)
+@@ -204,12 +206,14 @@ static int bcm47xx_get_sprom_bcma(struct
+ 
+ 	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);
+ 		return 0;
+ 	case BCMA_HOSTTYPE_SOC:
++		memset(out, 0, sizeof(struct ssb_sprom));
+ 		bcm47xx_fill_sprom_ethernet(out, NULL);
+ 		core = bcma_find_core(bus, BCMA_CORE_80211);
+ 		if (core) {
+--- a/arch/mips/bcm47xx/sprom.c
++++ b/arch/mips/bcm47xx/sprom.c
+@@ -555,8 +555,6 @@ void bcm47xx_fill_sprom_ethernet(struct
+ 
+ void bcm47xx_fill_sprom(struct ssb_sprom *sprom, const char *prefix)
+ {
+-	memset(sprom, 0, sizeof(struct ssb_sprom));
+-
+ 	bcm47xx_fill_sprom_ethernet(sprom, prefix);
+ 
+ 	nvram_read_u8(prefix, NULL, "sromrev", &sprom->revision, 0);
diff --git a/target/linux/brcm47xx/patches-3.2/400-arch-bcm47xx.patch b/target/linux/brcm47xx/patches-3.2/400-arch-bcm47xx.patch
index 5412aa61e0..38a1fce643 100644
--- a/target/linux/brcm47xx/patches-3.2/400-arch-bcm47xx.patch
+++ b/target/linux/brcm47xx/patches-3.2/400-arch-bcm47xx.patch
@@ -33,7 +33,7 @@
 +EXPORT_SYMBOL(nvram_get);
 --- a/arch/mips/bcm47xx/setup.c
 +++ b/arch/mips/bcm47xx/setup.c
-@@ -351,3 +351,20 @@ static int __init bcm47xx_register_flash
+@@ -355,3 +355,20 @@ static int __init bcm47xx_register_flash
  	return -1;
  }
  fs_initcall(bcm47xx_register_flash);
diff --git a/target/linux/brcm47xx/patches-3.2/980-wnr834b_no_cardbus_invariant.patch b/target/linux/brcm47xx/patches-3.2/980-wnr834b_no_cardbus_invariant.patch
index 14ac90eff1..da43422d6f 100644
--- a/target/linux/brcm47xx/patches-3.2/980-wnr834b_no_cardbus_invariant.patch
+++ b/target/linux/brcm47xx/patches-3.2/980-wnr834b_no_cardbus_invariant.patch
@@ -1,6 +1,6 @@
 --- a/arch/mips/bcm47xx/setup.c
 +++ b/arch/mips/bcm47xx/setup.c
-@@ -129,6 +129,10 @@ static int bcm47xx_get_invariants(struct
+@@ -131,6 +131,10 @@ static int bcm47xx_get_invariants(struct
  	if (nvram_getenv("cardbus", buf, sizeof(buf)) >= 0)
  		iv->has_cardbus_slot = !!simple_strtoul(buf, NULL, 10);
  
-- 
2.25.1