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>
This commit is contained in:
parent
12d9568333
commit
5a20ef3db2
|
@ -115,8 +115,6 @@ static int bcm47xx_get_invariants(struct ssb_bus *bus,
|
|||
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);
|
||||
|
||||
bcm47xx_fill_sprom(&iv->sprom, NULL);
|
||||
|
||||
|
|
|
@ -210,7 +210,7 @@ struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev)
|
|||
|
||||
dev->board_vendor = sdev->bus->boardinfo.vendor;
|
||||
dev->board_type = sdev->bus->boardinfo.type;
|
||||
dev->board_rev = sdev->bus->boardinfo.rev;
|
||||
dev->board_rev = sdev->bus->sprom.board_rev;
|
||||
|
||||
dev->chip_id = sdev->bus->chip_id;
|
||||
dev->chip_rev = sdev->bus->chip_rev;
|
||||
|
|
|
@ -5243,10 +5243,10 @@ static void b43_sprom_fixup(struct ssb_bus *bus)
|
|||
|
||||
/* boardflags workarounds */
|
||||
if (bus->boardinfo.vendor == SSB_BOARDVENDOR_DELL &&
|
||||
bus->chip_id == 0x4301 && bus->boardinfo.rev == 0x74)
|
||||
bus->chip_id == 0x4301 && bus->sprom.board_rev == 0x74)
|
||||
bus->sprom.boardflags_lo |= B43_BFL_BTCOEXIST;
|
||||
if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE &&
|
||||
bus->boardinfo.type == 0x4E && bus->boardinfo.rev > 0x40)
|
||||
bus->boardinfo.type == 0x4E && bus->sprom.board_rev > 0x40)
|
||||
bus->sprom.boardflags_lo |= B43_BFL_PACTRL;
|
||||
if (bus->bustype == SSB_BUSTYPE_PCI) {
|
||||
pdev = bus->host_pci;
|
||||
|
|
|
@ -3779,7 +3779,7 @@ static void b43legacy_sprom_fixup(struct ssb_bus *bus)
|
|||
/* boardflags workarounds */
|
||||
if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE &&
|
||||
bus->boardinfo.type == 0x4E &&
|
||||
bus->boardinfo.rev > 0x40)
|
||||
bus->sprom.board_rev > 0x40)
|
||||
bus->sprom.boardflags_lo |= B43legacy_BFL_PACTRL;
|
||||
}
|
||||
|
||||
|
|
|
@ -408,7 +408,7 @@ static void b43legacy_phy_setupg(struct b43legacy_wldev *dev)
|
|||
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
(dev->dev->bus->boardinfo.type == 0x0416) &&
|
||||
(dev->dev->bus->boardinfo.rev == 0x0017))
|
||||
(dev->dev->bus->sprom.board_rev == 0x0017))
|
||||
return;
|
||||
|
||||
b43legacy_ilt_write(dev, 0x5001, 0x0002);
|
||||
|
@ -424,7 +424,7 @@ static void b43legacy_phy_setupg(struct b43legacy_wldev *dev)
|
|||
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
(dev->dev->bus->boardinfo.type == 0x0416) &&
|
||||
(dev->dev->bus->boardinfo.rev == 0x0017))
|
||||
(dev->dev->bus->sprom.board_rev == 0x0017))
|
||||
return;
|
||||
|
||||
b43legacy_ilt_write(dev, 0x0401, 0x0002);
|
||||
|
|
|
@ -1998,7 +1998,7 @@ u16 b43legacy_default_radio_attenuation(struct b43legacy_wldev *dev)
|
|||
if (phy->type == B43legacy_PHYTYPE_G) {
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x421 &&
|
||||
dev->dev->bus->boardinfo.rev >= 30)
|
||||
dev->dev->bus->sprom.board_rev >= 30)
|
||||
att = 3;
|
||||
else if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x416)
|
||||
|
@ -2008,7 +2008,7 @@ u16 b43legacy_default_radio_attenuation(struct b43legacy_wldev *dev)
|
|||
} else {
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x421 &&
|
||||
dev->dev->bus->boardinfo.rev >= 30)
|
||||
dev->dev->bus->sprom.board_rev >= 30)
|
||||
att = 7;
|
||||
else
|
||||
att = 6;
|
||||
|
@ -2018,7 +2018,7 @@ u16 b43legacy_default_radio_attenuation(struct b43legacy_wldev *dev)
|
|||
if (phy->type == B43legacy_PHYTYPE_G) {
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x421 &&
|
||||
dev->dev->bus->boardinfo.rev >= 30)
|
||||
dev->dev->bus->sprom.board_rev >= 30)
|
||||
att = 3;
|
||||
else if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type ==
|
||||
|
@ -2052,9 +2052,9 @@ u16 b43legacy_default_radio_attenuation(struct b43legacy_wldev *dev)
|
|||
}
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x421) {
|
||||
if (dev->dev->bus->boardinfo.rev < 0x43)
|
||||
if (dev->dev->bus->sprom.board_rev < 0x43)
|
||||
att = 2;
|
||||
else if (dev->dev->bus->boardinfo.rev < 0x51)
|
||||
else if (dev->dev->bus->sprom.board_rev < 0x51)
|
||||
att = 3;
|
||||
}
|
||||
if (att == 0xFFFF)
|
||||
|
|
|
@ -784,7 +784,6 @@ static void ssb_pci_get_boardinfo(struct ssb_bus *bus,
|
|||
{
|
||||
bi->vendor = bus->host_pci->subsystem_vendor;
|
||||
bi->type = bus->host_pci->subsystem_device;
|
||||
bi->rev = bus->host_pci->revision;
|
||||
}
|
||||
|
||||
int ssb_pci_get_invariants(struct ssb_bus *bus,
|
||||
|
|
|
@ -188,7 +188,6 @@ struct ssb_sprom {
|
|||
struct ssb_boardinfo {
|
||||
u16 vendor;
|
||||
u16 type;
|
||||
u8 rev;
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue