You've already forked linux-t2-patches
mirror of
https://github.com/t2linux/linux-t2-patches.git
synced 2026-04-30 13:52:11 -07:00
kernel 5.15.13, update asahi patchset: txcap support
This commit is contained in:
@@ -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) {
|
||||
+ switch (type) {
|
||||
+ case BRCMF_BLOB_CLM:
|
||||
+ *fw = devinfo->clm_fw;
|
||||
+ devinfo->clm_fw = NULL;
|
||||
+ break;
|
||||
+ default:
|
||||
+ return -ENOENT;
|
||||
+ }
|
||||
+
|
||||
+ if (!*fw)
|
||||
+ return -ENOENT;
|
||||
|
||||
- kfree(fwreq);
|
||||
+ *fw = devinfo->clm_fw;
|
||||
+ devinfo->clm_fw = NULL;
|
||||
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) {
|
||||
+ switch (type) {
|
||||
+ case BRCMF_BLOB_CLM:
|
||||
+ *fw = sdiodev->clm_fw;
|
||||
+ sdiodev->clm_fw = NULL;
|
||||
+ break;
|
||||
+ default:
|
||||
+ return -ENOENT;
|
||||
+ }
|
||||
+
|
||||
+ if (!*fw)
|
||||
+ return -ENOENT;
|
||||
|
||||
- kfree(fwreq);
|
||||
+ *fw = sdiodev->clm_fw;
|
||||
+ sdiodev->clm_fw = NULL;
|
||||
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
Reference in New Issue
Block a user