summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAlessio Ferri <alessio.ferri@mythread.it>2026-05-28 19:31:37 +0200
committerJohannes Berg <johannes.berg@intel.com>2026-06-10 10:27:52 +0200
commit2691a1ae6bcc7c8a12ba10af99d1283a0bf69e9d (patch)
treec8f924007667d3b355885bf3062d50f088963284 /drivers
parentee81dc7636fb808a5f480d2767130a7cf3554f9a (diff)
downloadlwn-2691a1ae6bcc7c8a12ba10af99d1283a0bf69e9d.tar.gz
lwn-2691a1ae6bcc7c8a12ba10af99d1283a0bf69e9d.zip
b43: route d11 corerev 22 to 24-bit indirect radio access
Rev 22 backports the older 802.11 core but pairs it with a radio in the 2057 family, which requires the 24-bit indirect path. With the current dispatch, corerev 22 falls into the legacy 4-wire branch, reads garbage for radio_id, and bails out with -EOPNOTSUPP at the "FOUND UNSUPPORTED RADIO" branch below. brcmsmac handles the same silicon family with the equivalent dispatch in drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/ phy_cmn.c read_radio_reg() and write_radio_reg(): if ((D11REV_GE(pi->sh->corerev, 24)) || (D11REV_IS(pi->sh->corerev, 22) && (pi->pubpi.phy_type != PHY_TYPE_SSN))) { /* radioregaddr / radioregdata (indirect) */ } else { /* phy4waddr / phy4wdatalo (legacy) */ } b43 does not support SSN/SSLPN PHYs - they are rejected earlier in b43_phy_versioning() at the "unsupported PHY type" switch - so just adding the check corerev == 22 will do. Assisted-by: Claude:claude-4.7-opus Signed-off-by: Alessio Ferri <alessio.ferri@mythread.it> Acked-by: Michael Büsch <m@bues.ch> Reviewed-by: Joshua Peisach <jpeisach@ubuntu.com> Link: https://patch.msgid.link/20260528-b43_complete_n_phy_rev_8_radio_2057_rev_8_support-v4-3-464566194d47@gmail.com Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/broadcom/b43/main.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/wireless/broadcom/b43/main.c b/drivers/net/wireless/broadcom/b43/main.c
index 85ea8fdd9c0e..783af26cb6f0 100644
--- a/drivers/net/wireless/broadcom/b43/main.c
+++ b/drivers/net/wireless/broadcom/b43/main.c
@@ -4563,7 +4563,11 @@ static int b43_phy_versioning(struct b43_wldev *dev)
radio_id = b43_read16(dev, B43_MMIO_RADIO24_DATA);
radio_ver = 0; /* Is there version somewhere? */
- } else if (core_rev >= 24) {
+ } else if (core_rev >= 24 || core_rev == 22) {
+ /*
+ * D11 corerev 22 pairs an older 802.11 core with a 2057
+ * radio that requires the 24-bit indirect access path.
+ */
u16 radio24[3];
for (tmp = 0; tmp < 3; tmp++) {