From: Aditya Garg <aditya.garg@linux.dev>
To: Arend van Spriel <arend.vanspriel@broadcom.com>,
Johannes Berg <johannes@sipsolutions.net>
Cc: linux-wireless@vger.kernel.org, brcm80211@lists.linux.dev,
brcm80211-dev-list.pdl@broadcom.com,
linux-kernel@vger.kernel.org, Andre Eikmeyer <dev@deq.rocks>
Subject: [PATCH] wifi: brcmfmac: pcie: Make antenna SKU check optional for Apple boards with BCM4364/3
Date: Wed, 11 Nov 2026 19:47:56 +0530 [thread overview]
Message-ID: <20261111141756.11564-1-aditya.garg@linux.dev> (raw)
On iMacPro1,1, iMac19,1 and iMac19,2, the Antenna SKU property required
for firmware selection is not advertised by ACPI. It has been found that
the firmware shipped by macOS for the BCM4364/3 chip is independent of
the Antenna SKU property by comparing SHA256 sums. Thus, for this chip,
make its requirement optional and use it only if ACPI advertises it.
Signed-off-by: Aditya Garg <aditya.garg@linux.dev>
---
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c
@@ -2428,39 +2428,54 @@
fwreq->domain_nr = pci_domain_nr(devinfo->pdev->bus) + 1;
fwreq->bus_nr = devinfo->pdev->bus->number;
- /* Apple platforms with fancy firmware/NVRAM selection */
+ /* Apple platforms with fancy firmware/NVRAM selection.
+ * Antenna SKU is not advertised by ACPI in iMacPro1,1,
+ * iMac19,1 and iMac19,2. Since they use BCM4364/3, and
+ * the firmware for that chip doesn't depend on antenna-sku,
+ * make its check optional on that chip.
+ */
if (devinfo->settings->board_type &&
- devinfo->settings->antenna_sku &&
+ (devinfo->settings->antenna_sku ||
+ (devinfo->ci->chip == BRCM_CC_4364_CHIP_ID &&
+ devinfo->ci->chiprev == 3)) &&
devinfo->otp.valid) {
const struct brcmf_otp_params *otp = &devinfo->otp;
struct device *dev = &devinfo->pdev->dev;
const char **bt = fwreq->board_types;
+ int i = 0;
+ int j;
brcmf_dbg(PCIE, "Apple board: %s\n",
devinfo->settings->board_type);
/* Example: apple,shikoku-RASP-m-6.11-X3 */
- bt[0] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s-%s-%s-%s",
- devinfo->settings->board_type,
- otp->module, otp->vendor, otp->version,
- devinfo->settings->antenna_sku);
- bt[1] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s-%s-%s",
- devinfo->settings->board_type,
- otp->module, otp->vendor, otp->version);
- bt[2] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s-%s",
- devinfo->settings->board_type,
- otp->module, otp->vendor);
- bt[3] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s",
- devinfo->settings->board_type,
- otp->module);
- bt[4] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s",
- devinfo->settings->board_type,
- devinfo->settings->antenna_sku);
- bt[5] = devinfo->settings->board_type;
+ if (devinfo->settings->antenna_sku)
+ bt[i++] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s-%s-%s-%s",
+ devinfo->settings->board_type,
+ otp->module, otp->vendor, otp->version,
+ devinfo->settings->antenna_sku);
+ else
+ brcmf_dbg(PCIE, "Antenna SKU not found\n");
+ bt[i++] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s-%s-%s",
+ devinfo->settings->board_type,
+ otp->module, otp->vendor, otp->version);
+ bt[i++] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s-%s",
+ devinfo->settings->board_type,
+ otp->module, otp->vendor);
+ bt[i++] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s",
+ devinfo->settings->board_type,
+ otp->module);
+ if (devinfo->settings->antenna_sku)
+ bt[i++] = devm_kasprintf(dev, GFP_KERNEL, "%s-%s",
+ devinfo->settings->board_type,
+ devinfo->settings->antenna_sku);
+ bt[i++] = devinfo->settings->board_type;
- if (!bt[0] || !bt[1] || !bt[2] || !bt[3] || !bt[4]) {
- kfree(fwreq);
- return NULL;
+ for (j = 0; j < i - 1; j++) {
+ if (!bt[j]) {
+ kfree(fwreq);
+ return NULL;
+ }
}
} else {
brcmf_dbg(PCIE, "Board: %s\n", devinfo->settings->board_type);
reply other threads:[~2026-11-11 14:18 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261111141756.11564-1-aditya.garg@linux.dev \
--to=aditya.garg@linux.dev \
--cc=arend.vanspriel@broadcom.com \
--cc=brcm80211-dev-list.pdl@broadcom.com \
--cc=brcm80211@lists.linux.dev \
--cc=dev@deq.rocks \
--cc=johannes@sipsolutions.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®