aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/bcm47xx/setup.c
diff options
context:
space:
mode:
authorNathan Hintz <nlhintz@hotmail.com>2012-05-05 00:56:32 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-05-16 12:46:03 -0400
commit5fe2e0711dd9286e46f60f21c8cd580242cf8f89 (patch)
tree140900aaf93cd7b8c5d6d3c21e18dd81defb1d70 /arch/mips/bcm47xx/setup.c
parent82a7c2bb5f57fd9f610f9e6d7c532033bebfa0cc (diff)
bcma: Move initialization of SPROM to prevent overwrite
The first thing bcm47xx_fill_sprom does is initialize (zero fill) the SPROM. For BCMA SOC, this wipes out any values previously read by bcm47xx_fill_sprom_ethernet (see arch/mips/bcm47xx/setup.c - bcm47xx_get_sprom_bcma). Move the initialization of SPROM so it is called prior to filling in any values. Signed-off-by: Nathan Hintz <nlhintz@hotmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'arch/mips/bcm47xx/setup.c')
-rw-r--r--arch/mips/bcm47xx/setup.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/mips/bcm47xx/setup.c b/arch/mips/bcm47xx/setup.c
index 9ef46d2a5110..95bf4d7bac21 100644
--- a/arch/mips/bcm47xx/setup.c
+++ b/arch/mips/bcm47xx/setup.c
@@ -90,6 +90,7 @@ static int bcm47xx_get_sprom_ssb(struct ssb_bus *bus, struct ssb_sprom *out)
90 char prefix[10]; 90 char prefix[10];
91 91
92 if (bus->bustype == SSB_BUSTYPE_PCI) { 92 if (bus->bustype == SSB_BUSTYPE_PCI) {
93 memset(out, 0, sizeof(struct ssb_sprom));
93 snprintf(prefix, sizeof(prefix), "pci/%u/%u/", 94 snprintf(prefix, sizeof(prefix), "pci/%u/%u/",
94 bus->host_pci->bus->number + 1, 95 bus->host_pci->bus->number + 1,
95 PCI_SLOT(bus->host_pci->devfn)); 96 PCI_SLOT(bus->host_pci->devfn));
@@ -111,6 +112,7 @@ static int bcm47xx_get_invariants(struct ssb_bus *bus,
111 112
112 bcm47xx_fill_ssb_boardinfo(&iv->boardinfo, NULL); 113 bcm47xx_fill_ssb_boardinfo(&iv->boardinfo, NULL);
113 114
115 memset(&iv->sprom, 0, sizeof(struct ssb_sprom));
114 bcm47xx_fill_sprom(&iv->sprom, NULL); 116 bcm47xx_fill_sprom(&iv->sprom, NULL);
115 117
116 if (nvram_getenv("cardbus", buf, sizeof(buf)) >= 0) 118 if (nvram_getenv("cardbus", buf, sizeof(buf)) >= 0)
@@ -159,12 +161,14 @@ static int bcm47xx_get_sprom_bcma(struct bcma_bus *bus, struct ssb_sprom *out)
159 161
160 switch (bus->hosttype) { 162 switch (bus->hosttype) {
161 case BCMA_HOSTTYPE_PCI: 163 case BCMA_HOSTTYPE_PCI:
164 memset(out, 0, sizeof(struct ssb_sprom));
162 snprintf(prefix, sizeof(prefix), "pci/%u/%u/", 165 snprintf(prefix, sizeof(prefix), "pci/%u/%u/",
163 bus->host_pci->bus->number + 1, 166 bus->host_pci->bus->number + 1,
164 PCI_SLOT(bus->host_pci->devfn)); 167 PCI_SLOT(bus->host_pci->devfn));
165 bcm47xx_fill_sprom(out, prefix); 168 bcm47xx_fill_sprom(out, prefix);
166 return 0; 169 return 0;
167 case BCMA_HOSTTYPE_SOC: 170 case BCMA_HOSTTYPE_SOC:
171 memset(out, 0, sizeof(struct ssb_sprom));
168 bcm47xx_fill_sprom_ethernet(out, NULL); 172 bcm47xx_fill_sprom_ethernet(out, NULL);
169 core = bcma_find_core(bus, BCMA_CORE_80211); 173 core = bcma_find_core(bus, BCMA_CORE_80211);
170 if (core) { 174 if (core) {