From nobody Mon May 25 09:57:53 2026 Received: from smtpdh20-1.aruba.it (smtpdh20-1.aruba.it [62.149.155.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA4351B4156 for ; Mon, 18 May 2026 01:53:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=62.149.155.164 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069211; cv=none; b=rKmWDko5v4aqV/E4sN47vY2/4HqJQ58iX1j7jYm4LlbmOsWryRcfxth3+N/9Tnmjrp1AOdhAxteuymCcskLXLd1k32NHAmI2GJvC4nSCdXkWeDmf4/aA6hLQw0HZ1WhApfKZgrig1VV/pE+W1x5dBkZ3pE9zXLbKKMc4JEJq/vM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069211; c=relaxed/simple; bh=j38EG0CrwL41nWBhkniE+1ThFORFCU/Ymo2Ve/yawT0=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=SHchoFHxeU7sZW5BrlZh0wG/Arqtplab+xtYYBYL9xyRS/Jn4VLgUpqWzW/ClkC8iSLsI6BoMq1OxM1G5wxbrV0I6ohEpInT9KPnnXFAXupzqfsEWryhAEFl/AVtKltQ36gTnuUDUoTUuPfJUJG1rsn1yxWvSRqU16BFEYaMHZs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it; spf=pass smtp.mailfrom=mythread.it; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b=MA0Ex4KF; arc=none smtp.client-ip=62.149.155.164 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mythread.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b="MA0Ex4KF" Received: from [192.168.1.83] ([79.20.159.46]) by Aruba SMTP with ESMTPSA id On7cwqryWEZ9tOn7dwfqb0; Mon, 18 May 2026 03:50:21 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mythread.it; s=a1; t=1779069021; bh=j38EG0CrwL41nWBhkniE+1ThFORFCU/Ymo2Ve/yawT0=; h=Date:MIME-Version:Subject:From:To:Content-Type; b=MA0Ex4KFfDN/pvSrxCO2fw01tRD1M4mx/DXyLu734hhKyXpLGT4k9Deark3VJD1at HYfJ+msXqUk24lyZgXsJ+We+Du/W3PdvhcGroRxjoq004XaJd0CHLONKP0d6bWzjnw /XONDxq07RsT8ey2I8mKZb+ggG+FRV/jb4/SQwDxFzNTLabFTwLXh/aLdZANe0ja+a v8DPAXSqe7mhvnHVDFotCPKZ1BxKAboELtcmsSqOrk0ZvYTUhVfNQxJ3HPRsihfwLU 4uyt2/7CAreNv457K6DPk9OYCXc40cTR97ZC1QmfflVIW4L9n/ZE8wf0t9cU8TGCRK 1wbF0BOsQZgWw== Message-ID: Date: Mon, 18 May 2026 03:50:20 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 1/6] b43: add d11 core revision 0x16 to id table Content-Language: it From: Alessio Ferri To: linux-wireless@vger.kernel.org Cc: b43-dev@lists.infradead.org, kvalo@kernel.org, linux-kernel@vger.kernel.org References: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> In-Reply-To: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> Content-Transfer-Encoding: quoted-printable X-CMAE-Envelope: MS4xfC1B7BcOzHZVjxFuFA0JQKLWYMbgpio1SdFg83mQKWYll4H6ZbMyCZvh22i0NYJ9GOYwsrR7abA1p6uRlhFcEtethJLf2/Np/CCCtvo6MjUCIIxVL3nr aV7tpc5KaiaHd2/qyeWMaykcjH2m4AETpP9lMA3OsOCguAS9F1UNSNxSSeyJPiF87ZlWHxdhIhY8GPZHp6ypREPnRiexK3UXO0sRBpd6J8p0tMnT/ZR54cqs MDN1EFO9VhdbBvw6rvGxUzubjQKyqoHFj2d8u/XEgIS6YYXmG/lR138Ma7B5j2M+1o20bJvlLSjv/34q/QVwaw== Content-Type: text/plain; charset="utf-8" Add d11 core revision 0x16 (=3D 22) to the b43 bcma device id table. The b43 bcma id table covers d11 revisions 0x11, 0x15, 0x17, 0x18, 0x1C, 0x1D, 0x1E, 0x28 and 0x2A. Revision 0x16 belongs to the same N-PHY family as revisions 0x17 and 0x18 (radio 2057) and needs no new PHY or radio code beyond the radio_rev 8 dispatcher entries added later in this series - only the device id entry is missing. Without it bcma scan enumerates the 802.11 core but no driver binds. The revision is used by the Broadcom BCM6362 single-die integrated 2.4 GHz wireless block found in xDSL SoCs. Signed-off-by: Alessio Ferri --- drivers/net/wireless/broadcom/b43/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/wireless/broadcom/b43/main.c b/drivers/net/wireles= s/broadcom/b43/main.c index b0e6aeb0b..673a56c30 100644 --- a/drivers/net/wireless/broadcom/b43/main.c +++ b/drivers/net/wireless/broadcom/b43/main.c @@ -117,6 +117,7 @@ MODULE_PARM_DESC(allhwsupport, "Enable support for all = hardware (even it if over static const struct bcma_device_id b43_bcma_tbl[] =3D { BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x11, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x15, BCMA_ANY_CLASS), + BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x16, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x17, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x18, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 0x1C, BCMA_ANY_CLASS), --=20 2.43.0 Il 18/05/2026 03:49, Alessio Ferri ha scritto: > This series completes b43 support for the Broadcom N-PHY revision 8 > paired with radio 2057 revision 8. b43 already supports the surrounding > PHY family - N-PHY rev 8 with radio 2057 rev 5 and rev 7 are handled, > and rev 16 with radio 2057 rev 9 is handled - but the rev 8 + rev 8 > combination falls through four dispatcher gaps: >=20 > - radio_2057.c, r2057_upload_inittabs(), case 8 lists radio_rev 5 > and 7 only; > - radio_2057.c, r2057_get_chantabent_rev7(), case 8 lists radio_rev > 5 only; > - tables_nphy.c, b43_nphy_get_ipa_gain_table(), case 8 lists > radio_rev 5 only; > - radio_2057.c carries r2057_rev8_init[] as a 54-entry stub commented > out with "TODO: Which devices should use it?". >=20 > Two further pieces of plumbing are needed to reach those dispatchers > in the first place: d11 core revision 0x16 is missing from the b43 > bcma id table, and the corerev 22 / radio 2057 combination needs the > 24-bit indirect radio access path that brcmsmac uses for the same > silicon generation (see brcmsmac/phy/phy_cmn.c read_radio_reg() / > write_radio_reg()). >=20 > The series: >=20 > 1/6 b43: add d11 core revision 0x16 to id table > 2/6 b43: route d11 corerev 22 to 24-bit indirect radio access > 3/6 b43: support radio 2057 rev 8 > 4/6 b43: add IPA TX gain table for N-PHY r8 + radio 2057 r8 > 5/6 b43: add channel info table for N-PHY r8 + radio 2057 r8 > 6/6 b43: add RF power offset for N-PHY r8 + radio 2057 r8 >=20 > Patches are ordered so that each one fixes the next visible failure > in bring-up: 1/6 makes b43 bind to the core, 2/6 lets phy versioning > read coherent radio identifiers, 3/6 unblocks the boot-time radio > calibration that otherwise stalls the PSM at microcode startup, and > 4/6-6/6 fill the remaining 2.4 GHz dispatcher entries so > b43_nphy_set_channel completes to the default channel and core_init > proceeds past PHY init. >=20 > Tested on a D-Link DSL-3580L (Broadcom BCM6362 SoC, single-die 2.4 GHz > N-PHY rev 8 + radio 2057 rev 8 in 2.4 GHz IPA mode). The chip is in > service worldwide in xDSL CPE devices. >=20 > b43 is currently Orphan in MAINTAINERS. These patches do not add a > new chip family or PHY infrastructure; they fill four explicit > dispatcher gaps for a combination of an already-supported PHY and > an already-supported radio. >=20 > Alessio Ferri (6): > b43: add d11 core revision 0x16 to id table > b43: route d11 corerev 22 to 24-bit indirect radio access > b43: support radio 2057 rev 8 > b43: add IPA TX gain table for N-PHY r8 + radio 2057 r8 > b43: add channel info table for N-PHY r8 + radio 2057 r8 > b43: add RF power offset for N-PHY r8 + radio 2057 r8 >=20 > drivers/net/wireless/broadcom/b43/main.c | 10 +- > .../net/wireless/broadcom/b43/radio_2057.c | 230 ++++++++++++++++-- > .../net/wireless/broadcom/b43/tables_nphy.c | 58 +++++ > 3 files changed, 280 insertions(+), 18 deletions(-) > From nobody Mon May 25 09:57:53 2026 Received: from smtpdh20-1.aruba.it (smtpdh20-1.aruba.it [62.149.155.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 481A82222AC for ; Mon, 18 May 2026 01:54:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=62.149.155.164 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069261; cv=none; b=QhQYbQPNfagPFgvKb38Gb81ofNjVoHwIfvCpq9YD9Xg9jKRv9h1qGrsnnE0tnfAdjvw+sM92rw3soTOCSq36RPHB2YmTNkYZQcuodDOxHaiyfx5wkbk/q3F9d/8Tg5oLhpvuEzlnZfg7qi/h1c8WJrCeLFOplZ/T+ZX4p5AASRg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069261; c=relaxed/simple; bh=Mdt8NKJaOHbPoFDFNwE0LYxPnB/LN/w2c+7vx0TXwuU=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=JEg6k6t44D20BwKlLpa3fU5hcu/0bpOlX84G+Q8x1XvWNjRsSgHk+Ib7M9Q/jrIUuSCY3eCkdTaA7yY69X91KCt6VVbyHUpnZE6hZ+eCW/4tMr9xo9wkZDRj1Ve9dNne7jodrzWm6p+mlTuWsPj26lhtDPCg+oBX5F7iP39pDM0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it; spf=pass smtp.mailfrom=mythread.it; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b=TcRybzlL; arc=none smtp.client-ip=62.149.155.164 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mythread.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b="TcRybzlL" Received: from [192.168.1.83] ([79.20.159.46]) by Aruba SMTP with ESMTPSA id On8ZwqsNYEZ9tOn8Zwfqmp; Mon, 18 May 2026 03:51:19 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mythread.it; s=a1; t=1779069079; bh=Mdt8NKJaOHbPoFDFNwE0LYxPnB/LN/w2c+7vx0TXwuU=; h=Date:MIME-Version:Subject:From:To:Content-Type; b=TcRybzlL4unEkmn3HQ+l0zrFsVip8JNk1J4o4XFq0reCuxQ/6WZQeGw41OQ2cO7Zu h6BraMxsTB99XL0mN1nDVHEEJ+iJA4+WuLe/w/mm21IsEyw7/8VmBOWAvlSXF4UtGO DO75X0xpPZ/KyNZIKOP9FjAyxfqSQE+nWi8evAhSCUyFyNT65poIcoTch9z77JC7Qu ZVdYRhAsd/KW39yLFAVgHnXqQWdieJrtvNl0SWkze0pnPI+2a0aEmFk565iTRdYZJp CmMXYZXzMNBbvoipX9ZD1SD03w3jtiQXDMSS4kP286ek7/KLf5pXlOBRa2gxfXNWEb gy4MqV1OWbPBQ== Message-ID: <3c2cba9c-8dc4-47a1-adb7-a7fd38d295e7@mythread.it> Date: Mon, 18 May 2026 03:51:18 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 2/6] b43: route d11 corerev 22 to 24-bit indirect radio access Content-Language: it From: Alessio Ferri To: linux-wireless@vger.kernel.org Cc: b43-dev@lists.infradead.org, kvalo@kernel.org, linux-kernel@vger.kernel.org References: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> In-Reply-To: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> Content-Transfer-Encoding: quoted-printable X-CMAE-Envelope: MS4xfP+XANS/QP1ra5UIaxa6kPPRnUIq9DQSmK0PVDFsnIp8aJv/n3TC3QQFtM3ejpds/GSXSX6U1rbgd+lM8Q8bTEtOCsJjskiiDA1vBixmmTGOZLGvSOH3 9FVFmJog/ceo8GT0NIHZgHSdrQYYfMuNc7SFHstO4GiZuG+jYdujdCwHixagKeQhkd98TwNyxNvBx719AnI6D5jYwd8DZrIcPpSIbRPMt3UMYHyUwz7mnJuS ESTWRod6bDGHKbZ6zl19IAT/I0cyMQaWSaAsEJM95tUa4U3KD/eJbjTXbxBRSR3q11cge/6iQsHUSERicnAO8w== Content-Type: text/plain; charset="utf-8" D11 core revision 22 is an outlier in the corerev-to-radio-access mapping. b43_phy_versioning() reads radio identifiers via two different paths: - core_rev >=3D 24: 24-bit indirect access (B43_MMIO_RADIO24_CONTROL + B43_MMIO_RADIO24_DATA); - otherwise: legacy 4-wire access (B43_MMIO_RADIO_CONTROL + B43_MMIO_RADIO_DATA_LOW/HIGH). Corerev 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 !=3D PHY_TYPE_SSN))) { /* radioregaddr / radioregdata (indirect) */ } else { /* phy4waddr / phy4wdatalo (legacy) */ } The "phy_type !=3D PHY_TYPE_SSN" carve-out in brcmsmac is for the SSN PHY variant of corerev 22, which uses the legacy path. b43 does not support SSN/SSLPN PHYs - they are rejected earlier in b43_phy_versioning() at the "unsupported PHY type" switch - so by the time control reaches the radio versioning dispatch there is no SSN device to mis-route. A positive (core_rev =3D=3D 22) clause is therefore sufficient and equivalent. Encountered on the Broadcom BCM6362 single-die integrated 2.4 GHz wireless block (radio 2057 rev 8, paired with d11 corerev 22 on this silicon). Signed-off-by: Alessio Ferri --- drivers/net/wireless/broadcom/b43/main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/broadcom/b43/main.c b/drivers/net/wireles= s/broadcom/b43/main.c index 673a56c30..7f96df5eb 100644 --- a/drivers/net/wireless/broadcom/b43/main.c +++ b/drivers/net/wireless/broadcom/b43/main.c @@ -4555,7 +4555,11 @@ static int b43_phy_versioning(struct b43_wldev *dev) radio_id =3D b43_read16(dev, B43_MMIO_RADIO24_DATA); =20 radio_ver =3D 0; /* Is there version somewhere? */ - } else if (core_rev >=3D 24) { + } else if (core_rev >=3D 24 || core_rev =3D=3D 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]; =20 for (tmp =3D 0; tmp < 3; tmp++) { --=20 2.43.0 Il 18/05/2026 03:49, Alessio Ferri ha scritto: > This series completes b43 support for the Broadcom N-PHY revision 8 > paired with radio 2057 revision 8. b43 already supports the surrounding > PHY family - N-PHY rev 8 with radio 2057 rev 5 and rev 7 are handled, > and rev 16 with radio 2057 rev 9 is handled - but the rev 8 + rev 8 > combination falls through four dispatcher gaps: >=20 > - radio_2057.c, r2057_upload_inittabs(), case 8 lists radio_rev 5 > and 7 only; > - radio_2057.c, r2057_get_chantabent_rev7(), case 8 lists radio_rev > 5 only; > - tables_nphy.c, b43_nphy_get_ipa_gain_table(), case 8 lists > radio_rev 5 only; > - radio_2057.c carries r2057_rev8_init[] as a 54-entry stub commented > out with "TODO: Which devices should use it?". >=20 > Two further pieces of plumbing are needed to reach those dispatchers > in the first place: d11 core revision 0x16 is missing from the b43 > bcma id table, and the corerev 22 / radio 2057 combination needs the > 24-bit indirect radio access path that brcmsmac uses for the same > silicon generation (see brcmsmac/phy/phy_cmn.c read_radio_reg() / > write_radio_reg()). >=20 > The series: >=20 > 1/6 b43: add d11 core revision 0x16 to id table > 2/6 b43: route d11 corerev 22 to 24-bit indirect radio access > 3/6 b43: support radio 2057 rev 8 > 4/6 b43: add IPA TX gain table for N-PHY r8 + radio 2057 r8 > 5/6 b43: add channel info table for N-PHY r8 + radio 2057 r8 > 6/6 b43: add RF power offset for N-PHY r8 + radio 2057 r8 >=20 > Patches are ordered so that each one fixes the next visible failure > in bring-up: 1/6 makes b43 bind to the core, 2/6 lets phy versioning > read coherent radio identifiers, 3/6 unblocks the boot-time radio > calibration that otherwise stalls the PSM at microcode startup, and > 4/6-6/6 fill the remaining 2.4 GHz dispatcher entries so > b43_nphy_set_channel completes to the default channel and core_init > proceeds past PHY init. >=20 > Tested on a D-Link DSL-3580L (Broadcom BCM6362 SoC, single-die 2.4 GHz > N-PHY rev 8 + radio 2057 rev 8 in 2.4 GHz IPA mode). The chip is in > service worldwide in xDSL CPE devices. >=20 > b43 is currently Orphan in MAINTAINERS. These patches do not add a > new chip family or PHY infrastructure; they fill four explicit > dispatcher gaps for a combination of an already-supported PHY and > an already-supported radio. >=20 > Alessio Ferri (6): > b43: add d11 core revision 0x16 to id table > b43: route d11 corerev 22 to 24-bit indirect radio access > b43: support radio 2057 rev 8 > b43: add IPA TX gain table for N-PHY r8 + radio 2057 r8 > b43: add channel info table for N-PHY r8 + radio 2057 r8 > b43: add RF power offset for N-PHY r8 + radio 2057 r8 >=20 > drivers/net/wireless/broadcom/b43/main.c | 10 +- > .../net/wireless/broadcom/b43/radio_2057.c | 230 ++++++++++++++++-- > .../net/wireless/broadcom/b43/tables_nphy.c | 58 +++++ > 3 files changed, 280 insertions(+), 18 deletions(-) > From nobody Mon May 25 09:57:53 2026 Received: from smtpdh20-1.aruba.it (smtpdh20-1.aruba.it [62.149.155.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3B74E1EB5E3 for ; Mon, 18 May 2026 01:54:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=62.149.155.164 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069291; cv=none; b=TrHdzXqD1/rxnAnJ8jju/efaQZRZ0R2SlKcIClqLgyBKZhwtwi7Ui0CVw6Y7/10SK/5mUuDU+yf44uyEd30xj5UtOs8yoZHg/o50Q+dzGsSz01N5XOdmcoAJE8KGWb9Cf6RkIG16PtW1ovPgIcj2DNWFkKlN1VTeSR+R9NhS4GM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069291; c=relaxed/simple; bh=BInC6OK9aJJaC1HJkTTMIm5UT/EGWeGpfmwieH4O3A4=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=o2gJzOMST8OlHadz/7KzuYNHt3sa6hmnigRRbybw+WdkChDpnhPyqFDa8tC1CtuKKDr3YZ0iVI0de/Ebid/do/SZSdQxcBRv+WYe1azH5o8OfbBRzNPYLJbw8dKyr8BEzBfmq21btTU3Zt54SmIMQ7w3FVwDvxLca9YAlrgHMsA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it; spf=pass smtp.mailfrom=mythread.it; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b=aPlk6DCk; arc=none smtp.client-ip=62.149.155.164 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mythread.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b="aPlk6DCk" Received: from [192.168.1.83] ([79.20.159.46]) by Aruba SMTP with ESMTPSA id On92wqsaPEZ9tOn92wfqr6; Mon, 18 May 2026 03:51:49 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mythread.it; s=a1; t=1779069109; bh=BInC6OK9aJJaC1HJkTTMIm5UT/EGWeGpfmwieH4O3A4=; h=Date:MIME-Version:Subject:From:To:Content-Type; b=aPlk6DCkUF/B1AofZVkE30itrnqfzkyRTzRyq0LifwhkQ3Mel6ajBLu1NKNeaXklS 02gLm6z31lFiM5spKFY3Lw5k0HhC06nk/6sOaQ7pbfZX+T4daQP5icHQu+Chvu2Yqa qqV1sR6usQXjtxCyfh6lIqXqXgFrzJOESLGbNa32uTKoc7OSRrGa55LEhNeaX245td Hb6/DaWkn3ts7I6AMkaMz6dqALN390shVruMtW13h7mT5d926vH9UiiK7pcWoW3g+9 JU8jwk5NWFd9dD2QYW/BbanB38M2vk8HXencv3Az+jEoIvLWMK32RtwClvCTSr2r/c h/v67JNTIZgaQ== Message-ID: Date: Mon, 18 May 2026 03:51:48 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 3/6] b43: support radio 2057 rev 8 Content-Language: it From: Alessio Ferri To: linux-wireless@vger.kernel.org Cc: b43-dev@lists.infradead.org, kvalo@kernel.org, linux-kernel@vger.kernel.org References: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> In-Reply-To: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> Content-Transfer-Encoding: quoted-printable X-CMAE-Envelope: MS4xfCTW2N0T/jbrKsUhLRbnwrH2DmGtYEyDzQvjQsJep0MGgIerHGJ7cBs9Z00xm5wi8M16nNmm8CBsiemc7RTt8P2o99yrMNoBgGzKj30ZIT6aznsyCQO8 J6jLt9p0tBoWHqxOW8FGtE8KO0lXNl34CoFXhD0T50o5h5wkQKbhNP+ENztphmE8JEEmKP72fDFyHYieGxJILQ8E1I5dpRVrTirtHVOoXjptFMbMJz/UQNbU 7KJj2WbcZURFJTtPvpoMDaTTfqnS/e5QI3NkpE0W61HjMR/XmH5yHrpJ62ZFYhpgGueRJ1lMk3fqzFM3mKv9sw== Content-Type: text/plain; charset="utf-8" Add support for radio 2057 revision 8, paired with N-PHY rev 8 on the Broadcom BCM6362 single-die integrated 2.4 GHz wireless block. Three correlated changes are needed for the same chip: - main.c: the radio_rev allow-list under B43_PHYTYPE_N currently accepts radio 2057 revisions 9 and 14 only; extend to include rev 8. - radio_2057.c: the existing r2057_rev8_init[] is a 54-entry stub declared inside a /* TODO: Which devices should use it? */ comment block and never referenced from r2057_upload_inittabs(). Replace it with the full 412-entry register set actually programmed by the proprietary Broadcom wl driver on this radio. The origin of the original 54-entry stub cannot be traced - 8 of its entries do not appear at all in the rev 8 register set and 7 more carry different values, so the stub is in any case not the rev 8 table. Loading it instead of the real table leaves the radio partially initialised and stalls the PSM at boot-time radio calibration, producing a "Microcode not responding" timeout one second into b43_upload_microcode(). - radio_2057.c: r2057_upload_inittabs() case 8 handles radio_rev 5 and 7 only; add the radio_rev =3D=3D 8 branch pointing at the new table. The init table is extracted from an MMIO dump of the radio register set programmed during proprietary driver initialisation on BCM6362 silicon (Broadcom wl driver 6.30.102.7). Layout convention matches the existing r2057_rev5_init[] / r2057_rev7_init[] / r2057_rev9_init[] arrays in this file: { u16 reg, u16 val } per entry. Signed-off-by: Alessio Ferri --- drivers/net/wireless/broadcom/b43/main.c | 3 +- .../net/wireless/broadcom/b43/radio_2057.c | 124 +++++++++++++++--- 2 files changed, 110 insertions(+), 17 deletions(-) diff --git a/drivers/net/wireless/broadcom/b43/main.c b/drivers/net/wireles= s/broadcom/b43/main.c index 7f96df5eb..0e4102f3c 100644 --- a/drivers/net/wireless/broadcom/b43/main.c +++ b/drivers/net/wireless/broadcom/b43/main.c @@ -4609,7 +4609,8 @@ static int b43_phy_versioning(struct b43_wldev *dev) radio_id !=3D 0x2057) unsupported =3D 1; if (radio_id =3D=3D 0x2057 && - !(radio_rev =3D=3D 9 || radio_rev =3D=3D 14)) + !(radio_rev =3D=3D 8 || radio_rev =3D=3D 9 || + radio_rev =3D=3D 14)) unsupported =3D 1; break; case B43_PHYTYPE_LP: diff --git a/drivers/net/wireless/broadcom/b43/radio_2057.c b/drivers/net/w= ireless/broadcom/b43/radio_2057.c index bd7dafb56..9f693d92b 100644 --- a/drivers/net/wireless/broadcom/b43/radio_2057.c +++ b/drivers/net/wireless/broadcom/b43/radio_2057.c @@ -73,24 +73,112 @@ static u16 r2057_rev7_init[][2] =3D { { 0x1B7, 0x05 }, { 0x1C2, 0xa0 }, }; =20 -/* TODO: Which devices should use it? +/* Extracted from MMIO dump of 6.30.102.7 */ static u16 r2057_rev8_init[][2] =3D { - { 0x00, 0x08 }, { 0x01, 0x57 }, { 0x02, 0x20 }, { 0x31, 0x00 }, - { 0x32, 0x00 }, { 0x33, 0x00 }, { 0x51, 0x70 }, { 0x59, 0x88 }, - { 0x5C, 0x20 }, { 0x62, 0x33 }, { 0x63, 0x0f }, { 0x64, 0x0f }, - { 0x6E, 0x58 }, { 0x75, 0x13 }, { 0x7B, 0x13 }, { 0x7C, 0x0f }, - { 0x7D, 0xee }, { 0x81, 0x01 }, { 0x91, 0x3f }, { 0x92, 0x36 }, - { 0xA1, 0x20 }, { 0xC9, 0x01 }, { 0xD6, 0x70 }, { 0xDE, 0x88 }, - { 0xE1, 0x20 }, { 0xE8, 0x0f }, { 0xE9, 0x0f }, { 0xF3, 0x58 }, - { 0xFA, 0x13 }, { 0x100, 0x13 }, { 0x101, 0x0f }, { 0x102, 0xee }, - { 0x106, 0x01 }, { 0x116, 0x3f }, { 0x117, 0x36 }, { 0x126, 0x20 }, - { 0x14E, 0x01 }, { 0x15E, 0x00 }, { 0x15F, 0x00 }, { 0x160, 0x00 }, - { 0x161, 0x00 }, { 0x162, 0x00 }, { 0x163, 0x00 }, { 0x16A, 0x00 }, - { 0x16B, 0x00 }, { 0x16C, 0x00 }, { 0x1A4, 0x00 }, { 0x1A5, 0x00 }, - { 0x1A6, 0x00 }, { 0x1AA, 0x00 }, { 0x1AB, 0x00 }, { 0x1AC, 0x00 }, - { 0x1B7, 0x05 }, { 0x1C2, 0xa0 }, + { 0x0000, 0x0008 }, { 0x0001, 0x0057 }, { 0x0002, 0x0020 }, { 0x0003, 0x0= 01f }, + { 0x0004, 0x0004 }, { 0x0005, 0x0002 }, { 0x0006, 0x0001 }, { 0x0007, 0x0= 001 }, + { 0x0008, 0x0001 }, { 0x0009, 0x0069 }, { 0x000a, 0x0066 }, { 0x000b, 0x0= 006 }, + { 0x000c, 0x0018 }, { 0x000d, 0x0003 }, { 0x000e, 0x0020 }, { 0x000f, 0x0= 020 }, + { 0x0010, 0x0000 }, { 0x0011, 0x007c }, { 0x0012, 0x0042 }, { 0x0013, 0x0= 0bd }, + { 0x0014, 0x0007 }, { 0x0015, 0x0087 }, { 0x0016, 0x0008 }, { 0x0017, 0x0= 017 }, + { 0x0018, 0x0007 }, { 0x0019, 0x0000 }, { 0x001a, 0x0002 }, { 0x001b, 0x0= 013 }, + { 0x001c, 0x003e }, { 0x001d, 0x003e }, { 0x001e, 0x0096 }, { 0x001f, 0x0= 004 }, + { 0x0020, 0x0000 }, { 0x0021, 0x0000 }, { 0x0022, 0x0017 }, { 0x0023, 0x0= 006 }, + { 0x0024, 0x0001 }, { 0x0025, 0x0006 }, { 0x0026, 0x0004 }, { 0x0027, 0x0= 00d }, + { 0x0028, 0x000d }, { 0x0029, 0x0030 }, { 0x002a, 0x0032 }, { 0x002b, 0x0= 008 }, + { 0x002c, 0x001c }, { 0x002d, 0x0002 }, { 0x002e, 0x0004 }, { 0x002f, 0x0= 07f }, + { 0x0030, 0x0027 }, { 0x0031, 0x0000 }, { 0x0032, 0x0000 }, { 0x0033, 0x0= 000 }, + { 0x0034, 0x0000 }, { 0x0035, 0x0020 }, { 0x0036, 0x0018 }, { 0x0037, 0x0= 007 }, + { 0x0038, 0x0066 }, { 0x0039, 0x0066 }, { 0x003a, 0x0066 }, { 0x003b, 0x0= 066 }, + { 0x003c, 0x00ff }, { 0x003d, 0x00ff }, { 0x003e, 0x00ff }, { 0x003f, 0x0= 0ff }, + { 0x0040, 0x0016 }, { 0x0041, 0x0007 }, { 0x0042, 0x0029 }, { 0x0043, 0x0= 007 }, + { 0x0044, 0x0006 }, { 0x0045, 0x0003 }, { 0x0046, 0x0001 }, { 0x0047, 0x0= 007 }, + { 0x0048, 0x0088 }, { 0x0049, 0x0005 }, { 0x004a, 0x0077 }, { 0x004b, 0x0= 066 }, + { 0x004c, 0x0066 }, { 0x004d, 0x0000 }, { 0x004e, 0x0004 }, { 0x004f, 0x0= 00c }, + { 0x0050, 0x0000 }, { 0x0051, 0x0070 }, { 0x0056, 0x0007 }, { 0x0057, 0x0= 000 }, + { 0x0058, 0x0000 }, { 0x0059, 0x0088 }, { 0x005a, 0x0000 }, { 0x005b, 0x0= 01f }, + { 0x005c, 0x0020 }, { 0x005d, 0x0001 }, { 0x005e, 0x0030 }, { 0x005f, 0x0= 070 }, + { 0x0060, 0x0000 }, { 0x0061, 0x0000 }, { 0x0062, 0x0033 }, { 0x0063, 0x0= 00f }, + { 0x0064, 0x0013 }, { 0x0065, 0x0000 }, { 0x0066, 0x00ee }, { 0x0069, 0x0= 000 }, + { 0x006a, 0x007e }, { 0x006b, 0x003f }, { 0x006c, 0x007f }, { 0x006d, 0x0= 078 }, + { 0x006e, 0x0058 }, { 0x006f, 0x0088 }, { 0x0070, 0x0008 }, { 0x0071, 0x0= 00f }, + { 0x0072, 0x00bc }, { 0x0073, 0x0008 }, { 0x0074, 0x0060 }, { 0x0075, 0x0= 01a }, + { 0x0076, 0x0070 }, { 0x0077, 0x0000 }, { 0x0078, 0x0000 }, { 0x0079, 0x0= 000 }, + { 0x007a, 0x0033 }, { 0x007b, 0x001a }, { 0x007c, 0x0014 }, { 0x007d, 0x0= 0ee }, + { 0x0080, 0x003c }, { 0x0081, 0x0001 }, { 0x0082, 0x000a }, { 0x0083, 0x0= 09d }, + { 0x0084, 0x000a }, { 0x0085, 0x0000 }, { 0x0086, 0x0040 }, { 0x0087, 0x0= 040 }, + { 0x0088, 0x0088 }, { 0x0089, 0x0010 }, { 0x008a, 0x00f0 }, { 0x008b, 0x0= 010 }, + { 0x008c, 0x00f0 }, { 0x008d, 0x0000 }, { 0x008e, 0x0000 }, { 0x008f, 0x0= 010 }, + { 0x0090, 0x0055 }, { 0x0091, 0x003f }, { 0x0092, 0x0036 }, { 0x0093, 0x0= 000 }, + { 0x0094, 0x0000 }, { 0x0095, 0x0000 }, { 0x0096, 0x0087 }, { 0x0097, 0x0= 011 }, + { 0x0098, 0x0000 }, { 0x0099, 0x0033 }, { 0x009a, 0x0088 }, { 0x009b, 0x0= 000 }, + { 0x009c, 0x0087 }, { 0x009d, 0x0011 }, { 0x009e, 0x0000 }, { 0x009f, 0x0= 033 }, + { 0x00a0, 0x0088 }, { 0x00a1, 0x0020 }, { 0x00a2, 0x003f }, { 0x00a3, 0x0= 044 }, + { 0x00a4, 0x008c }, { 0x00a5, 0x006c }, { 0x00a6, 0x0022 }, { 0x00a7, 0x0= 0be }, + { 0x00a8, 0x0055 }, { 0x00aa, 0x000c }, { 0x00ab, 0x00aa }, { 0x00ac, 0x0= 002 }, + { 0x00ad, 0x0000 }, { 0x00ae, 0x0010 }, { 0x00af, 0x0001 }, { 0x00b0, 0x0= 000 }, + { 0x00b1, 0x0000 }, { 0x00b2, 0x0080 }, { 0x00b3, 0x0060 }, { 0x00b4, 0x0= 044 }, + { 0x00b5, 0x0055 }, { 0x00b6, 0x0001 }, { 0x00b7, 0x0055 }, { 0x00b8, 0x0= 001 }, + { 0x00b9, 0x0005 }, { 0x00ba, 0x0055 }, { 0x00bb, 0x0055 }, { 0x00c1, 0x0= 000 }, + { 0x00c2, 0x0000 }, { 0x00c3, 0x0000 }, { 0x00c4, 0x0000 }, { 0x00c5, 0x0= 000 }, + { 0x00c6, 0x0000 }, { 0x00c7, 0x0000 }, { 0x00c8, 0x0000 }, { 0x00c9, 0x0= 001 }, + { 0x00ca, 0x0000 }, { 0x00cb, 0x0000 }, { 0x00cc, 0x0000 }, { 0x00cd, 0x0= 000 }, + { 0x00ce, 0x005e }, { 0x00cf, 0x000c }, { 0x00d0, 0x000c }, { 0x00d1, 0x0= 00c }, + { 0x00d2, 0x0000 }, { 0x00d3, 0x002b }, { 0x00d4, 0x000c }, { 0x00d5, 0x0= 000 }, + { 0x00d6, 0x0070 }, { 0x00db, 0x0007 }, { 0x00dc, 0x0000 }, { 0x00dd, 0x0= 000 }, + { 0x00de, 0x0088 }, { 0x00df, 0x0000 }, { 0x00e0, 0x001f }, { 0x00e1, 0x0= 020 }, + { 0x00e2, 0x0001 }, { 0x00e3, 0x0030 }, { 0x00e4, 0x0070 }, { 0x00e5, 0x0= 000 }, + { 0x00e6, 0x0000 }, { 0x00e7, 0x0033 }, { 0x00e8, 0x000f }, { 0x00e9, 0x0= 013 }, + { 0x00ea, 0x0000 }, { 0x00eb, 0x00ee }, { 0x00ee, 0x0000 }, { 0x00ef, 0x0= 07e }, + { 0x00f0, 0x003f }, { 0x00f1, 0x007f }, { 0x00f2, 0x0078 }, { 0x00f3, 0x0= 058 }, + { 0x00f4, 0x0088 }, { 0x00f5, 0x0008 }, { 0x00f6, 0x000f }, { 0x00f7, 0x0= 0bc }, + { 0x00f8, 0x0008 }, { 0x00f9, 0x0060 }, { 0x00fa, 0x001a }, { 0x00fb, 0x0= 070 }, + { 0x00fc, 0x0000 }, { 0x00fd, 0x0000 }, { 0x00fe, 0x0000 }, { 0x00ff, 0x0= 033 }, + { 0x0100, 0x001a }, { 0x0101, 0x0014 }, { 0x0102, 0x00ee }, { 0x0105, 0x0= 03c }, + { 0x0106, 0x0001 }, { 0x0107, 0x000a }, { 0x0108, 0x009d }, { 0x0109, 0x0= 00a }, + { 0x010a, 0x0000 }, { 0x010b, 0x0040 }, { 0x010c, 0x0040 }, { 0x010d, 0x0= 088 }, + { 0x010e, 0x0010 }, { 0x010f, 0x00f0 }, { 0x0110, 0x0010 }, { 0x0111, 0x0= 0f0 }, + { 0x0112, 0x0000 }, { 0x0113, 0x0000 }, { 0x0114, 0x0010 }, { 0x0115, 0x0= 055 }, + { 0x0116, 0x003f }, { 0x0117, 0x0036 }, { 0x0118, 0x0000 }, { 0x0119, 0x0= 000 }, + { 0x011a, 0x0000 }, { 0x011b, 0x0087 }, { 0x011c, 0x0011 }, { 0x011d, 0x0= 000 }, + { 0x011e, 0x0033 }, { 0x011f, 0x0088 }, { 0x0120, 0x0000 }, { 0x0121, 0x0= 087 }, + { 0x0122, 0x0011 }, { 0x0123, 0x0000 }, { 0x0124, 0x0033 }, { 0x0125, 0x0= 088 }, + { 0x0126, 0x0020 }, { 0x0127, 0x003f }, { 0x0128, 0x0044 }, { 0x0129, 0x0= 08c }, + { 0x012a, 0x006c }, { 0x012b, 0x0022 }, { 0x012c, 0x00be }, { 0x012d, 0x0= 055 }, + { 0x012f, 0x000c }, { 0x0130, 0x00aa }, { 0x0131, 0x0002 }, { 0x0132, 0x0= 000 }, + { 0x0133, 0x0010 }, { 0x0134, 0x0001 }, { 0x0135, 0x0000 }, { 0x0136, 0x0= 000 }, + { 0x0137, 0x0080 }, { 0x0138, 0x0060 }, { 0x0139, 0x0044 }, { 0x013a, 0x0= 055 }, + { 0x013b, 0x0001 }, { 0x013c, 0x0055 }, { 0x013d, 0x0001 }, { 0x013e, 0x0= 005 }, + { 0x013f, 0x0055 }, { 0x0140, 0x0055 }, { 0x0146, 0x0000 }, { 0x0147, 0x0= 000 }, + { 0x0148, 0x0000 }, { 0x0149, 0x0000 }, { 0x014a, 0x0000 }, { 0x014b, 0x0= 000 }, + { 0x014c, 0x0000 }, { 0x014d, 0x0000 }, { 0x014e, 0x0001 }, { 0x014f, 0x0= 000 }, + { 0x0150, 0x0000 }, { 0x0151, 0x0000 }, { 0x0154, 0x000c }, { 0x0155, 0x0= 00c }, + { 0x0156, 0x000c }, { 0x0157, 0x0000 }, { 0x0158, 0x002b }, { 0x0159, 0x0= 084 }, + { 0x015a, 0x0015 }, { 0x015b, 0x000f }, { 0x015c, 0x0000 }, { 0x015d, 0x0= 000 }, + { 0x015e, 0x0000 }, { 0x015f, 0x0000 }, { 0x0160, 0x0000 }, { 0x0161, 0x0= 000 }, + { 0x0162, 0x0000 }, { 0x0163, 0x0000 }, { 0x0164, 0x0000 }, { 0x0165, 0x0= 000 }, + { 0x0166, 0x0000 }, { 0x0167, 0x0000 }, { 0x0168, 0x0000 }, { 0x0169, 0x0= 000 }, + { 0x016a, 0x0000 }, { 0x016b, 0x0000 }, { 0x016c, 0x0000 }, { 0x016d, 0x0= 000 }, + { 0x0170, 0x0000 }, { 0x0171, 0x0077 }, { 0x0172, 0x0077 }, { 0x0173, 0x0= 077 }, + { 0x0174, 0x0077 }, { 0x0175, 0x0000 }, { 0x0176, 0x0003 }, { 0x0177, 0x0= 037 }, + { 0x0178, 0x0003 }, { 0x0179, 0x0000 }, { 0x017a, 0x0021 }, { 0x017b, 0x0= 002 }, + { 0x017c, 0x0000 }, { 0x017d, 0x00aa }, { 0x017e, 0x0000 }, { 0x017f, 0x0= 0aa }, + { 0x0180, 0x0000 }, { 0x0190, 0x0000 }, { 0x0191, 0x0077 }, { 0x0192, 0x0= 077 }, + { 0x0193, 0x0077 }, { 0x0194, 0x0077 }, { 0x0195, 0x0000 }, { 0x0196, 0x0= 003 }, + { 0x0197, 0x0037 }, { 0x0198, 0x0003 }, { 0x0199, 0x0000 }, { 0x019a, 0x0= 021 }, + { 0x019b, 0x0002 }, { 0x019c, 0x0000 }, { 0x019d, 0x00aa }, { 0x019e, 0x0= 000 }, + { 0x019f, 0x00aa }, { 0x01a0, 0x0000 }, { 0x01a1, 0x0002 }, { 0x01a2, 0x0= 00f }, + { 0x01a3, 0x000f }, { 0x01a4, 0x0000 }, { 0x01a5, 0x0000 }, { 0x01a6, 0x0= 000 }, + { 0x01a7, 0x0002 }, { 0x01a8, 0x000f }, { 0x01a9, 0x000f }, { 0x01aa, 0x0= 000 }, + { 0x01ab, 0x0000 }, { 0x01ac, 0x0000 }, { 0x01ad, 0x0084 }, { 0x01ae, 0x0= 060 }, + { 0x01af, 0x0047 }, { 0x01b0, 0x0047 }, { 0x01b1, 0x0000 }, { 0x01b2, 0x0= 000 }, + { 0x01b3, 0x0000 }, { 0x01b4, 0x0000 }, { 0x01b5, 0x0000 }, { 0x01b6, 0x0= 000 }, + { 0x01b7, 0x0005 }, { 0x01b8, 0x0000 }, { 0x01b9, 0x0000 }, { 0x01ba, 0x0= 000 }, + { 0x01bb, 0x0000 }, { 0x01bc, 0x0000 }, { 0x01bd, 0x0000 }, { 0x01be, 0x0= 000 }, + { 0x01bf, 0x0000 }, { 0x01c0, 0x0000 }, { 0x01c1, 0x0000 }, { 0x01c2, 0x0= 0a0 }, + { 0x01c3, 0x0000 }, { 0x01c4, 0x0000 }, { 0x01c5, 0x0000 }, { 0x01c6, 0x0= 000 }, + { 0x01c7, 0x0000 }, { 0x01c8, 0x0000 }, { 0x01c9, 0x0000 }, { 0x01ca, 0x0= 000 }, }; -*/ =20 /* Extracted from MMIO dump of 6.30.223.141 */ static u16 r2057_rev9_init[][2] =3D { @@ -539,6 +627,10 @@ void r2057_upload_inittabs(struct b43_wldev *dev) } else if (phy->radio_rev =3D=3D 7) { table =3D r2057_rev7_init[0]; size =3D ARRAY_SIZE(r2057_rev7_init); + } else if (phy->radio_rev =3D=3D 8) { + /* BCM6362 single-die 2.4 GHz. */ + table =3D r2057_rev8_init[0]; + size =3D ARRAY_SIZE(r2057_rev8_init); } break; case 9: --=20 2.43.0 Il 18/05/2026 03:49, Alessio Ferri ha scritto: > This series completes b43 support for the Broadcom N-PHY revision 8 > paired with radio 2057 revision 8. b43 already supports the surrounding > PHY family - N-PHY rev 8 with radio 2057 rev 5 and rev 7 are handled, > and rev 16 with radio 2057 rev 9 is handled - but the rev 8 + rev 8 > combination falls through four dispatcher gaps: >=20 > - radio_2057.c, r2057_upload_inittabs(), case 8 lists radio_rev 5 > and 7 only; > - radio_2057.c, r2057_get_chantabent_rev7(), case 8 lists radio_rev > 5 only; > - tables_nphy.c, b43_nphy_get_ipa_gain_table(), case 8 lists > radio_rev 5 only; > - radio_2057.c carries r2057_rev8_init[] as a 54-entry stub commented > out with "TODO: Which devices should use it?". >=20 > Two further pieces of plumbing are needed to reach those dispatchers > in the first place: d11 core revision 0x16 is missing from the b43 > bcma id table, and the corerev 22 / radio 2057 combination needs the > 24-bit indirect radio access path that brcmsmac uses for the same > silicon generation (see brcmsmac/phy/phy_cmn.c read_radio_reg() / > write_radio_reg()). >=20 > The series: >=20 > 1/6 b43: add d11 core revision 0x16 to id table > 2/6 b43: route d11 corerev 22 to 24-bit indirect radio access > 3/6 b43: support radio 2057 rev 8 > 4/6 b43: add IPA TX gain table for N-PHY r8 + radio 2057 r8 > 5/6 b43: add channel info table for N-PHY r8 + radio 2057 r8 > 6/6 b43: add RF power offset for N-PHY r8 + radio 2057 r8 >=20 > Patches are ordered so that each one fixes the next visible failure > in bring-up: 1/6 makes b43 bind to the core, 2/6 lets phy versioning > read coherent radio identifiers, 3/6 unblocks the boot-time radio > calibration that otherwise stalls the PSM at microcode startup, and > 4/6-6/6 fill the remaining 2.4 GHz dispatcher entries so > b43_nphy_set_channel completes to the default channel and core_init > proceeds past PHY init. >=20 > Tested on a D-Link DSL-3580L (Broadcom BCM6362 SoC, single-die 2.4 GHz > N-PHY rev 8 + radio 2057 rev 8 in 2.4 GHz IPA mode). The chip is in > service worldwide in xDSL CPE devices. >=20 > b43 is currently Orphan in MAINTAINERS. These patches do not add a > new chip family or PHY infrastructure; they fill four explicit > dispatcher gaps for a combination of an already-supported PHY and > an already-supported radio. >=20 > Alessio Ferri (6): > b43: add d11 core revision 0x16 to id table > b43: route d11 corerev 22 to 24-bit indirect radio access > b43: support radio 2057 rev 8 > b43: add IPA TX gain table for N-PHY r8 + radio 2057 r8 > b43: add channel info table for N-PHY r8 + radio 2057 r8 > b43: add RF power offset for N-PHY r8 + radio 2057 r8 >=20 > drivers/net/wireless/broadcom/b43/main.c | 10 +- > .../net/wireless/broadcom/b43/radio_2057.c | 230 ++++++++++++++++-- > .../net/wireless/broadcom/b43/tables_nphy.c | 58 +++++ > 3 files changed, 280 insertions(+), 18 deletions(-) > From nobody Mon May 25 09:57:53 2026 Received: from smtpdh20-1.aruba.it (smtpdh20-1.aruba.it [62.149.155.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 793CB1FC10C for ; Mon, 18 May 2026 01:53:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=62.149.155.164 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069222; cv=none; b=MUTRWz+56N/ojeq4KWf04dh7gUUHzeFBW559lCcPH3XstNiMmX1YqMkYI5QeSnn8GdPFRuFs7Brc4WrKy1pwpOjx5Xk8SGC+9R7l0+K3XGibGe3MP6L+83hDIbGyPMA3KqeTHgE12IglvfNqaYOi+kPSe/pZ6ufNKSGi3ZLf1zM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069222; c=relaxed/simple; bh=f92PXsrNJbn1Pcjwgfmmj1GECyc39UkvGMf/+SXNDBk=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=WeoCEpC+2l6RyRhDHkoLAa6uR4S6wYzWissQjzbcvh2NLYW3rbbzQ1F6tPQlXdh16Vg8qXTtnyJ7YLKkbKgTz3XqJpBWiGFzWQSScy5FQLl3moMDQSZfKXe5H02wmL96BXXnKWNkjRKyQwyz7aymivKtTi4s8fUVy74UfvghwGU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it; spf=pass smtp.mailfrom=mythread.it; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b=Gblx13SA; arc=none smtp.client-ip=62.149.155.164 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mythread.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b="Gblx13SA" Received: from [192.168.1.83] ([79.20.159.46]) by Aruba SMTP with ESMTPSA id OnApwqtIQEZ9tOnApwfr4s; Mon, 18 May 2026 03:53:39 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mythread.it; s=a1; t=1779069219; bh=f92PXsrNJbn1Pcjwgfmmj1GECyc39UkvGMf/+SXNDBk=; h=Date:MIME-Version:Subject:From:To:Content-Type; b=Gblx13SAtEb9W8xwj8087xG2a/j+sSCNX8wC8QwXK2X77ILnJAXauLmcbwwSnPT0E nQRzrSk1hFix9COeb24LiUW8rp0ApV6PjNzSe2rcfRnM4PhyeF2ZiGA9EdMF6ZDMyz HH/VlgvueCypCCoIRNwwmvMYAIuuOPZYedQjm/yGrxwCvcM99/YrgMV7Mo8hmgS2kr 8M6bG8J/43zVQ3VJUd2lXJ+fs1LJXp9ePF+oHt4qJ8XyAIxrBx8GdGnsOkXQj2aU10 BFguf4ksdOmOrcba4o2UYI/AAZMYzS4CjgU2r3O/V+xPKZjY3DMCb071aoanASF61O fJhg7bc95ni+Q== Message-ID: <4581a48e-a6e4-46b1-853f-16db445d6890@mythread.it> Date: Mon, 18 May 2026 03:53:38 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 4/6] b43: add IPA TX gain table for N-PHY r8 + radio 2057 r8 Content-Language: it From: Alessio Ferri To: linux-wireless@vger.kernel.org Cc: b43-dev@lists.infradead.org, kvalo@kernel.org, linux-kernel@vger.kernel.org References: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> In-Reply-To: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> Content-Transfer-Encoding: quoted-printable X-CMAE-Envelope: MS4xfAVt9958lNEGYmKhM3kGOm8jhgNbPjckyGJqChUkpjOijmN/r4gSxm686Gvv9Cs7gEXjeIOKzMAtVztZx4xXW06sW1u0FUVs/aYxIDSdnxMX7WdDcz6x W75fppm2wB1U2S7MNVGwfvYXWZEdqw1yuIs5+iRx0riBg1+OGWzOien0NzesK6utJvAcWSsNz6bSiIUw2ulETZ9Iwqh91PwA5nP99mLitbkyLcmYYaDFPKHa UwqniGIYyjMXytW2prRaqwW9KhCixmAGwcalWYy+6uE+/cNbcHNPaPzAHva9KnFHDHXzBIWrPuVaZgJxcMTGuw== Content-Type: text/plain; charset="utf-8" Add the 2.4 GHz IPA TX gain table for N-PHY rev 8 paired with radio 2057 rev 8 and wire it to the existing dispatcher. b43_nphy_get_ipa_gain_table() in tables_nphy.c currently handles case 8 only for radio_rev =3D=3D 5; radio_rev =3D=3D 8 falls through and the function logs: b43-phyX ERROR: No 2GHz IPA gain table available for this device b43-phyX ERROR: PHY init: Channel switch to default failed leaving b43_phy_init() to return an error and core_init to abort before the MAC is enabled. The new b43_ntab_tx_gain_ipa_2057_rev8_2g[] is 128 u32 entries, matching the layout of the existing b43_ntab_tx_gain_ipa_2057_ rev5_2g and b43_ntab_tx_gain_ipa_2057_rev9_2g siblings in this file. Each entry packs five gain fields decoded by wlc_phy_get_tx_gain_nphy in the proprietary driver, the same encoding b43 uses for the other 2057 IPA tables. The high byte of every entry differs from the rev 5 sibling (0x40 vs 0x30): different PAD-gain code prefix for the rev 8 front-end. The low 24 bits coincide with rev 5 across the whole table - the gain step amplitudes are the same, only the PAD-gain selector prefix changes. Values extracted from an MMIO dump of the proprietary Broadcom wl driver running on BCM6362 silicon (wl driver 6.30.102.7). Encoding cross-validated by re-deriving the in-tree rev 5 table from the same source using the same extraction method - the result matches b43_ntab_tx_gain_ipa_2057_rev5_2g byte-for-byte. Signed-off-by: Alessio Ferri --- .../net/wireless/broadcom/b43/tables_nphy.c | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/drivers/net/wireless/broadcom/b43/tables_nphy.c b/drivers/net/= wireless/broadcom/b43/tables_nphy.c index 41a25d909..84e8d718d 100644 --- a/drivers/net/wireless/broadcom/b43/tables_nphy.c +++ b/drivers/net/wireless/broadcom/b43/tables_nphy.c @@ -2715,6 +2715,43 @@ static const u32 b43_ntab_tx_gain_ipa_2057_rev5_2g[]= =3D { 0x300f0715, 0x300f0715, 0x300f0715, 0x300f0715, }; =20 +/* Extracted from MMIO dump of 6.30.102.7 */ +static const u32 b43_ntab_tx_gain_ipa_2057_rev8_2g[] =3D { + 0x40ff0031, 0x40e70031, 0x40e7002e, 0x40cf002e, + 0x40bf002e, 0x40af002e, 0x409f002f, 0x407f0033, + 0x407f0031, 0x407f002e, 0x4077002e, 0x406f002e, + 0x4067002e, 0x405f002f, 0x40570030, 0x4057002d, + 0x404f002e, 0x40470031, 0x4047002e, 0x4047002c, + 0x40470029, 0x403f002c, 0x403f0029, 0x4037002d, + 0x4037002a, 0x40370028, 0x402f002c, 0x402f002a, + 0x402f0028, 0x402f0026, 0x4027002c, 0x40270029, + 0x40270027, 0x40270025, 0x40270023, 0x401f002c, + 0x401f002a, 0x401f0028, 0x401f0025, 0x401f0024, + 0x401f0022, 0x401f001f, 0x4017002d, 0x4017002b, + 0x40170028, 0x40170026, 0x40170024, 0x40170022, + 0x40170020, 0x4017001e, 0x4017001d, 0x4017001b, + 0x4017001a, 0x40170018, 0x40170017, 0x40170015, + 0x400f002c, 0x400f0029, 0x400f0027, 0x400f0024, + 0x400f0022, 0x400f0021, 0x400f001f, 0x400f001d, + 0x400f001b, 0x400f001a, 0x400f0018, 0x400f0017, + 0x400f0016, 0x400f0015, 0x400f0115, 0x400f0215, + 0x400f0315, 0x400f0415, 0x400f0515, 0x400f0615, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, + 0x400f0715, 0x400f0715, 0x400f0715, 0x400f0715, +}; + + /* Extracted from MMIO dump of 6.30.223.141 */ static const u32 b43_ntab_tx_gain_ipa_2057_rev9_2g[] =3D { 0x60ff0031, 0x60e7002c, 0x60cf002a, 0x60c70029, @@ -3651,6 +3688,8 @@ static const u32 *b43_nphy_get_ipa_gain_table(struct = b43_wldev *dev) case 8: if (phy->radio_rev =3D=3D 5) return b43_ntab_tx_gain_ipa_2057_rev5_2g; + if (phy->radio_rev =3D=3D 8) + return b43_ntab_tx_gain_ipa_2057_rev8_2g; break; case 6: if (dev->dev->chip_id =3D=3D BCMA_CHIP_ID_BCM47162) --=20 2.43.0 From nobody Mon May 25 09:57:53 2026 Received: from smtpdh20-1.aruba.it (smtpdh20-1.aruba.it [62.149.155.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1209E2405EB for ; Mon, 18 May 2026 01:54:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=62.149.155.164 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069264; cv=none; b=Cb4zBrKGS9OZdk+4REQnJlJnLpplUnge0k4L1bkXWn7RBVgMGA/m2tqsNR0/5nkO3fP3nbEJuLEszoPv+AaJnCL+gYHHnyrQKmLj9DXU7iDPNjRyOdWN1fPHkXrKUp9qfE8HRl6uTeKKE3DSSSlcIw+Z09J2ElA7AUYdrLF9QzA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069264; c=relaxed/simple; bh=hz7MrT7mnFSUTsm2B+ndFKrzdRHLoKRmLnkAUnEZNKI=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=JoXmALOejgs/uZ7d3AOE9gn1oMlLESBY48PkCW2kkLK+E2GRRyLxQeTIxhDYaYKiyx69WdXlE5RM9EMnDR9qdyZ8c5Opk6D2ABjt+lrTgxEhNiOIEWflyI0EzTmwpwsFDY+JMjEWzV2ZczoU0N2p8fd88yncOjQWPKJTh3ubbgE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it; spf=pass smtp.mailfrom=mythread.it; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b=hgfrmLWJ; arc=none smtp.client-ip=62.149.155.164 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mythread.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b="hgfrmLWJ" Received: from [192.168.1.83] ([79.20.159.46]) by Aruba SMTP with ESMTPSA id OnBUwqtX3EZ9tOnBUwfr8L; Mon, 18 May 2026 03:54:20 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mythread.it; s=a1; t=1779069260; bh=hz7MrT7mnFSUTsm2B+ndFKrzdRHLoKRmLnkAUnEZNKI=; h=Date:MIME-Version:Subject:From:To:Content-Type; b=hgfrmLWJfeq/1e0q5sH8l6jYHr0al9qgWAGX+Np6ZeoQ/zZz7ZDUI9TKvFcFjURu6 zfVALkVx9zN6MeFIHX+mYkyREq35CX7LxzQ0yR+5dLtbibbAq6tQYdfJTK7WpO6w71 Q/Cv1mVaQdWkJE155738nMT5g5hstT6dy1YLf8MzmbJLavdQ8IoWx1Aje58wAN2nyE n4WZh0DiqxrNvnEypdnn9wMpFSBZ+ELVbMT8Jsq1XsbzV4S8/hGxT5/Twfqe5I+kzu ItsKchJGl9mo7QX0C+b5jDhK7Kjqvix0utGM8cyx3mbYc07MWC7zjv7+IwXArrU3Zg nZGmJLb+nblLQ== Message-ID: Date: Mon, 18 May 2026 03:54:20 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 5/6] b43: add channel info table for N-PHY r8 + radio 2057 r8 Content-Language: it From: Alessio Ferri To: linux-wireless@vger.kernel.org Cc: b43-dev@lists.infradead.org, kvalo@kernel.org, linux-kernel@vger.kernel.org References: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> In-Reply-To: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> Content-Transfer-Encoding: quoted-printable X-CMAE-Envelope: MS4xfMCgR4Gon6FZwgrDF8ToEOuNGr5G3q0NfMcJLls6O8z5zig+VDn8IWhLmoUIMR1nYVA3mLbDnJbDA0+lwj4VStL96HInPH9HA2AqQXChiRLM0G/0f5VM 2Djnnk4CYNAUyx/g+u+1ZnIMy1OOLd89os5KUFD0M+pyXz7jd7c0GrsCcLyCdcKtshYmN8w3OvQRf+dXdtM3SSLYcztCDNQwzdkQqsf/WqWJqvtd7qNfuhF5 LQ2eu09PyB6fU9EzbnpMWdKgOUGBO+M/11VBgTMlDFqlVsAq4hBcY/pU8lgK8Sfq69A1+pNwp1BAXeDkqQmOFA== Content-Type: text/plain; charset="utf-8" Add the 2.4 GHz channel info table for N-PHY rev 8 paired with radio 2057 rev 8 and wire it to the existing dispatcher in r2057_get_chantabent_rev7(). The dispatcher's case 8 currently handles radio_rev =3D=3D 5 only. For radio_rev =3D=3D 8 both output pointers stay NULL, b43_nphy_set_channel() returns an error and channel switch to the default channel fails. The new b43_nphy_chantab_phy_rev8_radio_rev8[] is 14 entries covering the standard 2.4 GHz channel set (2412..2472 in 5 MHz steps, plus 2484 for channel 14). Each entry uses the b43_nphy_chantabent_rev7_2g struct layout already defined in this file: 18 RADIOREGS7_2G fields followed by 6 PHYREGS (SFO config). Values extracted from an MMIO dump of the proprietary Broadcom wl driver running on BCM6362 silicon (wl driver 6.30.102.7). Field ordering and encoding cross-validated by re-deriving the in-tree b43_nphy_chantab_phy_rev8_radio_rev5 table from the same source through the same extraction - the result matches the existing in-tree table byte-for-byte. Signed-off-by: Alessio Ferri --- .../net/wireless/broadcom/b43/radio_2057.c | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/drivers/net/wireless/broadcom/b43/radio_2057.c b/drivers/net/w= ireless/broadcom/b43/radio_2057.c index 9f693d92b..e761f899b 100644 --- a/drivers/net/wireless/broadcom/b43/radio_2057.c +++ b/drivers/net/wireless/broadcom/b43/radio_2057.c @@ -445,6 +445,109 @@ static const struct b43_nphy_chantabent_rev7_2g b43_n= phy_chantab_phy_rev17_radio }, }; =20 +/* Extracted from MMIO dump of 6.30.102.7 */ +static const struct b43_nphy_chantabent_rev7_2g b43_nphy_chantab_phy_rev8_= radio_rev8[] =3D { + { + .freq =3D 2412, + RADIOREGS7_2G(0x48, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x6c, + 0x09, 0x0f, 0x09, 0x07, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03c9, 0x03c5, 0x03c1, 0x043a, 0x043f, 0x0443), + }, + { + .freq =3D 2417, + RADIOREGS7_2G(0x4b, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x71, + 0x09, 0x0f, 0x09, 0x07, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03cb, 0x03c7, 0x03c3, 0x0438, 0x043d, 0x0441), + }, + { + .freq =3D 2422, + RADIOREGS7_2G(0x4e, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x76, + 0x09, 0x0f, 0x09, 0x06, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03cd, 0x03c9, 0x03c5, 0x0436, 0x043a, 0x043f), + }, + { + .freq =3D 2427, + RADIOREGS7_2G(0x52, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x7b, + 0x09, 0x0f, 0x09, 0x06, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03cf, 0x03cb, 0x03c7, 0x0434, 0x0438, 0x043d), + }, + { + .freq =3D 2432, + RADIOREGS7_2G(0x55, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x80, + 0x09, 0x0f, 0x09, 0x06, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03d1, 0x03cd, 0x03c9, 0x0431, 0x0436, 0x043a), + }, + { + .freq =3D 2437, + RADIOREGS7_2G(0x58, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x85, + 0x09, 0x0f, 0x09, 0x06, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03d3, 0x03cf, 0x03cb, 0x042f, 0x0434, 0x0438), + }, + { + .freq =3D 2442, + RADIOREGS7_2G(0x5c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8a, + 0x09, 0x0f, 0x08, 0x05, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03d5, 0x03d1, 0x03cd, 0x042d, 0x0431, 0x0436), + }, + { + .freq =3D 2447, + RADIOREGS7_2G(0x5f, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x8f, + 0x09, 0x0f, 0x08, 0x05, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03d7, 0x03d3, 0x03cf, 0x042b, 0x042f, 0x0434), + }, + { + .freq =3D 2452, + RADIOREGS7_2G(0x62, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x94, + 0x09, 0x0f, 0x08, 0x05, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03d9, 0x03d5, 0x03d1, 0x0429, 0x042d, 0x0431), + }, + { + .freq =3D 2457, + RADIOREGS7_2G(0x66, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x99, + 0x09, 0x0f, 0x08, 0x05, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03db, 0x03d7, 0x03d3, 0x0427, 0x042b, 0x042f), + }, + { + .freq =3D 2462, + RADIOREGS7_2G(0x69, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0x9e, + 0x09, 0x0f, 0x08, 0x05, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03dd, 0x03d9, 0x03d5, 0x0424, 0x0429, 0x042d), + }, + { + .freq =3D 2467, + RADIOREGS7_2G(0x6c, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa3, + 0x09, 0x0f, 0x07, 0x04, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03df, 0x03db, 0x03d7, 0x0422, 0x0427, 0x042b), + }, + { + .freq =3D 2472, + RADIOREGS7_2G(0x70, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xa8, + 0x09, 0x0f, 0x07, 0x04, 0x61, 0x73, 0xf0, 0x61, + 0x73, 0xf0), + PHYREGS(0x03e1, 0x03dd, 0x03d9, 0x0420, 0x0424, 0x0429), + }, + { + .freq =3D 2484, + RADIOREGS7_2G(0x78, 0x16, 0x30, 0x1b, 0x0a, 0x0a, 0x30, 0xb4, + 0x09, 0x0f, 0x07, 0x04, 0x61, 0x73, 0xe0, 0x61, + 0x73, 0xe0), + PHYREGS(0x03e6, 0x03e2, 0x03de, 0x041b, 0x041f, 0x0424), + } +}; + + /* Extracted from MMIO dump of 6.30.223.141 */ static const struct b43_nphy_chantabent_rev7 b43_nphy_chantab_phy_rev16_ra= dio_rev9[] =3D { { @@ -678,6 +781,9 @@ void r2057_get_chantabent_rev7(struct b43_wldev *dev, u= 16 freq, if (phy->radio_rev =3D=3D 5) { e_r7_2g =3D b43_nphy_chantab_phy_rev8_radio_rev5; len =3D ARRAY_SIZE(b43_nphy_chantab_phy_rev8_radio_rev5); + } else if (phy->radio_rev =3D=3D 8) { + e_r7_2g =3D b43_nphy_chantab_phy_rev8_radio_rev8; + len =3D ARRAY_SIZE(b43_nphy_chantab_phy_rev8_radio_rev8); } break; case 16: --=20 2.43.0 From nobody Mon May 25 09:57:53 2026 Received: from smtpdh20-1.aruba.it (smtpdh20-1.aruba.it [62.149.155.164]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5536E1EB5E3 for ; Mon, 18 May 2026 01:55:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=62.149.155.164 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069301; cv=none; b=Pru5tMatGphQePB1wkv0vqgrwRheaRN5X8bGXkAgKoVqQiqu+0NhlNFszCfyXxs0rA5z1ofaTMpMAcMKdKBOc/9pQHQPY1OIZj8kyxGuUKNfJM6T3gDvlx0HcCFXol+NfdJYgzzX1ywpDG/ypsMeEW157KjBhZfjagiLEpWYCY4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779069301; c=relaxed/simple; bh=5gwCkCWIBz50Rn5n49EQqgUTxuK9Jjy1Zr54t/an8fM=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=PLjCStEP8YnRzbK3izmjb0dGUiBJnnTDmdazxK/libyyfhZ4bSs8QPIeA5HG/20T3FtGKr03+YhTUJQ7EATAZP/Ve4j8buEWgrNsRDzloQ7jEUuGEH+lAFxhcPYK9rFFimg5jf8cJD8Q4smfKDxEAGAqChpxpZcIJZF8+LljTLc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it; spf=pass smtp.mailfrom=mythread.it; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b=QoK0UFx9; arc=none smtp.client-ip=62.149.155.164 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=mythread.it Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mythread.it Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=mythread.it header.i=@mythread.it header.b="QoK0UFx9" Received: from [192.168.1.83] ([79.20.159.46]) by Aruba SMTP with ESMTPSA id OnC7wqtkaEZ9tOnC7wfrBg; Mon, 18 May 2026 03:55:00 +0200 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=mythread.it; s=a1; t=1779069300; bh=5gwCkCWIBz50Rn5n49EQqgUTxuK9Jjy1Zr54t/an8fM=; h=Date:MIME-Version:Subject:From:To:Content-Type; b=QoK0UFx9wJBHKuzxTUgsWprSb5m8MSzlQDJDXT3Vb8e7q6r2mhPBI2kNSqJqPDUaw MjnhKziAe+YikNnayFfCClJINbU/VL/TvIgTrvSxTXlTrAJ4LH8Ki+KSxMUVMrwxna KqZ9gMi+rUXLM1JTFgOBKR7gxHG+z0Pg0yyd+PWYXOwCUJFcBwjJ8NKkikiyuiS6ua ZXpXQ7emxKoLPKlas3zLSsCBZl7EsLNKK9RW9lxTPbe4GzNbdAbEkXQ3n2R1J882pJ iuCqWMZIhRnCVzJonI2av8Y7LN+bdnlqcKZMO8BkiQdjWsXsaOaawAJgLtKuHuG5rG Go9k92aPURUgg== Message-ID: Date: Mon, 18 May 2026 03:54:59 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH 6/6] b43: add RF power offset for N-PHY r8 + radio 2057 r8 Content-Language: it From: Alessio Ferri To: linux-wireless@vger.kernel.org Cc: b43-dev@lists.infradead.org, kvalo@kernel.org, linux-kernel@vger.kernel.org References: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> In-Reply-To: <8c0a07d2-9ec9-43d6-bdf7-f625bbb4a38a@mythread.it> Content-Transfer-Encoding: quoted-printable X-CMAE-Envelope: MS4xfEV+FgEZjDr7wElVwNDrVsoho3D+ICj7D1FAxO1boKBXEYtpuzP1fti743QcggKEnr7SWguIQaAmTCUIs2XYTNEOJDOsmAoL1RQDWU0Ze1/6051S10Xl UoakDMDOdbnwe8kuEsHiye7r1yUnQrRZzqtcpOpsLqLFZwST7cvPfh6Qo+3roPtHicAu0Ds32hIjxNj1LWgC2Zyk3FTsf/1Rxbof3fbGXSzW45n5OCiRWSuT djoQruKfmINP5dw80xvSWuprSFlsEiOFTD3IQ4yI3bFYDyc1uUHkQHxRxWfMxxDTRNv0gbafSxvYFpp7tYr8/g== Content-Type: text/plain; charset="utf-8" Add the 2.4 GHz RF power offset table for N-PHY rev 8 paired with radio 2057 rev 8 and wire it to the existing dispatcher. b43_ntab_get_rf_pwr_offset_table() currently dispatches on phy->rev =3D=3D 17 (radio_rev 14) and phy->rev =3D=3D 16 (radio_rev 9) for 2.4 GHz. phy->rev =3D=3D 8 falls through and the function logs: b43-phyX ERROR: No 2GHz RF power table available for this device Add a phy->rev =3D=3D 8 / radio_rev =3D=3D 8 case returning the new table. The values are sourced from the proprietary Broadcom wl driver's nphy_papd_padgain_dlt_2g_2057rev5 array. Reusing the rev 5 values is structurally appropriate: the IPA TX gain table added by the preceding patch in this series shares the low 24 bits of every entry with rev 5 - same gain step amplitudes, only the PAD-gain selector byte differs. b43's pad_gain extraction in b43_nphy_tx_pwr_ctl_init() reads bits 19..23 of the gain entry, which sit in the shared low-24-bit range; the same gain index therefore maps to the same physical PAD gain code on both revisions and warrants the same per-index dB offset. Note that b43_nphy_tx_gain_table_upload() currently has a "TODO: Enable this once we have gains configured" early-return for phy->rev >=3D 7. With that early-return in place, this table is fetched (silencing the b43err that would otherwise abort PHY init) but its values are not yet written to MMIO. Resolving the TODO is a separate investigation outside the scope of this series; the values supplied here are documented now so that, once the upload path is enabled, the correct rev 8 offsets are already in tree. Signed-off-by: Alessio Ferri --- .../net/wireless/broadcom/b43/tables_nphy.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/net/wireless/broadcom/b43/tables_nphy.c b/drivers/net/= wireless/broadcom/b43/tables_nphy.c index 84e8d718d..ecd660b9c 100644 --- a/drivers/net/wireless/broadcom/b43/tables_nphy.c +++ b/drivers/net/wireless/broadcom/b43/tables_nphy.c @@ -2923,6 +2923,21 @@ static const s16 b43_ntab_rf_pwr_offset_2057_rev9_5g= [] =3D { 0, }; =20 +/* Sourced from the rev 5 sibling: the rev 8 IPA TX gain table + * shares the low 24 bits of every entry with rev 5 (only the + * PAD-gain selector byte differs), so the same gain index maps to + * the same physical PAD gain code on both revisions. + */ +static const s16 b43_ntab_rf_pwr_offset_2057_rev8_2g[] =3D { + -109, -109, -82, -68, -58, + -50, -44, -39, -35, -31, + -28, -26, -23, -21, -19, + -17, -16, -14, -13, -11, + -10, -9, -8, -7, -5, + -5, -4, -3, -2, -1, + -1, 0, +}; + /* Extracted from MMIO dump of 6.30.223.248 * Entries: 0, 26, 28, 29, 30, 31 were guessed */ @@ -3782,6 +3797,10 @@ const s16 *b43_ntab_get_rf_pwr_offset_table(struct b= 43_wldev *dev) if (phy->radio_rev =3D=3D 9) return b43_ntab_rf_pwr_offset_2057_rev9_2g; break; + case 8: + if (phy->radio_rev =3D=3D 8) + return b43_ntab_rf_pwr_offset_2057_rev8_2g; + break; } =20 b43err(dev->wl, --=20 2.43.0