linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH rtw-next 0/6] Add support for RTL8852AU
@ 2025-11-07 16:04 Bitterblue Smith
  2025-11-07 16:06 ` [PATCH rtw-next 1/6] wifi: rtw89: Use the correct power sequences for USB/SDIO Bitterblue Smith
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Bitterblue Smith @ 2025-11-07 16:04 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

Just in time for the last of these devices disappearing from the
market.

Bitterblue Smith (6):
  wifi: rtw89: Use the correct power sequences for USB/SDIO
  wifi: rtw89: Add rtw8852a_dle_mem_usb
  wifi: rtw89: Add rtw8852a_hfc_param_ini_usb
  wifi: rtw89: 8852a: Accept USB devices and load their MAC address
  wifi: rtw89: Add rtw8852au.c
  wifi: rtw89: Enable the new rtw89_8852au module

 drivers/net/wireless/realtek/rtw89/Kconfig    | 11 +++
 drivers/net/wireless/realtek/rtw89/Makefile   |  3 +
 drivers/net/wireless/realtek/rtw89/mac.c      | 26 +++++-
 drivers/net/wireless/realtek/rtw89/mac.h      |  5 ++
 drivers/net/wireless/realtek/rtw89/rtw8852a.c | 80 ++++++++++++++++---
 .../net/wireless/realtek/rtw89/rtw8852au.c    | 79 ++++++++++++++++++
 6 files changed, 192 insertions(+), 12 deletions(-)
 create mode 100644 drivers/net/wireless/realtek/rtw89/rtw8852au.c

-- 
2.51.1


^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH rtw-next 1/6] wifi: rtw89: Use the correct power sequences for USB/SDIO
  2025-11-07 16:04 [PATCH rtw-next 0/6] Add support for RTL8852AU Bitterblue Smith
@ 2025-11-07 16:06 ` Bitterblue Smith
  2025-11-10  8:48   ` Ping-Ke Shih
  2025-11-11  2:09   ` Ping-Ke Shih
  2025-11-07 16:07 ` [PATCH rtw-next 2/6] wifi: rtw89: Add rtw8852a_dle_mem_usb Bitterblue Smith
                   ` (4 subsequent siblings)
  5 siblings, 2 replies; 14+ messages in thread
From: Bitterblue Smith @ 2025-11-07 16:06 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

Make rtw89_mac_pwr_seq() select the right parts of the power sequences
based on the interface type.

This is only relevant for RTL8852A. The other chips don't use power
sequences.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
 drivers/net/wireless/realtek/rtw89/mac.c | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
index 0a8474002cb7..e22b5d8c8171 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.c
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
@@ -1295,11 +1295,26 @@ static int rtw89_mac_sub_pwr_seq(struct rtw89_dev *rtwdev, u8 cv_msk,
 static int rtw89_mac_pwr_seq(struct rtw89_dev *rtwdev,
 			     const struct rtw89_pwr_cfg * const *cfg_seq)
 {
+	u8 intf_msk;
 	int ret;
 
+	switch (rtwdev->hci.type) {
+	case RTW89_HCI_TYPE_PCIE:
+		intf_msk = PWR_INTF_MSK_PCIE;
+		break;
+	case RTW89_HCI_TYPE_USB:
+		intf_msk = PWR_INTF_MSK_USB;
+		break;
+	case RTW89_HCI_TYPE_SDIO:
+		intf_msk = PWR_INTF_MSK_SDIO;
+		break;
+	default:
+		return -EOPNOTSUPP;
+	}
+
 	for (; *cfg_seq; cfg_seq++) {
 		ret = rtw89_mac_sub_pwr_seq(rtwdev, BIT(rtwdev->hal.cv),
-					    PWR_INTF_MSK_PCIE, *cfg_seq);
+					    intf_msk, *cfg_seq);
 		if (ret)
 			return -EBUSY;
 	}
-- 
2.51.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH rtw-next 2/6] wifi: rtw89: Add rtw8852a_dle_mem_usb
  2025-11-07 16:04 [PATCH rtw-next 0/6] Add support for RTL8852AU Bitterblue Smith
  2025-11-07 16:06 ` [PATCH rtw-next 1/6] wifi: rtw89: Use the correct power sequences for USB/SDIO Bitterblue Smith
@ 2025-11-07 16:07 ` Bitterblue Smith
  2025-11-10  8:53   ` Ping-Ke Shih
  2025-11-07 16:08 ` [PATCH rtw-next 3/6] wifi: rtw89: Add rtw8852a_hfc_param_ini_usb Bitterblue Smith
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Bitterblue Smith @ 2025-11-07 16:07 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

