aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2012-04-28 20:04:06 -0400
committerJohn W. Linville <linville@tuxdriver.com>2012-05-16 12:45:20 -0400
commit5a20ef3db28faa42dd5dc86ad75d2736bcd3da4c (patch)
treebc079f5da6e2ec6296c434ec51926545ae6e8db1
parent12d9568333de3bfc50ff8d3312c097ba7ea7fe3c (diff)
ssb: remove rev from boardinfo
Previously the rev contained the revision read from the pci config space and was used as board_rev in the wireless drivers. This is wrong the board_rev is only fetched from the sprom accordingly to the open source part of the Broadcom SDK and brcmsmac. This patch removes the rev from the boardinfo structure and uses the board_rev attribute from sprom instead. This attribute is filled by PCI, PCMCIA, SDIO and SoC code. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Tested-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--arch/mips/bcm47xx/setup.c2
-rw-r--r--drivers/net/wireless/b43/bus.c2
-rw-r--r--drivers/net/wireless/b43/main.c4
-rw-r--r--drivers/net/wireless/b43legacy/main.c2
-rw-r--r--drivers/net/wireless/b43legacy/phy.c4
-rw-r--r--drivers/net/wireless/b43legacy/radio.c10
-rw-r--r--drivers/ssb/pci.c1
-rw-r--r--include/linux/ssb/ssb.h1
8 files changed, 11 insertions, 15 deletions
diff --git a/arch/mips/bcm47xx/setup.c b/arch/mips/bcm47xx/setup.c
index 19780aa91708..d9278a82e003 100644
--- a/arch/mips/bcm47xx/setup.c
+++ b/arch/mips/bcm47xx/setup.c
@@ -115,8 +115,6 @@ static int bcm47xx_get_invariants(struct ssb_bus *bus,
115 iv->boardinfo.vendor = SSB_BOARDVENDOR_BCM; 115 iv->boardinfo.vendor = SSB_BOARDVENDOR_BCM;
116 if (nvram_getenv("boardtype", buf, sizeof(buf)) >= 0) 116 if (nvram_getenv("boardtype", buf, sizeof(buf)) >= 0)
117 iv->boardinfo.type = (u16)simple_strtoul(buf, NULL, 0); 117 iv->boardinfo.type = (u16)simple_strtoul(buf, NULL, 0);
118 if (nvram_getenv("boardrev", buf, sizeof(buf)) >= 0)
119 iv->boardinfo.rev = (u16)simple_strtoul(buf, NULL, 0);
120 118
121 bcm47xx_fill_sprom(&iv->sprom, NULL); 119 bcm47xx_fill_sprom(&iv->sprom, NULL);
122 120
diff --git a/drivers/net/wireless/b43/bus.c b/drivers/net/wireless/b43/bus.c
index 424692df239d..8f3c0a889a4e 100644
--- a/drivers/net/wireless/b43/bus.c
+++ b/drivers/net/wireless/b43/bus.c
@@ -210,7 +210,7 @@ struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev)
210 210
211 dev->board_vendor = sdev->bus->boardinfo.vendor; 211 dev->board_vendor = sdev->bus->boardinfo.vendor;
212 dev->board_type = sdev->bus->boardinfo.type; 212 dev->board_type = sdev->bus->boardinfo.type;
213 dev->board_rev = sdev->bus->boardinfo.rev; 213 dev->board_rev = sdev->bus->sprom.board_rev;
214 214
215 dev->chip_id = sdev->bus->chip_id; 215 dev->chip_id = sdev->bus->chip_id;
216 dev->chip_rev = sdev->bus->chip_rev; 216 dev->chip_rev = sdev->bus->chip_rev;
diff --git a/drivers/net/wireless/b43/main.c b/drivers/net/wireless/b43/main.c
index 617afc8211b2..5a39b226b2e3 100644
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -5243,10 +5243,10 @@ static void b43_sprom_fixup(struct ssb_bus *bus)
5243 5243
5244 /* boardflags workarounds */ 5244 /* boardflags workarounds */
5245 if (bus->boardinfo.vendor == SSB_BOARDVENDOR_DELL && 5245 if (bus->boardinfo.vendor == SSB_BOARDVENDOR_DELL &&
5246 bus->chip_id == 0x4301 && bus->boardinfo.rev == 0x74) 5246 bus->chip_id == 0x4301 && bus->sprom.board_rev == 0x74)
5247 bus->sprom.boardflags_lo |= B43_BFL_BTCOEXIST; 5247 bus->sprom.boardflags_lo |= B43_BFL_BTCOEXIST;
5248 if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE && 5248 if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE &&
5249 bus->boardinfo.type == 0x4E && bus->boardinfo.rev > 0x40) 5249 bus->boardinfo.type == 0x4E && bus->sprom.board_rev > 0x40)
5250 bus->sprom.boardflags_lo |= B43_BFL_PACTRL; 5250 bus->sprom.boardflags_lo |= B43_BFL_PACTRL;
5251 if (bus->bustype == SSB_BUSTYPE_PCI) { 5251 if (bus->bustype == SSB_BUSTYPE_PCI) {
5252 pdev = bus->host_pci; 5252 pdev = bus->host_pci;
diff --git a/drivers/net/wireless/b43legacy/main.c b/drivers/net/wireless/b43legacy/main.c
index 1deafaac43e3..cd9c9bc186d9 100644
--- a/drivers/net/wireless/b43legacy/main.c
+++ b/drivers/net/wireless/b43legacy/main.c
@@ -3779,7 +3779,7 @@ static void b43legacy_sprom_fixup(struct ssb_bus *bus)
3779 /* boardflags workarounds */ 3779 /* boardflags workarounds */
3780 if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE && 3780 if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE &&
3781 bus->boardinfo.type == 0x4E && 3781 bus->boardinfo.type == 0x4E &&
3782 bus->boardinfo.rev > 0x40) 3782 bus->sprom.board_rev > 0x40)
3783 bus->sprom.boardflags_lo |= B43legacy_BFL_PACTRL; 3783 bus->sprom.boardflags_lo |= B43legacy_BFL_PACTRL;
3784} 3784}
3785 3785
diff --git a/drivers/net/wireless/b43legacy/phy.c b/drivers/net/wireless/b43legacy/phy.c
index 950334197f40..995c7d0c212a 100644
--- a/drivers/net/wireless/b43legacy/phy.c
+++ b/drivers/net/wireless/b43legacy/phy.c
@@ -408,7 +408,7 @@ static void b43legacy_phy_setupg(struct b43legacy_wldev *dev)
408 408
409 if (is_bcm_board_vendor(dev) && 409 if (is_bcm_board_vendor(dev) &&
410 (dev->dev->bus->boardinfo.type == 0x0416) && 410 (dev->dev->bus->boardinfo.type == 0x0416) &&
411 (dev->dev->bus->boardinfo.rev == 0x0017)) 411 (dev->dev->bus->sprom.board_rev == 0x0017))
412 return; 412 return;
413 413
414 b43legacy_ilt_write(dev, 0x5001, 0x0002); 414 b43legacy_ilt_write(dev, 0x5001, 0x0002);
@@ -424,7 +424,7 @@ static void b43legacy_phy_setupg(struct b43legacy_wldev *dev)
424 424
425 if (is_bcm_board_vendor(dev) && 425 if (is_bcm_board_vendor(dev) &&
426 (dev->dev->bus->boardinfo.type == 0x0416) && 426 (dev->dev->bus->boardinfo.type == 0x0416) &&
427 (dev->dev->bus->boardinfo.rev == 0x0017)) 427 (dev->dev->bus->sprom.board_rev == 0x0017))
428 return; 428 return;
429 429
430 b43legacy_ilt_write(dev, 0x0401, 0x0002); 430 b43legacy_ilt_write(dev, 0x0401, 0x0002);
diff --git a/drivers/net/wireless/b43legacy/radio.c b/drivers/net/wireless/b43legacy/radio.c
index fcbafcd603cc..896177690394 100644
--- a/drivers/net/wireless/b43legacy/radio.c
+++ b/drivers/net/wireless/b43legacy/radio.c
@@ -1998,7 +1998,7 @@ u16 b43legacy_default_radio_attenuation(struct b43legacy_wldev *dev)
1998 if (phy->type == B43legacy_PHYTYPE_G) { 1998 if (phy->type == B43legacy_PHYTYPE_G) {
1999 if (is_bcm_board_vendor(dev) && 1999 if (is_bcm_board_vendor(dev) &&
2000 dev->dev->bus->boardinfo.type == 0x421 && 2000 dev->dev->bus->boardinfo.type == 0x421 &&
2001 dev->dev->bus->boardinfo.rev >= 30) 2001 dev->dev->bus->sprom.board_rev >= 30)
2002 att = 3; 2002 att = 3;
2003 else if (is_bcm_board_vendor(dev) && 2003 else if (is_bcm_board_vendor(dev) &&
2004 dev->dev->bus->boardinfo.type == 0x416) 2004 dev->dev->bus->boardinfo.type == 0x416)
@@ -2008,7 +2008,7 @@ u16 b43legacy_default_radio_attenuation(struct b43legacy_wldev *dev)
2008 } else { 2008 } else {
2009 if (is_bcm_board_vendor(dev) && 2009 if (is_bcm_board_vendor(dev) &&
2010 dev->dev->bus->boardinfo.type == 0x421 && 2010 dev->dev->bus->boardinfo.type == 0x421 &&
2011 dev->dev->bus->boardinfo.rev >= 30) 2011 dev->dev->bus->sprom.board_rev >= 30)
2012 att = 7; 2012 att = 7;
2013 else 2013 else
2014 att = 6; 2014 att = 6;
@@ -2018,7 +2018,7 @@ u16 b43legacy_default_radio_attenuation(struct b43legacy_wldev *dev)
2018 if (phy->type == B43legacy_PHYTYPE_G) { 2018 if (phy->type == B43legacy_PHYTYPE_G) {
2019 if (is_bcm_board_vendor(dev) && 2019 if (is_bcm_board_vendor(dev) &&
2020 dev->dev->bus->boardinfo.type == 0x421 && 2020 dev->dev->bus->boardinfo.type == 0x421 &&
2021 dev->dev->bus->boardinfo.rev >= 30) 2021 dev->dev->bus->sprom.board_rev >= 30)
2022 att = 3; 2022 att = 3;
2023 else if (is_bcm_board_vendor(dev) && 2023 else if (is_bcm_board_vendor(dev) &&
2024 dev->dev->bus->boardinfo.type == 2024 dev->dev->bus->boardinfo.type ==
@@ -2052,9 +2052,9 @@ u16 b43legacy_default_radio_attenuation(struct b43legacy_wldev *dev)
2052 } 2052 }
2053 if (is_bcm_board_vendor(dev) && 2053 if (is_bcm_board_vendor(dev) &&
2054 dev->dev->bus->boardinfo.type == 0x421) { 2054 dev->dev->bus->boardinfo.type == 0x421) {
2055 if (dev->dev->bus->boardinfo.rev < 0x43) 2055 if (dev->dev->bus->sprom.board_rev < 0x43)
2056 att = 2; 2056 att = 2;
2057 else if (dev->dev->bus->boardinfo.rev < 0x51) 2057 else if (dev->dev->bus->sprom.board_rev < 0x51)
2058 att = 3; 2058 att = 3;
2059 } 2059 }
2060 if (att == 0xFFFF) 2060 if (att == 0xFFFF)
diff --git a/drivers/ssb/pci.c b/drivers/ssb/pci.c
index ed4124469a3a..113208e0ae33 100644
--- a/drivers/ssb/pci.c
+++ b/drivers/ssb/pci.c
@@ -784,7 +784,6 @@ static void ssb_pci_get_boardinfo(struct ssb_bus *bus,
784{ 784{
785 bi->vendor = bus->host_pci->subsystem_vendor; 785 bi->vendor = bus->host_pci->subsystem_vendor;
786 bi->type = bus->host_pci->subsystem_device; 786 bi->type = bus->host_pci->subsystem_device;
787 bi->rev = bus->host_pci->revision;
788} 787}
789 788
790int ssb_pci_get_invariants(struct ssb_bus *bus, 789int ssb_pci_get_invariants(struct ssb_bus *bus,
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h
index d27683180025..bc14bd738ade 100644
--- a/include/linux/ssb/ssb.h
+++ b/include/linux/ssb/ssb.h
@@ -188,7 +188,6 @@ struct ssb_sprom {
188struct ssb_boardinfo { 188struct ssb_boardinfo {
189 u16 vendor; 189 u16 vendor;
190 u16 type; 190 u16 type;
191 u8 rev;
192}; 191};
193 192
194 193