88 lines
3.8 KiB
Diff
88 lines
3.8 KiB
Diff
From 3a96d5ede49bb9259416a5c21b5e1a1ad5cbb2e1 Mon Sep 17 00:00:00 2001
|
|
From: Hans de Goede <hdegoede@redhat.com>
|
|
Date: Fri, 28 Sep 2018 19:23:31 +0200
|
|
Subject: [PATCH 4/5] brcmfmac: Set board_type used for nvram file selection to
|
|
machine-compatible
|
|
|
|
For of/devicetree using machines, set the board_type used for nvram file
|
|
selection to the first string listed in the top-level's node compatible
|
|
string, aka the machine-compatible as used by of_machine_is_compatible().
|
|
|
|
The board_type setting is used to load the board-specific nvram file with
|
|
a board-specific name so that we can ship files for each supported board
|
|
in linux-firmware.
|
|
|
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
---
|
|
.../net/wireless/broadcom/brcm80211/brcmfmac/common.h | 1 +
|
|
drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c | 11 ++++++++++-
|
|
.../net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 1 +
|
|
.../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 +
|
|
4 files changed, 13 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
|
index a34642cb4d2f..e63a273642e9 100644
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.h
|
|
@@ -59,6 +59,7 @@ struct brcmf_mp_device {
|
|
bool iapp;
|
|
bool ignore_probe_fail;
|
|
struct brcmfmac_pd_cc *country_codes;
|
|
+ const char *board_type;
|
|
union {
|
|
struct brcmfmac_sdio_pd sdio;
|
|
} bus;
|
|
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
|
index aee6e5937c41..84e3373289eb 100644
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/of.c
|
|
@@ -27,11 +27,20 @@ void brcmf_of_probe(struct device *dev, enum brcmf_bus_type bus_type,
|
|
struct brcmf_mp_device *settings)
|
|
{
|
|
struct brcmfmac_sdio_pd *sdio = &settings->bus.sdio;
|
|
- struct device_node *np = dev->of_node;
|
|
+ struct device_node *root, *np = dev->of_node;
|
|
+ struct property *prop;
|
|
int irq;
|
|
u32 irqf;
|
|
u32 val;
|
|
|
|
+ /* Set board-type to the first string of the machine compatible prop */
|
|
+ root = of_find_node_by_path("/");
|
|
+ if (root) {
|
|
+ prop = of_find_property(root, "compatible", NULL);
|
|
+ settings->board_type = of_prop_next_string(prop, NULL);
|
|
+ of_node_put(root);
|
|
+ }
|
|
+
|
|
if (!np || bus_type != BRCMF_BUSTYPE_SDIO ||
|
|
!of_device_is_compatible(np, "brcm,bcm4329-fmac"))
|
|
return;
|
|
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
|
index 4fffa6988087..b12f3e0ee69c 100644
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
|
|
@@ -1785,6 +1785,7 @@ 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->board_type = devinfo->settings->board_type;
|
|
/* 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;
|
|
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
index a907d7b065fa..3dbbbb117563 100644
|
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
@@ -4177,6 +4177,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
|
|
|
|
fwreq->items[BRCMF_SDIO_FW_CODE].type = BRCMF_FW_TYPE_BINARY;
|
|
fwreq->items[BRCMF_SDIO_FW_NVRAM].type = BRCMF_FW_TYPE_NVRAM;
|
|
+ fwreq->board_type = bus->sdiodev->settings->board_type;
|
|
|
|
return fwreq;
|
|
}
|
|
--
|
|
2.19.0
|
|
|