kernel 5.15.13, update asahi patchset: txcap support

This commit is contained in:
Redecorating
2022-01-06 18:29:53 +11:00
parent 62f304f30b
commit 8810ec72c1
34 changed files with 820 additions and 184 deletions
@@ -1,7 +1,7 @@
From 3f43bc112ea442739258e2c6b143408c7c45e2e9 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 19:32:16 +0900
Subject: [PATCH 01/30] brcmfmac: pcie: Declare missing firmware files in
Subject: [PATCH 01/34] brcmfmac: pcie: Declare missing firmware files in
pcie.c
Move one of the declarations from sdio.c to pcie.c, since it makes no
@@ -1,7 +1,7 @@
From 59c61aa5ad2e12fdbccb5712d35c203cf9079230 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Sat, 18 Dec 2021 20:38:34 +0900
Subject: [PATCH 02/30] brcmfmac: firmware: Support having multiple alt paths
Subject: [PATCH 02/34] brcmfmac: firmware: Support having multiple alt paths
Apple platforms have firmware and config files identified with multiple
dimensions. We want to be able to find the most specific firmware
@@ -1,7 +1,7 @@
From 637e3946944e25c98c8955ec2a84133b79afca4d Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Sat, 18 Dec 2021 20:52:04 +0900
Subject: [PATCH 03/30] brcmfmac: firmware: Handle per-board clm_blob files
Subject: [PATCH 03/34] brcmfmac: firmware: Handle per-board clm_blob files
Teach brcm_alt_fw_paths to correctly split off variable length
extensions, and enable alt firmware lookups for the CLM blob firmware
@@ -1,7 +1,7 @@
From 95cfbeaaac15e765969a5048c6815c83d59adeec Mon Sep 17 00:00:00 2001
From 10ae20866cddd7ba8421dfa331d617c36e1510f6 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:13:49 +0900
Subject: [PATCH 04/30] brcmfmac: pcie/sdio/usb: Get CLM blob via standard
Subject: [PATCH 04/34] brcmfmac: pcie/sdio/usb: Get CLM blob via standard
firmware mechanism
Now that the firmware fetcher can handle per-board CLM files, load the
@@ -12,16 +12,16 @@ This enables per-board CLM blobs, which are required on Apple platforms.
Signed-off-by: Hector Martin <marcan@marcan.st>
---
.../broadcom/brcm80211/brcmfmac/bus.h | 12 +++----
.../broadcom/brcm80211/brcmfmac/common.c | 12 ++-----
.../broadcom/brcm80211/brcmfmac/pcie.c | 32 +++++++++++--------
.../broadcom/brcm80211/brcmfmac/sdio.c | 29 +++++++++--------
.../broadcom/brcm80211/brcmfmac/sdio.h | 2 ++
.../broadcom/brcm80211/brcmfmac/usb.c | 22 +++----------
6 files changed, 47 insertions(+), 62 deletions(-)
.../broadcom/brcm80211/brcmfmac/bus.h | 19 ++++++---
.../broadcom/brcm80211/brcmfmac/common.c | 12 +-----
.../broadcom/brcm80211/brcmfmac/pcie.c | 39 ++++++++++++-------
.../broadcom/brcm80211/brcmfmac/sdio.c | 36 ++++++++++-------
.../broadcom/brcm80211/brcmfmac/sdio.h | 2 +
.../broadcom/brcm80211/brcmfmac/usb.c | 23 +++--------
6 files changed, 69 insertions(+), 62 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
index 3f5da3bb6..7880f77a4 100644
index 3f5da3bb6..b13af8f63 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
@@ -7,6 +7,8 @@
@@ -33,40 +33,54 @@ index 3f5da3bb6..7880f77a4 100644
/* IDs of the 6 default common rings of msgbuf protocol */
#define BRCMF_H2D_MSGRING_CONTROL_SUBMIT 0
@@ -60,7 +62,7 @@ struct brcmf_bus_dcmd {
@@ -34,6 +36,11 @@ enum brcmf_bus_protocol_type {
BRCMF_PROTO_MSGBUF
};
+/* Firmware blobs that may be available */
+enum brcmf_blob_type {
+ BRCMF_BLOB_CLM,
+};
+
struct brcmf_mp_device;
struct brcmf_bus_dcmd {
@@ -60,7 +67,7 @@ struct brcmf_bus_dcmd {
* @wowl_config: specify if dongle is configured for wowl when going to suspend
* @get_ramsize: obtain size of device memory.
* @get_memdump: obtain device memory dump in provided buffer.
- * @get_fwname: obtain firmware name.
+ * @get_clm: obtain CLM firmware blob.
+ * @get_blob: obtain a firmware blob.
*
* This structure provides an abstract interface towards the
* bus specific driver. For control messages to common driver
@@ -77,8 +79,7 @@ struct brcmf_bus_ops {
@@ -77,8 +84,8 @@ struct brcmf_bus_ops {
void (*wowl_config)(struct device *dev, bool enabled);
size_t (*get_ramsize)(struct device *dev);
int (*get_memdump)(struct device *dev, void *data, size_t len);
- int (*get_fwname)(struct device *dev, const char *ext,
- unsigned char *fw_name);
+ int (*get_clm)(struct device *dev, const struct firmware **fw);
+ int (*get_blob)(struct device *dev, const struct firmware **fw,
+ enum brcmf_blob_type type);
void (*debugfs_create)(struct device *dev);
int (*reset)(struct device *dev);
};
@@ -220,10 +221,9 @@ int brcmf_bus_get_memdump(struct brcmf_bus *bus, void *data, size_t len)
@@ -220,10 +227,10 @@ int brcmf_bus_get_memdump(struct brcmf_bus *bus, void *data, size_t len)
}
static inline
-int brcmf_bus_get_fwname(struct brcmf_bus *bus, const char *ext,
- unsigned char *fw_name)
+int brcmf_bus_get_clm(struct brcmf_bus *bus, const struct firmware **fw)
+int brcmf_bus_get_blob(struct brcmf_bus *bus, const struct firmware **fw,
+ enum brcmf_blob_type type)
{
- return bus->ops->get_fwname(bus->dev, ext, fw_name);
+ return bus->ops->get_clm(bus->dev, fw);
+ return bus->ops->get_blob(bus->dev, fw, type);
}
static inline
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
index e3758bd86..ec4cb7050 100644
index e3758bd86..b8ed85112 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
@@ -123,7 +123,6 @@ static int brcmf_c_process_clm_blob(struct brcmf_if *ifp)
@@ -90,13 +104,13 @@ index e3758bd86..ec4cb7050 100644
-
- err = firmware_request_nowarn(&clm, clm_name, bus->dev);
- if (err) {
+ err = brcmf_bus_get_clm(bus, &clm);
+ err = brcmf_bus_get_blob(bus, &clm, BRCMF_BLOB_CLM);
+ if (err || !clm) {
brcmf_info("no clm_blob available (err=%d), device may have limited channels available\n",
err);
return 0;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index aed49416c..ea8776fd2 100644
index aed49416c..ab0503c6f 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -65,6 +65,7 @@ MODULE_FIRMWARE(BRCMF_FW_DEFAULT_PATH "brcmfmac*-pcie.*.txt");
@@ -116,13 +130,14 @@ index aed49416c..ea8776fd2 100644
void __iomem *regs;
void __iomem *tcm;
u32 ram_base;
@@ -1408,23 +1411,18 @@ static int brcmf_pcie_get_memdump(struct device *dev, void *data, size_t len)
@@ -1408,23 +1411,25 @@ static int brcmf_pcie_get_memdump(struct device *dev, void *data, size_t len)
return 0;
}
-static
-int brcmf_pcie_get_fwname(struct device *dev, const char *ext, u8 *fw_name)
+static int brcmf_pcie_get_clm(struct device *dev, const struct firmware **fw)
+static int brcmf_pcie_get_blob(struct device *dev, const struct firmware **fw,
+ enum brcmf_blob_type type)
{
struct brcmf_bus *bus_if = dev_get_drvdata(dev);
- struct brcmf_fw_request *fwreq;
@@ -138,26 +153,32 @@ index aed49416c..ea8776fd2 100644
- fwnames, ARRAY_SIZE(fwnames));
- if (!fwreq)
- return -ENOMEM;
+ if (!devinfo->clm_fw) {
+ return -ENOENT;
+ }
- kfree(fwreq);
+ switch (type) {
+ case BRCMF_BLOB_CLM:
+ *fw = devinfo->clm_fw;
+ devinfo->clm_fw = NULL;
+ break;
+ default:
+ return -ENOENT;
+ }
+
+ if (!*fw)
+ return -ENOENT;
- kfree(fwreq);
return 0;
}
@@ -1470,7 +1468,7 @@ static const struct brcmf_bus_ops brcmf_pcie_bus_ops = {
@@ -1470,7 +1475,7 @@ static const struct brcmf_bus_ops brcmf_pcie_bus_ops = {
.wowl_config = brcmf_pcie_wowl_config,
.get_ramsize = brcmf_pcie_get_ramsize,
.get_memdump = brcmf_pcie_get_memdump,
- .get_fwname = brcmf_pcie_get_fwname,
+ .get_clm = brcmf_pcie_get_clm,
+ .get_blob = brcmf_pcie_get_blob,
.reset = brcmf_pcie_reset,
};
@@ -1755,6 +1753,7 @@ static const struct brcmf_buscore_ops brcmf_pcie_buscore_ops = {
@@ -1755,6 +1760,7 @@ static const struct brcmf_buscore_ops brcmf_pcie_buscore_ops = {
#define BRCMF_PCIE_FW_CODE 0
#define BRCMF_PCIE_FW_NVRAM 1
@@ -165,7 +186,7 @@ index aed49416c..ea8776fd2 100644
static void brcmf_pcie_setup(struct device *dev, int ret,
struct brcmf_fw_request *fwreq)
@@ -1779,6 +1778,7 @@ static void brcmf_pcie_setup(struct device *dev, int ret,
@@ -1779,6 +1785,7 @@ static void brcmf_pcie_setup(struct device *dev, int ret,
fw = fwreq->items[BRCMF_PCIE_FW_CODE].binary;
nvram = fwreq->items[BRCMF_PCIE_FW_NVRAM].nv_data.data;
nvram_len = fwreq->items[BRCMF_PCIE_FW_NVRAM].nv_data.len;
@@ -173,7 +194,7 @@ index aed49416c..ea8776fd2 100644
kfree(fwreq);
ret = brcmf_chip_get_raminfo(devinfo->ci);
@@ -1855,6 +1855,7 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
@@ -1855,6 +1862,7 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
struct brcmf_fw_name fwnames[] = {
{ ".bin", devinfo->fw_name },
{ ".txt", devinfo->nvram_name },
@@ -181,7 +202,7 @@ index aed49416c..ea8776fd2 100644
};
fwreq = brcmf_fw_alloc_request(devinfo->ci->chip, devinfo->ci->chiprev,
@@ -1867,6 +1868,8 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
@@ -1867,6 +1875,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;
@@ -190,7 +211,7 @@ index aed49416c..ea8776fd2 100644
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;
@@ -2005,6 +2008,7 @@ brcmf_pcie_remove(struct pci_dev *pdev)
@@ -2005,6 +2015,7 @@ brcmf_pcie_remove(struct pci_dev *pdev)
brcmf_pcie_release_ringbuffers(devinfo);
brcmf_pcie_reset_device(devinfo);
brcmf_pcie_release_resource(devinfo);
@@ -199,16 +220,17 @@ index aed49416c..ea8776fd2 100644
if (devinfo->ci)
brcmf_chip_detach(devinfo->ci);
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 5d156e591..593ddd237 100644
index 5d156e591..7466e6fd6 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -4129,23 +4129,17 @@ brcmf_sdio_watchdog(struct timer_list *t)
@@ -4129,23 +4129,24 @@ brcmf_sdio_watchdog(struct timer_list *t)
}
}
-static
-int brcmf_sdio_get_fwname(struct device *dev, const char *ext, u8 *fw_name)
+static int brcmf_sdio_get_clm(struct device *dev, const struct firmware **fw)
+static int brcmf_sdio_get_blob(struct device *dev, const struct firmware **fw,
+ enum brcmf_blob_type type)
{
struct brcmf_bus *bus_if = dev_get_drvdata(dev);
- struct brcmf_fw_request *fwreq;
@@ -223,22 +245,28 @@ index 5d156e591..593ddd237 100644
- fwnames, ARRAY_SIZE(fwnames));
- if (!fwreq)
- return -ENOMEM;
+ if (!sdiodev->clm_fw) {
+ return -ENOENT;
+ }
- kfree(fwreq);
+ switch (type) {
+ case BRCMF_BLOB_CLM:
+ *fw = sdiodev->clm_fw;
+ sdiodev->clm_fw = NULL;
+ break;
+ default:
+ return -ENOENT;
+ }
+
+ if (!*fw)
+ return -ENOENT;
- kfree(fwreq);
return 0;
}
@@ -4188,13 +4182,14 @@ static const struct brcmf_bus_ops brcmf_sdio_bus_ops = {
@@ -4188,13 +4189,14 @@ static const struct brcmf_bus_ops brcmf_sdio_bus_ops = {
.wowl_config = brcmf_sdio_wowl_config,
.get_ramsize = brcmf_sdio_bus_get_ramsize,
.get_memdump = brcmf_sdio_bus_get_memdump,
- .get_fwname = brcmf_sdio_get_fwname,
+ .get_clm = brcmf_sdio_get_clm,
+ .get_blob = brcmf_sdio_get_blob,
.debugfs_create = brcmf_sdio_debugfs_create,
.reset = brcmf_sdio_bus_reset
};
@@ -249,7 +277,7 @@ index 5d156e591..593ddd237 100644
static void brcmf_sdio_firmware_callback(struct device *dev, int err,
struct brcmf_fw_request *fwreq)
@@ -4217,6 +4212,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
@@ -4217,6 +4219,7 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err,
code = fwreq->items[BRCMF_SDIO_FW_CODE].binary;
nvram = fwreq->items[BRCMF_SDIO_FW_NVRAM].nv_data.data;
nvram_len = fwreq->items[BRCMF_SDIO_FW_NVRAM].nv_data.len;
@@ -257,7 +285,7 @@ index 5d156e591..593ddd237 100644
kfree(fwreq);
/* try to download image and nvram to the dongle */
@@ -4415,6 +4411,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
@@ -4415,6 +4418,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
struct brcmf_fw_name fwnames[] = {
{ ".bin", bus->sdiodev->fw_name },
{ ".txt", bus->sdiodev->nvram_name },
@@ -265,7 +293,7 @@ index 5d156e591..593ddd237 100644
};
fwreq = brcmf_fw_alloc_request(bus->ci->chip, bus->ci->chiprev,
@@ -4426,6 +4423,8 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
@@ -4426,6 +4430,8 @@ 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;
@@ -274,7 +302,7 @@ index 5d156e591..593ddd237 100644
fwreq->board_type = bus->sdiodev->settings->board_type;
return fwreq;
@@ -4582,6 +4581,8 @@ void brcmf_sdio_remove(struct brcmf_sdio *bus)
@@ -4582,6 +4588,8 @@ void brcmf_sdio_remove(struct brcmf_sdio *bus)
if (bus->sdiodev->settings)
brcmf_release_module_param(bus->sdiodev->settings);
@@ -300,16 +328,17 @@ index 15d2c02fa..7b74c295e 100644
/* sdio core registers */
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
index 9fb68c2dc..b8a8bf774 100644
index 9fb68c2dc..85e18fb9c 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
@@ -1154,24 +1154,10 @@ struct brcmf_usbdev *brcmf_usb_attach(struct brcmf_usbdev_info *devinfo,
@@ -1154,24 +1154,11 @@ struct brcmf_usbdev *brcmf_usb_attach(struct brcmf_usbdev_info *devinfo,
return NULL;
}
-static
-int brcmf_usb_get_fwname(struct device *dev, const char *ext, u8 *fw_name)
+static int brcmf_usb_get_clm(struct device *dev, const struct firmware **fw)
+static int brcmf_usb_get_blob(struct device *dev, const struct firmware **fw,
+ enum brcmf_blob_type type)
{
- struct brcmf_bus *bus = dev_get_drvdata(dev);
- struct brcmf_fw_request *fwreq;
@@ -326,17 +355,17 @@ index 9fb68c2dc..b8a8bf774 100644
-
- kfree(fwreq);
- return 0;
+ /* No CLM blobs for USB devices... */
+ /* No blobs for USB devices... */
+ return -ENOENT;
}
static const struct brcmf_bus_ops brcmf_usb_bus_ops = {
@@ -1180,7 +1166,7 @@ static const struct brcmf_bus_ops brcmf_usb_bus_ops = {
@@ -1180,7 +1167,7 @@ static const struct brcmf_bus_ops brcmf_usb_bus_ops = {
.txdata = brcmf_usb_tx,
.txctl = brcmf_usb_tx_ctlpkt,
.rxctl = brcmf_usb_rx_ctlpkt,
- .get_fwname = brcmf_usb_get_fwname,
+ .get_clm = brcmf_usb_get_clm,
+ .get_blob = brcmf_usb_get_blob,
};
#define BRCMF_USB_FW_CODE 0
@@ -1,7 +1,7 @@
From f7df4e463c323eaf303ca4d1a6721c8458a8cdd1 Mon Sep 17 00:00:00 2001
From 880d3f98041005210a332974c3b19e0116e14053 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:38:37 +0900
Subject: [PATCH 05/30] brcmfmac: firmware: Support passing in multiple
Subject: [PATCH 05/34] brcmfmac: firmware: Support passing in multiple
board_types
In order to make use of the multiple alt_path functionality, change
@@ -94,10 +94,10 @@ index e290dec9c..d94a1d5be 100644
};
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index ea8776fd2..cdfb32d6f 100644
index ab0503c6f..0e4ba33fb 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -1870,11 +1870,16 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
@@ -1877,11 +1877,16 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
fwreq->items[BRCMF_PCIE_FW_NVRAM].flags = BRCMF_FW_REQF_OPTIONAL;
fwreq->items[BRCMF_PCIE_FW_CLM].type = BRCMF_FW_TYPE_BINARY;
fwreq->items[BRCMF_PCIE_FW_CLM].flags = BRCMF_FW_REQF_OPTIONAL;
@@ -116,10 +116,10 @@ index ea8776fd2..cdfb32d6f 100644
}
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index 593ddd237..637aef30c 100644
index 7466e6fd6..32f457bf0 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -4425,7 +4425,9 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
@@ -4432,7 +4432,9 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus)
fwreq->items[BRCMF_SDIO_FW_NVRAM].type = BRCMF_FW_TYPE_NVRAM;
fwreq->items[BRCMF_SDIO_FW_CLM].type = BRCMF_FW_TYPE_BINARY;
fwreq->items[BRCMF_SDIO_FW_CLM].flags = BRCMF_FW_REQF_OPTIONAL;
@@ -1,7 +1,7 @@
From 5e341c53e88383a998f3618e999762f660a26c02 Mon Sep 17 00:00:00 2001
From 18b840ed5dc7084d4ba83345a63a7f5f33cec013 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:26:34 +0900
Subject: [PATCH 06/30] brcmfmac: pcie: Read Apple OTP information
Subject: [PATCH 06/34] brcmfmac: pcie: Read Apple OTP information
On Apple platforms, the One Time Programmable ROM in the Broadcom chips
contains information about the specific board design (module, vendor,
@@ -18,7 +18,7 @@ Signed-off-by: Hector Martin <marcan@marcan.st>
2 files changed, 222 insertions(+)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index cdfb32d6f..3cc79d912 100644
index 0e4ba33fb..0f19fc9b1 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -255,6 +255,15 @@ struct brcmf_pcie_core_info {
@@ -70,7 +70,7 @@ index cdfb32d6f..3cc79d912 100644
#define WRITECC32(devinfo, reg, value) brcmf_pcie_write_reg32(devinfo, \
CHIPCREGOFFS(reg), value)
@@ -1751,6 +1772,200 @@ static const struct brcmf_buscore_ops brcmf_pcie_buscore_ops = {
@@ -1758,6 +1779,200 @@ static const struct brcmf_buscore_ops brcmf_pcie_buscore_ops = {
.write32 = brcmf_pcie_buscore_write32,
};
@@ -271,7 +271,7 @@ index cdfb32d6f..3cc79d912 100644
#define BRCMF_PCIE_FW_CODE 0
#define BRCMF_PCIE_FW_NVRAM 1
#define BRCMF_PCIE_FW_CLM 2
@@ -1951,6 +2166,12 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
@@ -1958,6 +2173,12 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
if (ret)
goto fail_bus;
@@ -1,7 +1,7 @@
From 5a9d560acd1ed5a2b1d16c124aba6ff3f2205483 Mon Sep 17 00:00:00 2001
From c42886eecdf0752c2525bb9f24a4a1db862fdd18 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:27:19 +0900
Subject: [PATCH 07/30] brcmfmac: of: Fetch Apple properties
Subject: [PATCH 07/34] brcmfmac: of: Fetch Apple properties
On Apple ARM64 platforms, firmware selection requires two properties
that come from system firmware: the module-instance (aka "island", a
@@ -1,7 +1,7 @@
From 9d6841d0ecb677e20436d60f6d82fb006613972b Mon Sep 17 00:00:00 2001
From 2ea0163cdf39c28e923961180b8dd158467a3751 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:45:21 +0900
Subject: [PATCH 08/30] brcmfmac: pcie: Perform firmware selection for Apple
Subject: [PATCH 08/34] brcmfmac: pcie: Perform firmware selection for Apple
platforms
On Apple platforms, firmware selection uses the following elements:
@@ -77,10 +77,10 @@ Signed-off-by: Hector Martin <marcan@marcan.st>
1 file changed, 63 insertions(+), 5 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index 3cc79d912..42b3c17ba 100644
index 0f19fc9b1..4f14b261a 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -2089,11 +2089,69 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
@@ -2096,11 +2096,69 @@ brcmf_pcie_prepare_fw_request(struct brcmf_pciedev_info *devinfo)
fwreq->domain_nr = pci_domain_nr(devinfo->pdev->bus) + 1;
fwreq->bus_nr = devinfo->pdev->bus->number;
@@ -1,7 +1,7 @@
From 3b481da6295a389716c2d8fcfb4b5b87a0ef4103 Mon Sep 17 00:00:00 2001
From dd4b327a30697ddad3819ca145d4ce319b7cf528 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Thu, 23 Dec 2021 22:32:08 +0900
Subject: [PATCH 09/30] brcmfmac: firmware: Allow platform to override macaddr
Subject: [PATCH 09/34] brcmfmac: firmware: Allow platform to override macaddr
On Device Tree platforms, it is customary to be able to set the MAC
address via the Device Tree, as it is often stored in system firmware.
@@ -1,7 +1,7 @@
From 037883f3157a508078ffcaf336475645fa373f6a Mon Sep 17 00:00:00 2001
From 531b129464e6f498270c8283f547d65fad32b1fb Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:39:04 +0900
Subject: [PATCH 10/30] brcmfmac: msgbuf: Increase RX ring sizes to 1024
Subject: [PATCH 10/34] brcmfmac: msgbuf: Increase RX ring sizes to 1024
Newer chips used on Apple platforms have more than max_rxbufpost greater
than 512, which causes warnings when brcmf_msgbuf_rxbuf_data_fill tries
@@ -1,7 +1,7 @@
From caea8fe9c9524950fedd3b317a05556dca105403 Mon Sep 17 00:00:00 2001
From 60efee55336f83bb968713686bfd2c90d9b23733 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:44:00 +0900
Subject: [PATCH 11/30] brcmfmac: pcie: Fix crashes due to early IRQs
Subject: [PATCH 11/34] brcmfmac: pcie: Fix crashes due to early IRQs
The driver was enabling IRQs before the message processing was
initialized. This could cause IRQs to come in too early and crash the
@@ -15,7 +15,7 @@ Signed-off-by: Hector Martin <marcan@marcan.st>
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index 42b3c17ba..a4b49d175 100644
index 4f14b261a..7190b7b80 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -1380,6 +1380,20 @@ static void brcmf_pcie_down(struct device *dev)
@@ -39,7 +39,7 @@ index 42b3c17ba..a4b49d175 100644
static int brcmf_pcie_tx(struct device *dev, struct sk_buff *skb)
{
return 0;
@@ -1482,6 +1496,7 @@ static int brcmf_pcie_reset(struct device *dev)
@@ -1489,6 +1503,7 @@ static int brcmf_pcie_reset(struct device *dev)
}
static const struct brcmf_bus_ops brcmf_pcie_bus_ops = {
@@ -47,7 +47,7 @@ index 42b3c17ba..a4b49d175 100644
.txdata = brcmf_pcie_tx,
.stop = brcmf_pcie_down,
.txctl = brcmf_pcie_tx_ctlpkt,
@@ -2048,9 +2063,6 @@ static void brcmf_pcie_setup(struct device *dev, int ret,
@@ -2055,9 +2070,6 @@ static void brcmf_pcie_setup(struct device *dev, int ret,
init_waitqueue_head(&devinfo->mbdata_resp_wait);
@@ -1,7 +1,7 @@
From fa24c7e164edae9afea03d4af6264e0151b42649 Mon Sep 17 00:00:00 2001
From 6de1197eadd384f977934fb85061db7108f0c86d Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:25:35 +0900
Subject: [PATCH 12/30] brcmfmac: pcie: Support PCIe core revisions >= 64
Subject: [PATCH 12/34] brcmfmac: pcie: Support PCIe core revisions >= 64
These newer PCIe core revisions include new sets of registers that must
be used instead of the legacy ones. Introduce a brcmf_pcie_reginfo to
@@ -14,7 +14,7 @@ Signed-off-by: Hector Martin <marcan@marcan.st>
1 file changed, 107 insertions(+), 20 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index a4b49d175..4a6370efb 100644
index 7190b7b80..01c7b2703 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -117,6 +117,14 @@ static const struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = {
@@ -204,7 +204,7 @@ index a4b49d175..4a6370efb 100644
return 0;
}
@@ -1756,15 +1829,22 @@ static int brcmf_pcie_buscoreprep(void *ctx)
@@ -1763,15 +1836,22 @@ static int brcmf_pcie_buscoreprep(void *ctx)
static int brcmf_pcie_buscore_reset(void *ctx, struct brcmf_chip *chip)
{
struct brcmf_pciedev_info *devinfo = (struct brcmf_pciedev_info *)ctx;
@@ -231,7 +231,7 @@ index a4b49d175..4a6370efb 100644
return 0;
}
@@ -2176,6 +2256,7 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
@@ -2183,6 +2263,7 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
struct brcmf_pciedev_info *devinfo;
struct brcmf_pciedev *pcie_bus_dev;
struct brcmf_bus *bus;
@@ -239,7 +239,7 @@ index a4b49d175..4a6370efb 100644
brcmf_dbg(PCIE, "Enter %x:%x\n", pdev->vendor, pdev->device);
@@ -2194,6 +2275,12 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
@@ -2201,6 +2282,12 @@ brcmf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
goto fail;
}
@@ -252,7 +252,7 @@ index a4b49d175..4a6370efb 100644
pcie_bus_dev = kzalloc(sizeof(*pcie_bus_dev), GFP_KERNEL);
if (pcie_bus_dev == NULL) {
ret = -ENOMEM;
@@ -2362,7 +2449,7 @@ static int brcmf_pcie_pm_leave_D3(struct device *dev)
@@ -2369,7 +2456,7 @@ static int brcmf_pcie_pm_leave_D3(struct device *dev)
brcmf_dbg(PCIE, "Enter, dev=%p, bus=%p\n", dev, bus);
/* Check if device is still up and running, if so we are ready */
@@ -1,7 +1,7 @@
From 395b965fa51c7ad26284c6fefd7d05c3339bb24d Mon Sep 17 00:00:00 2001
From d37f0e2bd8a981c82aaec33c4916b216a245d87c Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:46:40 +0900
Subject: [PATCH 13/30] brcmfmac: pcie: Add IDs/properties for BCM4378
Subject: [PATCH 13/34] brcmfmac: pcie: Add IDs/properties for BCM4378
This chip is present on Apple M1 (t8103) platforms:
@@ -32,7 +32,7 @@ index 1ee49f9e3..56a6f4168 100644
brcmf_err("unknown chip: %s\n", ci->pub.name);
break;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index 4a6370efb..785090570 100644
index 01c7b2703..e1bc7e4a9 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -58,6 +58,7 @@ BRCMF_FW_DEF(4365C, "brcmfmac4365c-pcie");
@@ -51,7 +51,7 @@ index 4a6370efb..785090570 100644
};
#define BRCMF_PCIE_FW_UP_TIMEOUT 5000 /* msec */
@@ -2008,6 +2010,11 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
@@ -2015,6 +2017,11 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
int ret;
switch (devinfo->ci->chip) {
@@ -63,7 +63,7 @@ index 4a6370efb..785090570 100644
default:
/* OTP not supported on this chip */
return 0;
@@ -2515,6 +2522,7 @@ static const struct pci_device_id brcmf_pcie_devid_table[] = {
@@ -2522,6 +2529,7 @@ static const struct pci_device_id brcmf_pcie_devid_table[] = {
BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_2G_DEVICE_ID),
BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_5G_DEVICE_ID),
BRCMF_PCIE_DEVICE(BRCM_PCIE_4371_DEVICE_ID),
@@ -1,7 +1,7 @@
From d7efc0ae360df39dea3a843fb7bd57127652f728 Mon Sep 17 00:00:00 2001
From 599bfcd71c7c6b995db7a4453e03244d032b4317 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Thu, 23 Dec 2021 19:51:11 +0900
Subject: [PATCH 14/30] ACPI / property: Support strings in Apple _DSM props
Subject: [PATCH 14/34] ACPI / property: Support strings in Apple _DSM props
The Wi-Fi module in Apple machines has a "module-instance" device
property that specifies the platform type and is used for firmware
@@ -1,7 +1,7 @@
From 5aa741e9fbe7650a4018be84e6a3b60905625107 Mon Sep 17 00:00:00 2001
From ebdaee11be6e18ea1952a72a4a9ef80ca4228b7d Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Thu, 23 Dec 2021 19:51:36 +0900
Subject: [PATCH 15/30] brcmfmac: acpi: Add support for fetching Apple ACPI
Subject: [PATCH 15/34] brcmfmac: acpi: Add support for fetching Apple ACPI
properties
On DT platforms, the module-instance and antenna-sku-info properties
@@ -91,7 +91,7 @@ index 000000000..b70cd6970
+ }
+}
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
index ec4cb7050..0151d129c 100644
index b8ed85112..c84c48e49 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
@@ -437,6 +437,7 @@ struct brcmf_mp_device *brcmf_get_module_param(struct device *dev,
@@ -1,7 +1,7 @@
From 7d0f1f3475206fe2a37ee9e3180783d1c72daaaa Mon Sep 17 00:00:00 2001
From 3ecb57b6628211ef42a6267f17a1d5c5fcecd012 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Thu, 23 Dec 2021 19:30:17 +0900
Subject: [PATCH 16/30] brcmfmac: pcie: Provide a buffer of random bytes to the
Subject: [PATCH 16/34] brcmfmac: pcie: Provide a buffer of random bytes to the
device
Newer Apple firmwares on chipsets without a hardware RNG require the
@@ -18,7 +18,7 @@ Signed-off-by: Hector Martin <marcan@marcan.st>
1 file changed, 31 insertions(+)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index 785090570..bd55f5a30 100644
index e1bc7e4a9..b71952254 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -12,6 +12,7 @@
@@ -29,7 +29,7 @@ index 785090570..bd55f5a30 100644
#include <asm/unaligned.h>
#include <soc.h>
@@ -1660,6 +1661,13 @@ brcmf_pcie_init_share_ram_info(struct brcmf_pciedev_info *devinfo,
@@ -1667,6 +1668,13 @@ brcmf_pcie_init_share_ram_info(struct brcmf_pciedev_info *devinfo,
return 0;
}
@@ -43,7 +43,7 @@ index 785090570..bd55f5a30 100644
static int brcmf_pcie_download_fw_nvram(struct brcmf_pciedev_info *devinfo,
const struct firmware *fw, void *nvram,
@@ -1691,11 +1699,34 @@ static int brcmf_pcie_download_fw_nvram(struct brcmf_pciedev_info *devinfo,
@@ -1698,11 +1706,34 @@ static int brcmf_pcie_download_fw_nvram(struct brcmf_pciedev_info *devinfo,
brcmf_pcie_write_ram32(devinfo, devinfo->ci->ramsize - 4, 0);
if (nvram) {
@@ -1,7 +1,7 @@
From 255bc66f8a00a5d100d82ccfeb162a59312c9609 Mon Sep 17 00:00:00 2001
From e46046ce92838278ec265de9d662ca3ee0be8cef Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:50:15 +0900
Subject: [PATCH 17/30] brcmfmac: pcie: Add IDs/properties for BCM4355
Subject: [PATCH 17/34] brcmfmac: pcie: Add IDs/properties for BCM4355
This chip is present on at least these Apple T2 Macs:
@@ -9,7 +9,6 @@ This chip is present on at least these Apple T2 Macs:
* hawaii: MacBook Air 13" (True Tone, 2019)
Signed-off-by: Hector Martin <marcan@marcan.st>
[fixed otp base and words values]
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c | 1 +
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c | 8 ++++++++
@@ -29,7 +28,7 @@ index 56a6f4168..fdff7f5fc 100644
case CY_CC_4373_CHIP_ID:
return 0x160000;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index bd55f5a30..035656433 100644
index b71952254..6d95c704f 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -49,6 +49,7 @@ enum brcmf_pcie_state {
@@ -48,7 +47,7 @@ index bd55f5a30..035656433 100644
BRCMF_FW_ENTRY(BRCM_CC_4356_CHIP_ID, 0xFFFFFFFF, 4356),
BRCMF_FW_ENTRY(BRCM_CC_43567_CHIP_ID, 0xFFFFFFFF, 43570),
BRCMF_FW_ENTRY(BRCM_CC_43569_CHIP_ID, 0xFFFFFFFF, 43570),
@@ -2041,6 +2043,11 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
@@ -2048,6 +2050,11 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
int ret;
switch (devinfo->ci->chip) {
@@ -60,7 +59,7 @@ index bd55f5a30..035656433 100644
case BRCM_CC_4378_CHIP_ID:
coreid = BCMA_CORE_GCI;
base = 0x1120;
@@ -2535,6 +2542,7 @@ static const struct pci_device_id brcmf_pcie_devid_table[] = {
@@ -2542,6 +2549,7 @@ static const struct pci_device_id brcmf_pcie_devid_table[] = {
BRCMF_PCIE_DEVICE(BRCM_PCIE_4350_DEVICE_ID),
BRCMF_PCIE_DEVICE_SUB(0x4355, BRCM_PCIE_VENDOR_ID_BROADCOM, 0x4355),
BRCMF_PCIE_DEVICE(BRCM_PCIE_4354_RAW_DEVICE_ID),
@@ -1,7 +1,7 @@
From 1a5efb5e8af74f3f349094dd52092c62aaf9b1b4 Mon Sep 17 00:00:00 2001
From a014d5ec01f8b9084b55a368f5847105c5a87758 Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:51:31 +0900
Subject: [PATCH 18/30] brcmfmac: pcie: Add IDs/properties for BCM4377
Subject: [PATCH 18/34] brcmfmac: pcie: Add IDs/properties for BCM4377
This chip is present on at least these Apple T2 Macs:
@@ -29,7 +29,7 @@ index fdff7f5fc..73ab96968 100644
case BRCM_CC_4378_CHIP_ID:
return 0x352000;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index 035656433..ca3c2a29d 100644
index 6d95c704f..5b4a4cb33 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -60,6 +60,7 @@ BRCMF_FW_DEF(4365C, "brcmfmac4365c-pcie");
@@ -48,15 +48,15 @@ index 035656433..ca3c2a29d 100644
BRCMF_FW_ENTRY(BRCM_CC_4378_CHIP_ID, 0xFFFFFFFF, 4378B1), /* 3 */
};
@@ -2048,6 +2050,7 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
base = 0x800;
words = 0x112;
@@ -2055,6 +2057,7 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
base = 0x8c0;
words = 0xb2;
break;
+ case BRCM_CC_4377_CHIP_ID:
case BRCM_CC_4378_CHIP_ID:
coreid = BCMA_CORE_GCI;
base = 0x1120;
@@ -2561,6 +2564,7 @@ static const struct pci_device_id brcmf_pcie_devid_table[] = {
@@ -2568,6 +2571,7 @@ static const struct pci_device_id brcmf_pcie_devid_table[] = {
BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_2G_DEVICE_ID),
BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_5G_DEVICE_ID),
BRCMF_PCIE_DEVICE(BRCM_PCIE_4371_DEVICE_ID),
@@ -1,7 +1,7 @@
From 7f5b8ed753c3616f7e20ac7ed95aea7276483298 Mon Sep 17 00:00:00 2001
From 680ef41dd2e00b3e891e62f5ed8a746e96b8567d Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Tue, 21 Dec 2021 17:51:52 +0900
Subject: [PATCH 19/30] brcmfmac: pcie: Perform correct BCM4364 firmware
Subject: [PATCH 19/34] brcmfmac: pcie: Perform correct BCM4364 firmware
selection
This chip exists in two revisions (B2=r3 and B3=r4) on different
@@ -38,7 +38,7 @@ Signed-off-by: Hector Martin <marcan@marcan.st>
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
index ca3c2a29d..5bf67f1e6 100644
index 5b4a4cb33..b6b789b49 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -54,7 +54,8 @@ BRCMF_FW_CLM_DEF(4356, "brcmfmac4356-pcie");
@@ -61,9 +61,9 @@ index ca3c2a29d..5bf67f1e6 100644
BRCMF_FW_ENTRY(BRCM_CC_4365_CHIP_ID, 0x0000000F, 4365B),
BRCMF_FW_ENTRY(BRCM_CC_4365_CHIP_ID, 0xFFFFFFF0, 4365C),
BRCMF_FW_ENTRY(BRCM_CC_4366_CHIP_ID, 0x0000000F, 4366B),
@@ -2050,6 +2052,11 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
base = 0x800;
words = 0x112;
@@ -2057,6 +2059,11 @@ static int brcmf_pcie_read_otp(struct brcmf_pciedev_info *devinfo)
base = 0x8c0;
words = 0xb2;
break;
+ case BRCM_CC_4364_CHIP_ID:
+ coreid = BCMA_CORE_CHIPCOMMON;
@@ -1,7 +1,7 @@
From d1da7977d230e10a35a6f0744c37ffccc1c83631 Mon Sep 17 00:00:00 2001
From 9600a63e7c36866faac8c458dc48ba9eb19032bc Mon Sep 17 00:00:00 2001
From: Hector Martin <marcan@marcan.st>
Date: Mon, 20 Dec 2021 20:00:57 +0900
Subject: [PATCH 20/30] brcmfmac: chip: Only disable D11 cores; handle an
Subject: [PATCH 20/34] brcmfmac: chip: Only disable D11 cores; handle an
arbitrary number
At least on BCM4387, the D11 cores are held in reset on cold startup and

Some files were not shown because too many files have changed in this diff Show More