42 lines
1.8 KiB
Diff
42 lines
1.8 KiB
Diff
|
From 299b6365a3b7cf7f5ea1c945a420e9ee4841d6f7 Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||
|
Date: Sun, 22 Jul 2018 23:46:25 +0200
|
||
|
Subject: [PATCH] brcmfmac: fix regression in parsing NVRAM for multiple
|
||
|
devices
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
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 <adityaxavier@gmail.com>
|
||
|
Fixes: 2baa3aaee27f ("brcmfmac: introduce brcmf_fw_alloc_request() function")
|
||
|
Cc: stable@vger.kernel.org # v4.17+
|
||
|
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||
|
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
||
|
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||
|
---
|
||
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 3 ++-
|
||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||
|
|
||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
||
|
@@ -1785,7 +1785,8 @@ brcmf_pcie_prepare_fw_request(struct brc
|
||
|
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;
|