]> Git Repo - linux.git/commitdiff
brcmfmac: fix regression in parsing NVRAM for multiple devices
authorRafał Miłecki <[email protected]>
Sun, 22 Jul 2018 21:46:25 +0000 (23:46 +0200)
committerKalle Valo <[email protected]>
Wed, 25 Jul 2018 07:30:36 +0000 (10:30 +0300)
NVRAM is designed to work with Broadcom's SDK Linux kernel which fakes
PCI domain 0 for all internal MMIO devices. Since official Linux kernel
uses platform devices for that purpose there is a mismatch in numbering
PCI domains.

There used to be a fix for that problem but it was accidentally dropped
during the last firmware loading rework. That resulted in brcmfmac not
being able to extract device specific NVRAM content and all kind of
calibration problems.

Reported-by: Aditya Xavier <[email protected]>
Fixes: 2baa3aaee27f ("brcmfmac: introduce brcmf_fw_alloc_request() function")
Cc: [email protected] # v4.17+
Signed-off-by: Rafał Miłecki <[email protected]>
Acked-by: Arend van Spriel <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c

index 45928b5b8d97c3217d8f0d13206c51e64f448a1c..4fffa6988087b8bca0d6c834bb62a75d4a422c02 100644 (file)
@@ -1785,7 +1785,8 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
        fwreq->items[BRCMF_PCIE_FW_CODE].type = BRCMF_FW_TYPE_BINARY;
        fwreq->items[BRCMF_PCIE_FW_NVRAM].type = BRCMF_FW_TYPE_NVRAM;
        fwreq->items[BRCMF_PCIE_FW_NVRAM].flags = BRCMF_FW_REQF_OPTIONAL;
-       fwreq->domain_nr = pci_domain_nr(devinfo->pdev->bus);
+       /* NVRAM reserves PCI domain 0 for Broadcom's SDK faked bus */
+       fwreq->domain_nr = pci_domain_nr(devinfo->pdev->bus) + 1;
        fwreq->bus_nr = devinfo->pdev->bus->number;
 
        return fwreq;
This page took 0.064161 seconds and 4 git commands to generate.