Add rtw8852a_dle_mem_usb and its various quotas and sizes in struct
rtw89_mac_size_set.

"dle" could be "Data Link Engine" or "Double Link Engine". These are
some parameters needed for RTL8852AU.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
 drivers/net/wireless/realtek/rtw89/mac.c      |  9 +++++++++
 drivers/net/wireless/realtek/rtw89/mac.h      |  5 +++++
 drivers/net/wireless/realtek/rtw89/rtw8852a.c | 18 +++++++++++++++++-
 3 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
index e22b5d8c8171..dab0a76556c9 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.c
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
@@ -1669,6 +1669,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = {
 	/* PCIE 64 */
 	.wde_size0 = {RTW89_WDE_PG_64, 4095, 1,},
 	.wde_size0_v1 = {RTW89_WDE_PG_64, 3328, 0, 0,},
+	/* 8852A USB */
+	.wde_size1 = {RTW89_WDE_PG_64, 768, 0,},
 	/* DLFW */
 	.wde_size4 = {RTW89_WDE_PG_64, 0, 4096,},
 	.wde_size4_v1 = {RTW89_WDE_PG_64, 0, 3328, 0,},
@@ -1692,6 +1694,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = {
 	/* PCIE */
 	.ple_size0 = {RTW89_PLE_PG_128, 1520, 16,},
 	.ple_size0_v1 = {RTW89_PLE_PG_128, 2688, 240, 212992,},
+	/* 8852A USB */
+	.ple_size1 = {RTW89_PLE_PG_128, 3184, 16,},
 	.ple_size3_v1 = {RTW89_PLE_PG_128, 2928, 0, 212992,},
 	/* DLFW */
 	.ple_size4 = {RTW89_PLE_PG_128, 64, 1472,},
@@ -1715,6 +1719,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = {
 	/* PCIE 64 */
 	.wde_qt0 = {3792, 196, 0, 107,},
 	.wde_qt0_v1 = {3302, 6, 0, 20,},
+	/* 8852A USB */
+	.wde_qt1 = {512, 196, 0, 60,},
 	/* DLFW */
 	.wde_qt4 = {0, 0, 0, 0,},
 	/* PCIE 64 */
@@ -1743,6 +1749,9 @@ const struct rtw89_mac_size_set rtw89_mac_size = {
 	.ple_qt13 = {0, 0, 16, 48, 0, 0, 0, 0, 0, 0, 0,},
 	/* PCIE 64 */
 	.ple_qt18 = {147, 0, 16, 20, 17, 13, 89, 0, 32, 14, 8, 0,},
+	/* 8852A USB SCC */
+	.ple_qt25 = {1536, 0, 16, 48, 13, 13, 360, 0, 32, 40, 8, 0,},
+	.ple_qt26 = {2654, 0, 1134, 48, 64, 13, 1478, 0, 64, 128, 120, 0,},
 	/* USB 52C USB3.0 */
 	.ple_qt42 = {1068, 0, 16, 48, 4, 13, 178, 0, 16, 1, 8, 16, 0,},
 	/* USB 52C USB3.0 */
diff --git a/drivers/net/wireless/realtek/rtw89/mac.h b/drivers/net/wireless/realtek/rtw89/mac.h
index ce3474a7ba03..868413335f6c 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.h
+++ b/drivers/net/wireless/realtek/rtw89/mac.h
@@ -924,6 +924,7 @@ struct rtw89_mac_size_set {
 	const struct rtw89_hfc_prec_cfg hfc_prec_cfg_c0;
 	const struct rtw89_hfc_prec_cfg hfc_prec_cfg_c2;
 	const struct rtw89_dle_size wde_size0;
+	const struct rtw89_dle_size wde_size1;
 	const struct rtw89_dle_size wde_size0_v1;
 	const struct rtw89_dle_size wde_size4;
 	const struct rtw89_dle_size wde_size4_v1;
@@ -937,6 +938,7 @@ struct rtw89_mac_size_set {
 	const struct rtw89_dle_size wde_size25;
 	const struct rtw89_dle_size wde_size31;
 	const struct rtw89_dle_size ple_size0;
+	const struct rtw89_dle_size ple_size1;
 	const struct rtw89_dle_size ple_size0_v1;
 	const struct rtw89_dle_size ple_size3_v1;
 	const struct rtw89_dle_size ple_size4;
@@ -950,6 +952,7 @@ struct rtw89_mac_size_set {
 	const struct rtw89_dle_size ple_size33;
 	const struct rtw89_dle_size ple_size34;
 	const struct rtw89_wde_quota wde_qt0;
+	const struct rtw89_wde_quota wde_qt1;
 	const struct rtw89_wde_quota wde_qt0_v1;
 	const struct rtw89_wde_quota wde_qt4;
 	const struct rtw89_wde_quota wde_qt6;
@@ -967,6 +970,8 @@ struct rtw89_mac_size_set {
 	const struct rtw89_ple_quota ple_qt9;
 	const struct rtw89_ple_quota ple_qt13;
 	const struct rtw89_ple_quota ple_qt18;
+	const struct rtw89_ple_quota ple_qt25;
+	const struct rtw89_ple_quota ple_qt26;
 	const struct rtw89_ple_quota ple_qt42;
 	const struct rtw89_ple_quota ple_qt43;
 	const struct rtw89_ple_quota ple_qt44;
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
index fa347dbebf9a..7855fd55b43e 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
@@ -65,6 +65,19 @@ static const struct rtw89_dle_mem rtw8852a_dle_mem_pcie[] = {
 			       NULL},
 };
 
+static const struct rtw89_dle_mem rtw8852a_dle_mem_usb[] = {
+	[RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size1,
+			   &rtw89_mac_size.ple_size1, &rtw89_mac_size.wde_qt1,
+			   &rtw89_mac_size.wde_qt1, &rtw89_mac_size.ple_qt25,
+			   &rtw89_mac_size.ple_qt26},
+	[RTW89_QTA_DLFW] = {RTW89_QTA_DLFW, &rtw89_mac_size.wde_size4,
+			    &rtw89_mac_size.ple_size4, &rtw89_mac_size.wde_qt4,
+			    &rtw89_mac_size.wde_qt4, &rtw89_mac_size.ple_qt13,
+			    &rtw89_mac_size.ple_qt13},
+	[RTW89_QTA_INVALID] = {RTW89_QTA_INVALID, NULL, NULL, NULL, NULL, NULL,
+			       NULL},
+};
+
 static const struct rtw89_reg2_def  rtw8852a_pmac_ht20_mcs7_tbl[] = {
 	{0x44AC, 0x00000000},
 	{0x44B0, 0x00000000},
@@ -2225,7 +2238,10 @@ const struct rtw89_chip_info rtw8852a_chip_info = {
 	.dis_2g_40m_ul_ofdma	= true,
 	.rsvd_ple_ofst		= 0x6f800,
 	.hfc_param_ini		= {rtw8852a_hfc_param_ini_pcie, NULL, NULL},
-	.dle_mem		= {rtw8852a_dle_mem_pcie, NULL, NULL, NULL},
+	.dle_mem		= {rtw8852a_dle_mem_pcie,
+				   rtw8852a_dle_mem_usb,
+				   rtw8852a_dle_mem_usb,
+				   NULL},
 	.wde_qempty_acq_grpnum	= 16,
 	.wde_qempty_mgq_grpsel	= 16,
 	.rf_base_addr		= {0xc000, 0xd000},
-- 
2.51.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH rtw-next 3/6] wifi: rtw89: Add rtw8852a_hfc_param_ini_usb
  2025-11-07 16:04 [PATCH rtw-next 0/6] Add support for RTL8852AU Bitterblue Smith
  2025-11-07 16:06 ` [PATCH rtw-next 1/6] wifi: rtw89: Use the correct power sequences for USB/SDIO Bitterblue Smith
  2025-11-07 16:07 ` [PATCH rtw-next 2/6] wifi: rtw89: Add rtw8852a_dle_mem_usb Bitterblue Smith
@ 2025-11-07 16:08 ` Bitterblue Smith
  2025-11-10  8:54   ` Ping-Ke Shih
  2025-11-07 16:08 ` [PATCH rtw-next 4/6] wifi: rtw89: 8852a: Accept USB devices and load their MAC address Bitterblue Smith
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 14+ messages in thread
From: Bitterblue Smith @ 2025-11-07 16:08 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

"hfc" means "hci fc" which is "Host Control Interface Flow Control".
These are some parameters needed for RTL8852AU.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
 drivers/net/wireless/realtek/rtw89/rtw8852a.c | 46 ++++++++++++++++++-
 1 file changed, 45 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
index 7855fd55b43e..76b64fd5a639 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
@@ -48,6 +48,48 @@ static const struct rtw89_hfc_param_ini rtw8852a_hfc_param_ini_pcie[] = {
 	[RTW89_QTA_INVALID] = {NULL},
 };
 
+static const struct rtw89_hfc_ch_cfg rtw8852a_hfc_chcfg_usb[] = {
+	{22, 402, grp_0}, /* ACH 0 */
+	{0, 0, grp_0}, /* ACH 1 */
+	{22, 402, grp_0}, /* ACH 2 */
+	{0, 0, grp_0}, /* ACH 3 */
+	{22, 402, grp_0}, /* ACH 4 */
+	{0, 0, grp_0}, /* ACH 5 */
+	{22, 402, grp_0}, /* ACH 6 */
+	{0, 0, grp_0}, /* ACH 7 */
+	{22, 402, grp_0}, /* B0MGQ */
+	{0, 0, grp_0}, /* B0HIQ */
+	{22, 402, grp_0}, /* B1MGQ */
+	{0, 0, grp_0}, /* B1HIQ */
+	{0, 0, 0} /* FWCMDQ */
+};
+
+static const struct rtw89_hfc_pub_cfg rtw8852a_hfc_pubcfg_usb = {
+	512, /* Group 0 */
+	0, /* Group 1 */
+	512, /* Public Max */
+	104 /* WP threshold */
+};
+
+static const struct rtw89_hfc_prec_cfg rtw8852a_hfc_preccfg_usb = {
+	11, /* CH 0-11 pre-cost */
+	32, /* H2C pre-cost */
+	76, /* WP CH 0-7 pre-cost */
+	25, /* WP CH 8-11 pre-cost */
+	1, /* CH 0-11 full condition */
+	1, /* H2C full condition */
+	1, /* WP CH 0-7 full condition */
+	1, /* WP CH 8-11 full condition */
+};
+
+static const struct rtw89_hfc_param_ini rtw8852a_hfc_param_ini_usb[] = {
+	[RTW89_QTA_SCC] = {rtw8852a_hfc_chcfg_usb, &rtw8852a_hfc_pubcfg_usb,
+			   &rtw8852a_hfc_preccfg_usb, RTW89_HCIFC_STF},
+	[RTW89_QTA_DLFW] = {NULL, NULL,
+			    &rtw8852a_hfc_preccfg_usb, RTW89_HCIFC_STF},
+	[RTW89_QTA_INVALID] = {NULL},
+};
+
 static const struct rtw89_dle_mem rtw8852a_dle_mem_pcie[] = {
 	[RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size0,
 			   &rtw89_mac_size.ple_size0, &rtw89_mac_size.wde_qt0,
@@ -2237,7 +2279,9 @@ const struct rtw89_chip_info rtw8852a_chip_info = {
 	.max_amsdu_limit	= 3500,
 	.dis_2g_40m_ul_ofdma	= true,
 	.rsvd_ple_ofst		= 0x6f800,
-	.hfc_param_ini		= {rtw8852a_hfc_param_ini_pcie, NULL, NULL},
+	.hfc_param_ini		= {rtw8852a_hfc_param_ini_pcie,
+				   rtw8852a_hfc_param_ini_usb,
+				   NULL},
 	.dle_mem		= {rtw8852a_dle_mem_pcie,
 				   rtw8852a_dle_mem_usb,
 				   rtw8852a_dle_mem_usb,
-- 
2.51.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH rtw-next 4/6] wifi: rtw89: 8852a: Accept USB devices and load their MAC address
  2025-11-07 16:04 [PATCH rtw-next 0/6] Add support for RTL8852AU Bitterblue Smith
                   ` (2 preceding siblings ...)
  2025-11-07 16:08 ` [PATCH rtw-next 3/6] wifi: rtw89: Add rtw8852a_hfc_param_ini_usb Bitterblue Smith
@ 2025-11-07 16:08 ` Bitterblue Smith
  2025-11-10  8:54   ` Ping-Ke Shih
  2025-11-07 16:09 ` [PATCH rtw-next 5/6] wifi: rtw89: Add rtw8852au.c Bitterblue Smith
  2025-11-07 16:10 ` [PATCH rtw-next 6/6] wifi: rtw89: Enable the new rtw89_8852au module Bitterblue Smith
  5 siblings, 1 reply; 14+ messages in thread
From: Bitterblue Smith @ 2025-11-07 16:08 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

Make rtw8852a_read_efuse() accept USB devices and load the MAC
address from the correct offset.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
 drivers/net/wireless/realtek/rtw89/rtw8852a.c | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
index 76b64fd5a639..48205aa4a980 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
@@ -621,14 +621,6 @@ static const struct rtw89_edcca_regs rtw8852a_edcca_regs = {
 	.tx_collision_t2r_st_mask	= B_TX_COLLISION_T2R_ST_M,
 };
 
-static void rtw8852ae_efuse_parsing(struct rtw89_efuse *efuse,
-				    struct rtw8852a_efuse *map)
-{
-	ether_addr_copy(efuse->addr, map->e.mac_addr);
-	efuse->rfe_type = map->rfe_type;
-	efuse->xtal_cap = map->xtal_k;
-}
-
 static void rtw8852a_efuse_parsing_tssi(struct rtw89_dev *rtwdev,
 					struct rtw8852a_efuse *map)
 {
@@ -674,12 +666,18 @@ static int rtw8852a_read_efuse(struct rtw89_dev *rtwdev, u8 *log_map,
 
 	switch (rtwdev->hci.type) {
 	case RTW89_HCI_TYPE_PCIE:
-		rtw8852ae_efuse_parsing(efuse, map);
+		ether_addr_copy(efuse->addr, map->e.mac_addr);
+		break;
+	case RTW89_HCI_TYPE_USB:
+		ether_addr_copy(efuse->addr, map->u.mac_addr);
 		break;
 	default:
 		return -ENOTSUPP;
 	}
 
+	efuse->rfe_type = map->rfe_type;
+	efuse->xtal_cap = map->xtal_k;
+
 	rtw89_info(rtwdev, "chip rfe_type is %d\n", efuse->rfe_type);
 
 	return 0;
-- 
2.51.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH rtw-next 5/6] wifi: rtw89: Add rtw8852au.c
  2025-11-07 16:04 [PATCH rtw-next 0/6] Add support for RTL8852AU Bitterblue Smith
                   ` (3 preceding siblings ...)
  2025-11-07 16:08 ` [PATCH rtw-next 4/6] wifi: rtw89: 8852a: Accept USB devices and load their MAC address Bitterblue Smith
@ 2025-11-07 16:09 ` Bitterblue Smith
  2025-11-10  8:57   ` Ping-Ke Shih
  2025-11-07 16:10 ` [PATCH rtw-next 6/6] wifi: rtw89: Enable the new rtw89_8852au module Bitterblue Smith
  5 siblings, 1 reply; 14+ messages in thread
From: Bitterblue Smith @ 2025-11-07 16:09 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

This is the entry point of the new rtw89_8852au module.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
 .../net/wireless/realtek/rtw89/rtw8852au.c    | 79 +++++++++++++++++++
 1 file changed, 79 insertions(+)
 create mode 100644 drivers/net/wireless/realtek/rtw89/rtw8852au.c

diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852au.c b/drivers/net/wireless/realtek/rtw89/rtw8852au.c
new file mode 100644
index 000000000000..ca782469c455
--- /dev/null
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852au.c
@@ -0,0 +1,79 @@
+// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
+/* Copyright(c) 2025  Realtek Corporation
+ */
+
+#include <linux/module.h>
+#include <linux/usb.h>
+#include "rtw8852a.h"
+#include "reg.h"
+#include "usb.h"
+
+static const struct rtw89_usb_info rtw8852a_usb_info = {
+	.usb_host_request_2		= R_AX_USB_HOST_REQUEST_2,
+	.usb_wlan0_1			= R_AX_USB_WLAN0_1,
+	.hci_func_en			= R_AX_HCI_FUNC_EN,
+	.usb3_mac_npi_config_intf_0	= R_AX_USB3_MAC_NPI_CONFIG_INTF_0,
+	.usb_endpoint_0			= R_AX_USB_ENDPOINT_0,
+	.usb_endpoint_2			= R_AX_USB_ENDPOINT_2,
+	.bulkout_id = {
+		[RTW89_DMA_ACH0] = 3,
+		[RTW89_DMA_ACH2] = 5,
+		[RTW89_DMA_ACH4] = 4,
+		[RTW89_DMA_ACH6] = 6,
+		[RTW89_DMA_B0MG] = 0,
+		[RTW89_DMA_B0HI] = 0,
+		[RTW89_DMA_B1MG] = 1,
+		[RTW89_DMA_B1HI] = 1,
+		[RTW89_DMA_H2C] = 2,
+	},
+};
+
+static const struct rtw89_driver_info rtw89_8852au_info = {
+	.chip = &rtw8852a_chip_info,
+	.variant = NULL,
+	.quirks = NULL,
+	.bus = {
+		.usb = &rtw8852a_usb_info,
+	}
+};
+
+static const struct usb_device_id rtw_8852au_id_table[] = {
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x0411, 0x0312, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x056e, 0x4020, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x0b05, 0x1997, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x0bda, 0x8832, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x0bda, 0x885a, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x0bda, 0x885c, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x3321, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x2001, 0x332c, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x013f, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0140, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x2357, 0x0141, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{ USB_DEVICE_AND_INTERFACE_INFO(0x3625, 0x010f, 0xff, 0xff, 0xff),
+	  .driver_info = (kernel_ulong_t)&rtw89_8852au_info },
+	{},
+};
+MODULE_DEVICE_TABLE(usb, rtw_8852au_id_table);
+
+static struct usb_driver rtw_8852au_driver = {
+	.name = KBUILD_MODNAME,
+	.id_table = rtw_8852au_id_table,
+	.probe = rtw89_usb_probe,
+	.disconnect = rtw89_usb_disconnect,
+};
+module_usb_driver(rtw_8852au_driver);
+
+MODULE_AUTHOR("Bitterblue Smith <rtl8821cerfe2@gmail.com>");
+MODULE_DESCRIPTION("Realtek 802.11ax wireless 8852AU driver");
+MODULE_LICENSE("Dual BSD/GPL");
-- 
2.51.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH rtw-next 6/6] wifi: rtw89: Enable the new rtw89_8852au module
  2025-11-07 16:04 [PATCH rtw-next 0/6] Add support for RTL8852AU Bitterblue Smith
                   ` (4 preceding siblings ...)
  2025-11-07 16:09 ` [PATCH rtw-next 5/6] wifi: rtw89: Add rtw8852au.c Bitterblue Smith
@ 2025-11-07 16:10 ` Bitterblue Smith
  2025-11-10  9:18   ` Ping-Ke Shih
  5 siblings, 1 reply; 14+ messages in thread
From: Bitterblue Smith @ 2025-11-07 16:10 UTC (permalink / raw)
  To: linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

Tested in station mode and a little in AP mode.

Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
---
 drivers/net/wireless/realtek/rtw89/Kconfig  | 11 +++++++++++
 drivers/net/wireless/realtek/rtw89/Makefile |  3 +++
 2 files changed, 14 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtw89/Kconfig b/drivers/net/wireless/realtek/rtw89/Kconfig
index e89f7481475a..44d8a7f32bf2 100644
--- a/drivers/net/wireless/realtek/rtw89/Kconfig
+++ b/drivers/net/wireless/realtek/rtw89/Kconfig
@@ -74,6 +74,17 @@ config RTW89_8852AE
 
 	  802.11ax PCIe wireless network (Wi-Fi 6) adapter
 
+config RTW89_8852AU
+	tristate "Realtek 8852AU USB wireless network (Wi-Fi 6) adapter"
+	depends on USB
+	select RTW89_CORE
+	select RTW89_USB
+	select RTW89_8852A
+	help
+	  Select this option will enable support for 8852AU chipset
+
+	  802.11ax USB wireless network (Wi-Fi 6) adapter
+
 config RTW89_8852BE
 	tristate "Realtek 8852BE PCI wireless network (Wi-Fi 6) adapter"
 	depends on PCI
diff --git a/drivers/net/wireless/realtek/rtw89/Makefile b/drivers/net/wireless/realtek/rtw89/Makefile
index e0d21972e57c..1be81f254fca 100644
--- a/drivers/net/wireless/realtek/rtw89/Makefile
+++ b/drivers/net/wireless/realtek/rtw89/Makefile
@@ -43,6 +43,9 @@ rtw89_8852a-objs := rtw8852a.o \
 obj-$(CONFIG_RTW89_8852AE) += rtw89_8852ae.o
 rtw89_8852ae-objs := rtw8852ae.o
 
+obj-$(CONFIG_RTW89_8852AU) += rtw89_8852au.o
+rtw89_8852au-objs := rtw8852au.o
+
 obj-$(CONFIG_RTW89_8852B_COMMON) += rtw89_8852b_common.o
 rtw89_8852b_common-objs := rtw8852b_common.o
 
-- 
2.51.1


^ permalink raw reply related	[flat|nested] 14+ messages in thread

* RE: [PATCH rtw-next 1/6] wifi: rtw89: Use the correct power sequences for USB/SDIO
  2025-11-07 16:06 ` [PATCH rtw-next 1/6] wifi: rtw89: Use the correct power sequences for USB/SDIO Bitterblue Smith
@ 2025-11-10  8:48   ` Ping-Ke Shih
  2025-11-11  2:09   ` Ping-Ke Shih
  1 sibling, 0 replies; 14+ messages in thread
From: Ping-Ke Shih @ 2025-11-10  8:48 UTC (permalink / raw)
  To: Bitterblue Smith, linux-wireless@vger.kernel.org


Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:
> Make rtw89_mac_pwr_seq() select the right parts of the power sequences
> based on the interface type.
> 
> This is only relevant for RTL8852A. The other chips don't use power
> sequences.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>

Acked-by: Ping-Ke Shih <pkshih@realtek.com>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [PATCH rtw-next 2/6] wifi: rtw89: Add rtw8852a_dle_mem_usb
  2025-11-07 16:07 ` [PATCH rtw-next 2/6] wifi: rtw89: Add rtw8852a_dle_mem_usb Bitterblue Smith
@ 2025-11-10  8:53   ` Ping-Ke Shih
  0 siblings, 0 replies; 14+ messages in thread
From: Ping-Ke Shih @ 2025-11-10  8:53 UTC (permalink / raw)
  To: Bitterblue Smith, linux-wireless@vger.kernel.org

Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:
> Add rtw8852a_dle_mem_usb and its various quotas and sizes in struct
> rtw89_mac_size_set.
> 
> "dle" could be "Data Link Engine" or "Double Link Engine". These are
> some parameters needed for RTL8852AU.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>

Acked-by: Ping-Ke Shih <pkshih@realtek.com>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [PATCH rtw-next 3/6] wifi: rtw89: Add rtw8852a_hfc_param_ini_usb
  2025-11-07 16:08 ` [PATCH rtw-next 3/6] wifi: rtw89: Add rtw8852a_hfc_param_ini_usb Bitterblue Smith
@ 2025-11-10  8:54   ` Ping-Ke Shih
  0 siblings, 0 replies; 14+ messages in thread
From: Ping-Ke Shih @ 2025-11-10  8:54 UTC (permalink / raw)
  To: Bitterblue Smith, linux-wireless@vger.kernel.org

Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:
> "hfc" means "hci fc" which is "Host Control Interface Flow Control".
> These are some parameters needed for RTL8852AU.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>

Acked-by: Ping-Ke Shih <pkshih@realtek.com>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [PATCH rtw-next 4/6] wifi: rtw89: 8852a: Accept USB devices and load their MAC address
  2025-11-07 16:08 ` [PATCH rtw-next 4/6] wifi: rtw89: 8852a: Accept USB devices and load their MAC address Bitterblue Smith
@ 2025-11-10  8:54   ` Ping-Ke Shih
  0 siblings, 0 replies; 14+ messages in thread
From: Ping-Ke Shih @ 2025-11-10  8:54 UTC (permalink / raw)
  To: Bitterblue Smith, linux-wireless@vger.kernel.org

Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:
> Make rtw8852a_read_efuse() accept USB devices and load the MAC
> address from the correct offset.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>

Acked-by: Ping-Ke Shih <pkshih@realtek.com>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [PATCH rtw-next 5/6] wifi: rtw89: Add rtw8852au.c
  2025-11-07 16:09 ` [PATCH rtw-next 5/6] wifi: rtw89: Add rtw8852au.c Bitterblue Smith
@ 2025-11-10  8:57   ` Ping-Ke Shih
  0 siblings, 0 replies; 14+ messages in thread
From: Ping-Ke Shih @ 2025-11-10  8:57 UTC (permalink / raw)
  To: Bitterblue Smith, linux-wireless@vger.kernel.org

Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:
> This is the entry point of the new rtw89_8852au module.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>

Acked-by: Ping-Ke Shih <pkshih@realtek.com>


^ permalink raw reply	[flat|nested] 14+ messages in thread

* RE: [PATCH rtw-next 6/6] wifi: rtw89: Enable the new rtw89_8852au module
  2025-11-07 16:10 ` [PATCH rtw-next 6/6] wifi: rtw89: Enable the new rtw89_8852au module Bitterblue Smith
@ 2025-11-10  9:18   ` Ping-Ke Shih
  0 siblings, 0 replies; 14+ messages in thread
From: Ping-Ke Shih @ 2025-11-10  9:18 UTC (permalink / raw)
  To: Bitterblue Smith, linux-wireless@vger.kernel.org

Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:
> Tested in station mode and a little in AP mode.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>

Acked-by: Ping-Ke Shih <pkshih@realtek.com>

Thanks for your great work! 


^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH rtw-next 1/6] wifi: rtw89: Use the correct power sequences for USB/SDIO
  2025-11-07 16:06 ` [PATCH rtw-next 1/6] wifi: rtw89: Use the correct power sequences for USB/SDIO Bitterblue Smith
  2025-11-10  8:48   ` Ping-Ke Shih
@ 2025-11-11  2:09   ` Ping-Ke Shih
  1 sibling, 0 replies; 14+ messages in thread
From: Ping-Ke Shih @ 2025-11-11  2:09 UTC (permalink / raw)
  To: Bitterblue Smith, linux-wireless@vger.kernel.org; +Cc: Ping-Ke Shih

Bitterblue Smith <rtl8821cerfe2@gmail.com> wrote:

> Make rtw89_mac_pwr_seq() select the right parts of the power sequences
> based on the interface type.
> 
> This is only relevant for RTL8852A. The other chips don't use power
> sequences.
> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com>
> Acked-by: Ping-Ke Shih <pkshih@realtek.com>

6 patch(es) applied to rtw-next branch of rtw.git, thanks.

233542f5b4a8 wifi: rtw89: Use the correct power sequences for USB/SDIO
0eea5e0f03db wifi: rtw89: Add rtw8852a_dle_mem_usb
c19b106609f3 wifi: rtw89: Add rtw8852a_hfc_param_ini_usb
1dfd11e70022 wifi: rtw89: 8852a: Accept USB devices and load their MAC address
0029ccab53ac wifi: rtw89: Add rtw8852au.c
623c177323ec wifi: rtw89: Enable the new rtw89_8852au module

---
https://github.com/pkshih/rtw.git


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2025-11-11  2:09 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-07 16:04 [PATCH rtw-next 0/6] Add support for RTL8852AU Bitterblue Smith
2025-11-07 16:06 ` [PATCH rtw-next 1/6] wifi: rtw89: Use the correct power sequences for USB/SDIO Bitterblue Smith
2025-11-10  8:48   ` Ping-Ke Shih
2025-11-11  2:09   ` Ping-Ke Shih
2025-11-07 16:07 ` [PATCH rtw-next 2/6] wifi: rtw89: Add rtw8852a_dle_mem_usb Bitterblue Smith
2025-11-10  8:53   ` Ping-Ke Shih
2025-11-07 16:08 ` [PATCH rtw-next 3/6] wifi: rtw89: Add rtw8852a_hfc_param_ini_usb Bitterblue Smith
2025-11-10  8:54   ` Ping-Ke Shih
2025-11-07 16:08 ` [PATCH rtw-next 4/6] wifi: rtw89: 8852a: Accept USB devices and load their MAC address Bitterblue Smith
2025-11-10  8:54   ` Ping-Ke Shih
2025-11-07 16:09 ` [PATCH rtw-next 5/6] wifi: rtw89: Add rtw8852au.c Bitterblue Smith
2025-11-10  8:57   ` Ping-Ke Shih
2025-11-07 16:10 ` [PATCH rtw-next 6/6] wifi: rtw89: Enable the new rtw89_8852au module Bitterblue Smith
2025-11-10  9:18   ` Ping-Ke Shih

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).