From patchwork Sun May 4 20:49:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 887387 Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A1FACDF42 for ; Sun, 4 May 2025 20:49:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391755; cv=none; b=g2jNcEoyphebXNlcEw1c9hoeftvX87JummJA/sfn38zGcXDryO5OjeT6P+0ADHTD72j6pZBtKxX86/UuKozCnF0EVaEGzi16d8ss7Ua7IB47k8RLUy7K6dH++We/MPUs6IkphldTrNtP4SHl0VyBOPs9/aVC7ffayuQMyy5fGq4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391755; c=relaxed/simple; bh=koiGNoJGn5MIxjaio0apna9PHXbb6eKHgQn9qKgimCk=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=RmATexPJUE3gZmqkO5coRPI8GnVzEe+nqqc45cbPDR/Pj9et9eq+F00DJI1pYi74HKomLmIyrdXC8I9sJp36VKJ+S7s8FEmQq9J2h6FSJfWTuqIQWYgmNzeRyqhJ6+pS00xbeHsgxbj9TpjSA24Fkb44pzYPn3jnWH++hWmluSY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UasQyX4m; arc=none smtp.client-ip=209.85.208.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UasQyX4m" Received: by mail-ed1-f53.google.com with SMTP id 4fb4d7f45d1cf-5e5c7d6b96fso6924440a12.3 for ; Sun, 04 May 2025 13:49:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746391752; x=1746996552; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=yEH7+/XFW7hnHO6AvavVfjnscFVufGFmisKtf3HYHiA=; b=UasQyX4mdBIGQJnb0tKNrl18wPMCmwscJl5G3NFytowg5r5RRILh2pTZXi48giQsuj HbatNOWt4FR7M+QAme8/V/gvAxdHP1VvYIaJ34UCAWe8iZ2lcH/jJM9aw6JHvIcO57+W TizTyqyzCn8zlXTvw9bmPLASRaUenr0sn9eNAtQjwfFS/zMb5K+KfOUAuKkzHStSQD2G OjzhxfT4alqm98P4pjR1VAcEfxGe380mp5wmCLDwphiwrFpgPMCYJz09G9CS4hflLosP bSsPOn+x3p0R3j13PN7FavQZX/ahbz+WBL7owVMhekKVsouyvJJuLX0lllzq/Es5B6nk J/Cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746391752; x=1746996552; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=yEH7+/XFW7hnHO6AvavVfjnscFVufGFmisKtf3HYHiA=; b=Hvy5e60EcWOPHZUKC0iFjzFDBzdXswQCU1ejilzRKjYcTdctN4WLMCzt+zoUZBtfkH tA8vgW6TalYbAfwJr//yrldAgNLm3hNi35Zxg7DrdhxWimIF5yTAKWtwgxDDiF5AWmFY 2UuoJMtbwJX+bXSIzZIjF3PBrA4OWg+XGWeh4h3yiXFnCe6gdONjstJeB+cuHm3zBuFF 2+5lNQzIWL0OnuBtFspPMnzFmJKgJN9+A4K76OSiCl1U7morzz7aqSnrevnc9IVPQje4 bjNIzXM67ESBhojdKVdGoFxpmTBw4Z7RbbFCA0x+qkVX4xmGwgzENmG3DKcRypbGwdA0 9cnw== X-Gm-Message-State: AOJu0YzK2bJAdfBTB7n6jXJRTBCJ42piGKLyP+XEzZxgHOGJe70Hywzu VmPlgP3cwMilNBnJaZs4c5G/L1k/z62sx6jYZYw/uvWGnwk4z+8AGUBOoQ== X-Gm-Gg: ASbGncvVXX4Es1Xbdq3miha1/phoE6h0us4NuJ0zirEH/JntqvfvMTsPKuSLxTKGv9J s8e2N4RBiHfofkxNwD1gwLrDBC/LkwRpuxX0mKDutQLfZnLWm8XppBTnsQAZgNKtiXC+5DIVoH2 eQ/CvUYUilYG7NyTuoU5fIrrup+5qRlBLEwc37G4wYTFtvsXj5/6y52UiJ0jPRXtHcshvEsVa8C nf6yD4g2fU+95BuoR4ExreT3kY7JfCYnpxY3jBX3lxVBSAR9WnCX7/5a1FDkjfuvl0ky+0ztSY9 FFF/I1vjdaBvM0LlklbV4gFzdnkRQoTsg2sUmuYEWm3yXZ2Nrw== X-Google-Smtp-Source: AGHT+IG3g5nFrKdoi2neFvkEFQI8Gl9lN7pQgH5p9fLvrc7R3sLQIe0ygZblJ6kvcn60SefpHzeAew== X-Received: by 2002:a05:6402:84c:b0:5f6:31f3:d744 with SMTP id 4fb4d7f45d1cf-5fab05758abmr4253698a12.11.1746391751469; Sun, 04 May 2025 13:49:11 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5fa77b8fba2sm4396746a12.56.2025.05.04.13.49.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:49:11 -0700 (PDT) Message-ID: <9d8f4e50-43fe-4861-973a-460bd598d73f@gmail.com> Date: Sun, 4 May 2025 23:49:09 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 01/13] wifi: rtw89: 8851b: Accept USB devices and load their MAC address From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Make rtw8851b_read_efuse() accept USB devices and load the MAC address from the correct offset. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/rtw8851b.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.c b/drivers/net/wireless/realtek/rtw89/rtw8851b.c index 174b90661037..8d774bd75edb 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8851b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8851b.c @@ -461,14 +461,6 @@ static int rtw8851b_pwr_off_func(struct rtw89_dev *rtwdev) return 0; } -static void rtw8851b_efuse_parsing(struct rtw89_efuse *efuse, - struct rtw8851b_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 rtw8851b_efuse_parsing_tssi(struct rtw89_dev *rtwdev, struct rtw8851b_efuse *map) { @@ -549,12 +541,18 @@ static int rtw8851b_read_efuse(struct rtw89_dev *rtwdev, u8 *log_map, switch (rtwdev->hci.type) { case RTW89_HCI_TYPE_PCIE: - rtw8851b_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 -EOPNOTSUPP; } + 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; From patchwork Sun May 4 20:49:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 888558 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 122D0C2FD for ; Sun, 4 May 2025 20:49:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391781; cv=none; b=RS2gKNxJs7PPtqcMdQpQIz/YeWja5yOs037zg+UnO5WNXFYKgIVfBTjNC/SnvOrsilH1N+LYjkVXs2mbouYwuyJPg5+P/OgT2iH6PFIcVC4qvLrSjEbspylcFMaTNbRq6WyJBEmX5qbK55qey9qndHUCeqat9rbFTJryOC/PEQU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391781; c=relaxed/simple; bh=w0s/ALPGuX8kC+Cz0prWkLGNyrFfofU/WZnwPRbRcWA=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=e8SwAql6YpXJSxKNzjsDbf7gpFS9JkdQTCP/vjfqa1fxEZGXQ4xUA9X8kV6OXdEiRzYPk1FLbaDXUTCXVequpJkLGOx5oEQpXwFoImcHdPd2hrqJ/HRPxSX7ru8T4wkq4MG/KQ+c5kZGyL1rhn8MyowmTLgaISW4zRuViAlwLrE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ap0XIhtt; arc=none smtp.client-ip=209.85.218.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ap0XIhtt" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-ac2a81e41e3so695991366b.1 for ; Sun, 04 May 2025 13:49:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746391777; x=1746996577; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=gbu1KsHXRrM2HKqvYKEjG/LOYnI8QfLra6c92LT8h5A=; b=Ap0XIhttNJXt7cxfrle5BxCwiYJT0zt7rt2bdfYWyw3MKzKkGJt3JsoToDPnsIP0PC x6WAvb0c6whYQ228GaT4FdE3/lgy04NsV6CxqHzjctpORmWe8Zc4li+ht5Nk3fBV+DQk Q9GPM7lAAVS7Za7pccxRQwRwksahKM1pWO2I+tfGnUsP8Vqin8e5pVg1+rputOM/s4QG HoR6Fr1rOi/btbqS4mn2jZ8oZw1ofAKZwu2IgZZf2blc7nHmrdzZpGFjUEy+e03TbcF5 Xl3G8oI5GXwLSMyf84EvboMBrI4t2nX9LbyNPuNulR6njRgvsLH1Vs8InWoMGvR1Q8Gu NvRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746391777; x=1746996577; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=gbu1KsHXRrM2HKqvYKEjG/LOYnI8QfLra6c92LT8h5A=; b=eq0HnoPreVDiqnYWdk8QoYcGqsfdt7HCiYGQAVF0Wx5JN4YlkGWavKfHk7U8V2RTk6 I1Ec9H/bcUHjxpFa/KI8Mv4iAQgvEETf3mkOJbRy0EKp5ESou5lAAKGm+SZ2obGBugwh PKNl6bB8E2Y/pNbbeAbYhi8brz5OnxdBvKQjkqkBbyLwTsZws4+JcsqPqgbCj8Z9dPyA RdVregUWGK6k4b1ZHGYvDO/FQgDEAqUisplBpnsmNKJwkqbu1oQYgCAtxea69VveZ9k5 rOSqjz+thxVkQ9gJy9hwLRXpIICi6yvMkZVFhu68NAkOVzg7uSZhUBf9kuo5KqsHpCSc W2bA== X-Gm-Message-State: AOJu0YwKJXw7LzhGRpACG5qUUFf541Lq2Lj8sI6Ds1iyqrmiTVbmDYus ge02BhckrA1nc3Nr/Sq1bM9u61kmgzancJPbUhym8lO31U9dYpxfqf/XTQ== X-Gm-Gg: ASbGncuua7n8MgqSIG+xYvZSIv8wtkneqtE2LpItfPy6v+gw+5e4o8nJXUaH84F+Y9a XapTUGSg00zLXr7aH8XLGJnbhavQMNLWbfYOxqX9AR/LQ5c41p1qB7KjMth11jFpAeLqH/1qJ+6 e07mtXMZ2rm66RDDP4DMBLF0yreLWR4dIZC4PApf52FAulRzicFe+nbLLiRnkcn5yEg8N7t4XYh eXXL96KCkbYOeMo1AcseHCh6v4pjascgIz4NhYZoFkEJ56e1u6O734aKlUWh7B0PR48kJMsXabm 9QCmRcEnMbS91y4LpyXZTmLQaDChKK9fcWHl4H/v6NV0XSrRbg== X-Google-Smtp-Source: AGHT+IHLINGEkhCaIOsm56dxgVOh0tufv4RP3xU717K+7efqvAMgvnw1IJpNUgQq30XjA0iF6+zJtQ== X-Received: by 2002:a17:906:ef09:b0:ac3:991:a631 with SMTP id a640c23a62f3a-ad1906a0050mr689485866b.34.1746391777143; Sun, 04 May 2025 13:49:37 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad1894c0381sm375222566b.98.2025.05.04.13.49.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:49:36 -0700 (PDT) Message-ID: <594d5987-5e6d-405c-b482-d101b43cb65c@gmail.com> Date: Sun, 4 May 2025 23:49:35 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 02/13] wifi: rtw89: Get dle_mem via rtw89_hci_dle_mem() From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Don't access dle_mem in get_dle_mem_cfg() directly. USB 2, USB 3, and SDIO will need different sets of values. Rename dle_mem in struct rtw89_chip_info to dle_mem_pcie and get it via rtw89_hci_dle_mem() and rtw89_pci_ops_dle_mem(). Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/core.h | 10 +++++++++- drivers/net/wireless/realtek/rtw89/mac.c | 2 +- drivers/net/wireless/realtek/rtw89/pci.c | 8 ++++++++ drivers/net/wireless/realtek/rtw89/rtw8851b.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852a.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852b.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852bt.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852c.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8922a.c | 2 +- 9 files changed, 24 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index be1259cfa712..afcf0353a625 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -3579,6 +3579,8 @@ struct rtw89_hci_ops { void (*disable_intr)(struct rtw89_dev *rtwdev); void (*enable_intr)(struct rtw89_dev *rtwdev); int (*rst_bdram)(struct rtw89_dev *rtwdev); + const struct rtw89_dle_mem *(*dle_mem)(struct rtw89_dev *rtwdev, + u8 qta_mode); }; struct rtw89_hci_info { @@ -4271,7 +4273,7 @@ struct rtw89_chip_info { bool dis_2g_40m_ul_ofdma; u32 rsvd_ple_ofst; const struct rtw89_hfc_param_ini *hfc_param_ini; - const struct rtw89_dle_mem *dle_mem; + const struct rtw89_dle_mem *dle_mem_pcie; u8 wde_qempty_acq_grpnum; u8 wde_qempty_mgq_grpsel; u32 rf_base_addr[2]; @@ -6146,6 +6148,12 @@ static inline void rtw89_hci_clear(struct rtw89_dev *rtwdev, struct pci_dev *pde rtwdev->hci.ops->clear(rtwdev, pdev); } +static inline const +struct rtw89_dle_mem *rtw89_hci_dle_mem(struct rtw89_dev *rtwdev, u8 qta_mode) +{ + return rtwdev->hci.ops->dle_mem(rtwdev, qta_mode); +} + static inline struct rtw89_tx_skb_data *RTW89_TX_SKB_CB(struct sk_buff *skb) { diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c index 592fbb6d2728..77d35db3e133 100644 --- a/drivers/net/wireless/realtek/rtw89/mac.c +++ b/drivers/net/wireless/realtek/rtw89/mac.c @@ -1719,7 +1719,7 @@ static const struct rtw89_dle_mem *get_dle_mem_cfg(struct rtw89_dev *rtwdev, struct rtw89_mac_info *mac = &rtwdev->mac; const struct rtw89_dle_mem *cfg; - cfg = &rtwdev->chip->dle_mem[mode]; + cfg = rtw89_hci_dle_mem(rtwdev, mode); if (!cfg) return NULL; diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c index c2fe5a898dc7..1dec603012ba 100644 --- a/drivers/net/wireless/realtek/rtw89/pci.c +++ b/drivers/net/wireless/realtek/rtw89/pci.c @@ -4341,6 +4341,13 @@ static int __maybe_unused rtw89_pci_resume(struct device *dev) SIMPLE_DEV_PM_OPS(rtw89_pm_ops, rtw89_pci_suspend, rtw89_pci_resume); EXPORT_SYMBOL(rtw89_pm_ops); +static const +struct rtw89_dle_mem *rtw89_pci_ops_dle_mem(struct rtw89_dev *rtwdev, + u8 qta_mode) +{ + return &rtwdev->chip->dle_mem_pcie[qta_mode]; +} + const struct rtw89_pci_gen_def rtw89_pci_gen_ax = { .isr_rdu = B_AX_RDU_INT, .isr_halt_c2h = B_AX_HALT_C2H_INT_EN, @@ -4413,6 +4420,7 @@ static const struct rtw89_hci_ops rtw89_pci_ops = { .disable_intr = rtw89_pci_disable_intr_lock, .enable_intr = rtw89_pci_enable_intr_lock, .rst_bdram = rtw89_pci_reset_bdram, + .dle_mem = rtw89_pci_ops_dle_mem, }; int rtw89_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.c b/drivers/net/wireless/realtek/rtw89/rtw8851b.c index 8d774bd75edb..1295718b8fdc 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8851b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8851b.c @@ -2465,7 +2465,7 @@ const struct rtw89_chip_info rtw8851b_chip_info = { .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x2f800, .hfc_param_ini = rtw8851b_hfc_param_ini_pcie, - .dle_mem = rtw8851b_dle_mem_pcie, + .dle_mem_pcie = rtw8851b_dle_mem_pcie, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, .rf_base_addr = {0xe000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c index 408c2f7b3eec..5e9e2fc09458 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c @@ -2184,7 +2184,7 @@ 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, - .dle_mem = rtw8852a_dle_mem_pcie, + .dle_mem_pcie = rtw8852a_dle_mem_pcie, .wde_qempty_acq_grpnum = 16, .wde_qempty_mgq_grpsel = 16, .rf_base_addr = {0xc000, 0xd000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b.c b/drivers/net/wireless/realtek/rtw89/rtw8852b.c index dec736a07c54..badaea9d4cb8 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b.c @@ -820,7 +820,7 @@ const struct rtw89_chip_info rtw8852b_chip_info = { .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x2f800, .hfc_param_ini = rtw8852b_hfc_param_ini_pcie, - .dle_mem = rtw8852b_dle_mem_pcie, + .dle_mem_pcie = rtw8852b_dle_mem_pcie, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, .rf_base_addr = {0xe000, 0xf000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c index 3aaf70e32652..74619361e29b 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c @@ -754,7 +754,7 @@ const struct rtw89_chip_info rtw8852bt_chip_info = { .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x6f800, .hfc_param_ini = rtw8852bt_hfc_param_ini_pcie, - .dle_mem = rtw8852bt_dle_mem_pcie, + .dle_mem_pcie = rtw8852bt_dle_mem_pcie, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, .rf_base_addr = {0xe000, 0xf000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852c.c b/drivers/net/wireless/realtek/rtw89/rtw8852c.c index 9a2235f28e24..8b049c3ace93 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852c.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852c.c @@ -3004,7 +3004,7 @@ const struct rtw89_chip_info rtw8852c_chip_info = { .dis_2g_40m_ul_ofdma = false, .rsvd_ple_ofst = 0x6f800, .hfc_param_ini = rtw8852c_hfc_param_ini_pcie, - .dle_mem = rtw8852c_dle_mem_pcie, + .dle_mem_pcie = rtw8852c_dle_mem_pcie, .wde_qempty_acq_grpnum = 16, .wde_qempty_mgq_grpsel = 16, .rf_base_addr = {0xe000, 0xf000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922a.c b/drivers/net/wireless/realtek/rtw89/rtw8922a.c index cc595cae53f5..505f45595dc8 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8922a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8922a.c @@ -2816,7 +2816,7 @@ const struct rtw89_chip_info rtw8922a_chip_info = { .dis_2g_40m_ul_ofdma = false, .rsvd_ple_ofst = 0x8f800, .hfc_param_ini = rtw8922a_hfc_param_ini_pcie, - .dle_mem = rtw8922a_dle_mem_pcie, + .dle_mem_pcie = rtw8922a_dle_mem_pcie, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, .rf_base_addr = {0xe000, 0xf000}, From patchwork Sun May 4 20:49:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 887386 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4390FC2FD for ; Sun, 4 May 2025 20:50:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391803; cv=none; b=KhWVSHmExgjNGbcCIDbRMv4BWUPa6+wBdJNY+Ps892TRzqwqrqjCIs5L3TjpKA/uhjpjE6knax4GXj26KyH+yJlAjj9QAVPzGiBItJcyWnJEeWoKZ0PCJ1KrqRLQEs8UJN5mIKipt9R08NNBgMEH0IbnyrGHogCCiF6GH6vPDhc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391803; c=relaxed/simple; bh=A+71qUb8nnLkTblksHTUeMLYTnI5KbZH4b2J6DsL4no=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=G0l0+E+NoONYKGtcfQj50miAOxKdrGjt+oit3nuyKGDNYDN054FapdMuWxcJILBBSyBHTTL65xtuY57AxAx2ERt3nEmCaAvYdFeygIl+GxcLs1gFN8sp3oiH8MIVo9FInlCiwBUceTwR69WQisMCcGiUP7XEeXe0WplipDRnpKI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VDwP1M53; arc=none smtp.client-ip=209.85.208.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VDwP1M53" Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-5f4d28d9fd8so5139034a12.3 for ; Sun, 04 May 2025 13:50:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746391799; x=1746996599; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=E02GUsLQMda45q4Vav80uP/RQcdSm7e7PcywZ5KrRAo=; b=VDwP1M53itHRl8GtoPhIhBX0OMnTumNgTKLxJ4qojkfq3X5a1T22j5GMjI3U050f2C M5JNSDjT5v8F8f0KSPn06fHHOgFF2QTCgSQJkceRlkNgySdHOPllcOR5J85avKuc0IiN 1v2RNaAATH9nau0cnbo4z/lXZIDmtKNhTwnx9Obizspw6cGfPRu/0b6Ixkt64J9EpJAz tZ7mpLETfC5w25DctCyFT/r+4NJFVHUSebNehNkt+fEHa88DuurhxHkQ1NXJxmAK7EeJ Ls1Qrtn8TljUv7cVpFqI2XeVuUjFTmQlwnjfj3RteXnoz9BmiHJO9ED4mh9yyybr6ZPe bEaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746391799; x=1746996599; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=E02GUsLQMda45q4Vav80uP/RQcdSm7e7PcywZ5KrRAo=; b=t/Gn4RBzU0P1Yr39K3JP1yAnjY981HNlkz30S0EIPcnAET3c+xeTzt7JdlwknMzmIF 1NZBM6kDevLgzeaEtcnxZK4Tzchf2vubzY+1y7KLPUe8WQUCQei5ICZwfDYW+qOLV6OT HmzZUwdSLZjlQd4irbhIEugfyJJbFUGydmSMH8hycKlqXba8PLVuAiOQTVv7UPl9rLAI XUW8ZbgEjJFeC7ENtNdCTj4RFH8T5dQZfoTL1PuByxjH0X1RA1ZcghquWZlTYdaiFW+B B2HxMe4ri3CNK2VxskSQfSS7RPqbW3V1XduVfVar+xcTC3yrngVV9zz0raEfuxnTRuoF pEWQ== X-Gm-Message-State: AOJu0Yz8q7hH+2hKSCLlZDwu2ysF1WcT9EsghuqIzo7PpL1VLwPEUCZV E4f6yWo31mc/FjGQtGbK0zVaPh3h9FKBKoeULtx8cf3VkGvnA1HlGHAKgQ== X-Gm-Gg: ASbGncvPk8P8mdXgKPmsOoI5UmabHbL6CC6FsH9E2IuFOAFqIJCPeladQDaEseJSX0A 0gqMremoY1gxLlimJ7bXaXz4HiUQI1TL6TZ6RyWJWKRsDdNi5XFY8qO35YCWMLTjE3TuWX1TJSe MOxdGvx/kB2KmETmaMmdpiIj8bdY9xWFzP+ubMys/b4D5YQa45+eOeuhd9L1E6r95TyvKW/XW0/ zfx5ucJ/T4nfOkH+orED9rw75uq+kaTwDpRviYXXVXclCWkjDofDavJ3J6tyKYmkq1XXb3D/TFO Ud52yaGK6rFZEheMyG0wz85gpZJ41vFPbg2FB8jHzl8f4MNyRA== X-Google-Smtp-Source: AGHT+IHQFAnHcawEyr4uEq23Yh0Aeeh/Hs2fRgD0lWRLrSEIC7zQVivPq2+pYbiNeaMGW4yLSYQdWw== X-Received: by 2002:a05:6402:40cf:b0:5f9:3174:dcbf with SMTP id 4fb4d7f45d1cf-5fab05e286bmr3879141a12.32.1746391799324; Sun, 04 May 2025 13:49:59 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5fa777557c4sm4275635a12.15.2025.05.04.13.49.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:49:58 -0700 (PDT) Message-ID: <26968663-f928-4479-bfbc-8e9e3195f27a@gmail.com> Date: Sun, 4 May 2025 23:49:58 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 03/13] wifi: rtw89: Rename hfc_param_ini to hfc_param_ini_pcie From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Rename hfc_param_ini in struct rtw89_chip_info to hfc_param_ini_pcie. USB and SDIO will need different sets of values. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/core.h | 2 +- drivers/net/wireless/realtek/rtw89/mac.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8851b.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852a.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852b.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852bt.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8852c.c | 2 +- drivers/net/wireless/realtek/rtw89/rtw8922a.c | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index afcf0353a625..321de0f76026 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -4272,7 +4272,7 @@ struct rtw89_chip_info { u16 max_amsdu_limit; bool dis_2g_40m_ul_ofdma; u32 rsvd_ple_ofst; - const struct rtw89_hfc_param_ini *hfc_param_ini; + const struct rtw89_hfc_param_ini *hfc_param_ini_pcie; const struct rtw89_dle_mem *dle_mem_pcie; u8 wde_qempty_acq_grpnum; u8 wde_qempty_mgq_grpsel; diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c index 77d35db3e133..a52de0af605e 100644 --- a/drivers/net/wireless/realtek/rtw89/mac.c +++ b/drivers/net/wireless/realtek/rtw89/mac.c @@ -881,7 +881,7 @@ static int hfc_reset_param(struct rtw89_dev *rtwdev) switch (rtwdev->hci.type) { case RTW89_HCI_TYPE_PCIE: - param_ini = rtwdev->chip->hfc_param_ini[qta_mode]; + param_ini = rtwdev->chip->hfc_param_ini_pcie[qta_mode]; param->en = 0; break; default: diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.c b/drivers/net/wireless/realtek/rtw89/rtw8851b.c index 1295718b8fdc..8d5ee870617c 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8851b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8851b.c @@ -2464,7 +2464,7 @@ const struct rtw89_chip_info rtw8851b_chip_info = { .max_amsdu_limit = 3500, .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x2f800, - .hfc_param_ini = rtw8851b_hfc_param_ini_pcie, + .hfc_param_ini_pcie = rtw8851b_hfc_param_ini_pcie, .dle_mem_pcie = rtw8851b_dle_mem_pcie, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c index 5e9e2fc09458..efa944a66976 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c @@ -2183,7 +2183,7 @@ 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, + .hfc_param_ini_pcie = rtw8852a_hfc_param_ini_pcie, .dle_mem_pcie = rtw8852a_dle_mem_pcie, .wde_qempty_acq_grpnum = 16, .wde_qempty_mgq_grpsel = 16, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b.c b/drivers/net/wireless/realtek/rtw89/rtw8852b.c index badaea9d4cb8..b157fb831479 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b.c @@ -819,7 +819,7 @@ const struct rtw89_chip_info rtw8852b_chip_info = { .max_amsdu_limit = 5000, .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x2f800, - .hfc_param_ini = rtw8852b_hfc_param_ini_pcie, + .hfc_param_ini_pcie = rtw8852b_hfc_param_ini_pcie, .dle_mem_pcie = rtw8852b_dle_mem_pcie, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c index 74619361e29b..78abe49a6034 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c @@ -753,7 +753,7 @@ const struct rtw89_chip_info rtw8852bt_chip_info = { .max_amsdu_limit = 5000, .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x6f800, - .hfc_param_ini = rtw8852bt_hfc_param_ini_pcie, + .hfc_param_ini_pcie = rtw8852bt_hfc_param_ini_pcie, .dle_mem_pcie = rtw8852bt_dle_mem_pcie, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852c.c b/drivers/net/wireless/realtek/rtw89/rtw8852c.c index 8b049c3ace93..cdabfe6acd72 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852c.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852c.c @@ -3003,7 +3003,7 @@ const struct rtw89_chip_info rtw8852c_chip_info = { .max_amsdu_limit = 8000, .dis_2g_40m_ul_ofdma = false, .rsvd_ple_ofst = 0x6f800, - .hfc_param_ini = rtw8852c_hfc_param_ini_pcie, + .hfc_param_ini_pcie = rtw8852c_hfc_param_ini_pcie, .dle_mem_pcie = rtw8852c_dle_mem_pcie, .wde_qempty_acq_grpnum = 16, .wde_qempty_mgq_grpsel = 16, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922a.c b/drivers/net/wireless/realtek/rtw89/rtw8922a.c index 505f45595dc8..0fce7219246d 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8922a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8922a.c @@ -2815,7 +2815,7 @@ const struct rtw89_chip_info rtw8922a_chip_info = { .max_amsdu_limit = 8000, .dis_2g_40m_ul_ofdma = false, .rsvd_ple_ofst = 0x8f800, - .hfc_param_ini = rtw8922a_hfc_param_ini_pcie, + .hfc_param_ini_pcie = rtw8922a_hfc_param_ini_pcie, .dle_mem_pcie = rtw8922a_dle_mem_pcie, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, From patchwork Sun May 4 20:50:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 888557 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BAF89C2FD for ; Sun, 4 May 2025 20:50:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391835; cv=none; b=EwJENOvGZlZH992mT+suUKu84F9JBYOb0LLlJZsRM9Dkqd1JuWVISUQKc0LpoiDiLwXapeK40f8dMsFBCg7H74CM4BM49+cPWttfAt0euHjP/xk/rKtb4nHvxQQqkKnkF85s+tUAM2Ofcy1JwLcJ58eRu1DsB0EeKZ6VQ10cuQQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391835; c=relaxed/simple; bh=KhG84KTPCA3XHnMufBs9lmYZ11VeUNrT6h0mz86Rw3U=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=gRZZxz7cuUgjDyodVYfXVeebz2SS2NcopclTR6RAbrq1bX+6/1tuol/9S5ELDOy1FeFMnIUigWU5CKdxI/HQq99CoRHED8ULdK8Tf2iPfvYHnShzDnEABtukeZxNqMCTU+biAwP2+F9JhLReeQGBVDglZx7hvSlN4LjOEEy1tV0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=izeN9DK2; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="izeN9DK2" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-ac339f53df9so798654666b.1 for ; Sun, 04 May 2025 13:50:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746391832; x=1746996632; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=HNBXOAe3BA+eHtaauVJXrOm1EzleoQqxba2hFXWz7lY=; b=izeN9DK2NwJXOWGUndnvI0pIAptZ0GJf0ZgT+Ei97Xt+893nJnOjGSmhpUV4nzxQMi BDVlISitqJ77KmEqQ8TeKSn3ZxRWrAXaKI0ljsWBaScJ3Xaf1iLVu/ivNsU9+zTFLoV2 gpbPBJgq9bcPy3LWFvlcSYu9dP41qFC9zu/peEJFX+x8weTUO6lPvD870jgqEtSkVu/6 tZ1y/H1KTeMtaG4LIZJya+gWO56A1U14dUTgDZbvVIbUzTw2ozsKGaG2m/iZ5Qn+X27a nDAE+YK6ZGA9obZir+IN057u5Pfe/DHvoNgsdlIpsxNFpJe/BXWX0mdhzbI0vA+JTe0N 4D1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746391832; x=1746996632; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=HNBXOAe3BA+eHtaauVJXrOm1EzleoQqxba2hFXWz7lY=; b=qBAPv9DTQwJ8wyvx4eCQomc6QdTR3iYEziPPEvqw3T9HhSEY1aBjXswnZoJ723Sfkr D+FDT+/tHuztyapi+J5Ton9fcR4KRqF/lm7Ol2qEgD9AOOcPd6+d9qkBYMRNIj5pFZ2H ae7lRbCzfuAMRT1C6njPBtmXFfmQraywJIt/vuQtaH73EGaQbjBrOy5KIe4fTGY+sVDp JskKKQ2ahU7hYgmgKd1uox7yiCbCQnT+a9EH79/Jqz/aX/HFC6xNjN7TrhrrHzxcRfUK xzDTlkFxKXnC8ypBIl3vhFgYM/7+d8MepmeXGdJh9cdwYg8u5tA5otGuDgws3ZVnrgzR lOrw== X-Gm-Message-State: AOJu0YwX+ssTdpfo3+kySOagD/HwNlTXe0ham8MA++tuVrfrBhgXsw/X ZaZf3DHPO2nII9W0XQvNEEX9078hMEmNdWsdlkBh6wZAhFyBhIQaJbYdgg== X-Gm-Gg: ASbGnctFLc4ubh3VtIabDFgraePKfbX3/hrPxABG63RwqQO93PJBq7JIT+QI3DwS0DE NUWz7tCaHfp6OIOS9dFyNeoAGQBg9P0YwIXKQ27SMdXtRxfhR490FPZDyRP93XVUXusgQ9CBzQd wzBJ8dpbgsf+/9B+XhMUfCAwsd0fGItOOlq2vWRUk048jt+tRdaSnykRQgF7nMyb+OzmQs7WMJj RPwQzoy8SeAZzG/zkCpQ+U/HoAex/IzAA1nUwCNeDuiBQQG1vs23leMj5jrpkz5PZMa/MfO7D2p Z9JeKhKj1RWmZiqB5Vn3JaVY9/PrjlpCBy1Z57CG47GoAk+s0A== X-Google-Smtp-Source: AGHT+IET7AFZFAx6Pkv8Ha8JNa/rEnGfauyLstcHGzKNDxOg5V75KSkrwSCS56fxOSQoFwUclGjoDQ== X-Received: by 2002:a17:907:3da5:b0:acf:15d:2385 with SMTP id a640c23a62f3a-ad1a490f305mr408176266b.16.1746391831615; Sun, 04 May 2025 13:50:31 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad189146fb4sm376923266b.10.2025.05.04.13.50.30 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:50:31 -0700 (PDT) Message-ID: <5ab76c63-f605-4d42-b116-f141610cdae6@gmail.com> Date: Sun, 4 May 2025 23:50:30 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 04/13] wifi: rtw89: Add dle_mem_usb2 and dle_mem_usb3 From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Add new members dle_mem_usb2 and dle_mem_usb3 to struct rtw89_chip_info. For now initialise them only for RTL8851B. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/core.h | 2 ++ drivers/net/wireless/realtek/rtw89/mac.c | 15 ++++++++++ drivers/net/wireless/realtek/rtw89/mac.h | 8 ++++++ drivers/net/wireless/realtek/rtw89/rtw8851b.c | 28 +++++++++++++++++++ drivers/net/wireless/realtek/rtw89/rtw8852a.c | 2 ++ drivers/net/wireless/realtek/rtw89/rtw8852b.c | 2 ++ .../net/wireless/realtek/rtw89/rtw8852bt.c | 2 ++ drivers/net/wireless/realtek/rtw89/rtw8852c.c | 2 ++ drivers/net/wireless/realtek/rtw89/rtw8922a.c | 2 ++ 9 files changed, 63 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index 321de0f76026..335d2314699b 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -4274,6 +4274,8 @@ struct rtw89_chip_info { u32 rsvd_ple_ofst; const struct rtw89_hfc_param_ini *hfc_param_ini_pcie; const struct rtw89_dle_mem *dle_mem_pcie; + const struct rtw89_dle_mem *dle_mem_usb2; + const struct rtw89_dle_mem *dle_mem_usb3; u8 wde_qempty_acq_grpnum; u8 wde_qempty_mgq_grpsel; u32 rf_base_addr[2]; diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c index a52de0af605e..4a5d1a5926e9 100644 --- a/drivers/net/wireless/realtek/rtw89/mac.c +++ b/drivers/net/wireless/realtek/rtw89/mac.c @@ -1646,6 +1646,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = { /* 8852C PCIE SCC */ .wde_size19 = {RTW89_WDE_PG_64, 3328, 0,}, .wde_size23 = {RTW89_WDE_PG_64, 1022, 2,}, + /* 8852B USB2.0/USB3.0 SCC */ + .wde_size25 = {RTW89_WDE_PG_64, 162, 94,}, /* PCIE */ .ple_size0 = {RTW89_PLE_PG_128, 1520, 16,}, .ple_size0_v1 = {RTW89_PLE_PG_128, 2688, 240, 212992,}, @@ -1661,6 +1663,10 @@ const struct rtw89_mac_size_set rtw89_mac_size = { .ple_size18 = {RTW89_PLE_PG_128, 2544, 16,}, /* 8852C PCIE SCC */ .ple_size19 = {RTW89_PLE_PG_128, 1904, 16,}, + /* 8852B USB2.0 SCC*/ + .ple_size32 = {RTW89_PLE_PG_128, 620, 20,}, + /* 8852B USB3.0 SCC*/ + .ple_size33 = {RTW89_PLE_PG_128, 632, 8,}, /* PCIE 64 */ .wde_qt0 = {3792, 196, 0, 107,}, .wde_qt0_v1 = {3302, 6, 0, 20,}, @@ -1675,6 +1681,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = { /* 8852C PCIE SCC */ .wde_qt18 = {3228, 60, 0, 40,}, .wde_qt23 = {958, 48, 0, 16,}, + /* 8852B USB2.0/USB3.0 SCC*/ + .wde_qt25 = {152, 2, 0, 8,}, .ple_qt0 = {320, 320, 32, 16, 13, 13, 292, 292, 64, 18, 1, 4, 0,}, .ple_qt1 = {320, 320, 32, 16, 1316, 1316, 1595, 1595, 1367, 1321, 1, 1307, 0,}, /* PCIE SCC */ @@ -1698,6 +1706,13 @@ const struct rtw89_mac_size_set rtw89_mac_size = { /* PCIE 64 */ .ple_qt58 = {147, 0, 16, 20, 157, 13, 229, 0, 172, 14, 24, 0,}, .ple_qt59 = {147, 0, 32, 20, 1860, 13, 2025, 0, 1879, 14, 24, 0,}, + /* USB2.0 52B SCC */ + .ple_qt72 = {130, 0, 16, 48, 4, 13, 322, 0, 32, 14, 8, 0, 0,}, + /* USB2.0 52B 92K*/ + .ple_qt73 = {130, 0, 32, 48, 37, 13, 355, 0, 65, 14, 24, 0, 0,}, + /* USB3.0 52B 92K*/ + .ple_qt74 = {286, 0, 16, 48, 4, 13, 178, 0, 32, 14, 8, 0, 0,}, + .ple_qt75 = {286, 0, 32, 48, 37, 13, 211, 0, 65, 14, 24, 0, 0,}, /* 8852A PCIE WOW */ .ple_qt_52a_wow = {264, 0, 32, 20, 64, 13, 1005, 0, 64, 128, 120,}, /* 8852B PCIE WOW */ diff --git a/drivers/net/wireless/realtek/rtw89/mac.h b/drivers/net/wireless/realtek/rtw89/mac.h index 47d655fbf2ca..afef6228da30 100644 --- a/drivers/net/wireless/realtek/rtw89/mac.h +++ b/drivers/net/wireless/realtek/rtw89/mac.h @@ -907,6 +907,7 @@ struct rtw89_mac_size_set { const struct rtw89_dle_size wde_size18; const struct rtw89_dle_size wde_size19; const struct rtw89_dle_size wde_size23; + const struct rtw89_dle_size wde_size25; const struct rtw89_dle_size ple_size0; const struct rtw89_dle_size ple_size0_v1; const struct rtw89_dle_size ple_size3_v1; @@ -916,6 +917,8 @@ struct rtw89_mac_size_set { const struct rtw89_dle_size ple_size9; const struct rtw89_dle_size ple_size18; const struct rtw89_dle_size ple_size19; + const struct rtw89_dle_size ple_size32; + const struct rtw89_dle_size ple_size33; const struct rtw89_wde_quota wde_qt0; const struct rtw89_wde_quota wde_qt0_v1; const struct rtw89_wde_quota wde_qt4; @@ -924,6 +927,7 @@ struct rtw89_mac_size_set { const struct rtw89_wde_quota wde_qt17; const struct rtw89_wde_quota wde_qt18; const struct rtw89_wde_quota wde_qt23; + const struct rtw89_wde_quota wde_qt25; const struct rtw89_ple_quota ple_qt0; const struct rtw89_ple_quota ple_qt1; const struct rtw89_ple_quota ple_qt4; @@ -938,6 +942,10 @@ struct rtw89_mac_size_set { const struct rtw89_ple_quota ple_qt57; const struct rtw89_ple_quota ple_qt58; const struct rtw89_ple_quota ple_qt59; + const struct rtw89_ple_quota ple_qt72; + const struct rtw89_ple_quota ple_qt73; + const struct rtw89_ple_quota ple_qt74; + const struct rtw89_ple_quota ple_qt75; const struct rtw89_ple_quota ple_qt_52a_wow; const struct rtw89_ple_quota ple_qt_52b_wow; const struct rtw89_ple_quota ple_qt_52bt_wow; diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.c b/drivers/net/wireless/realtek/rtw89/rtw8851b.c index 8d5ee870617c..d42bfdcac849 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8851b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8851b.c @@ -68,6 +68,32 @@ static const struct rtw89_dle_mem rtw8851b_dle_mem_pcie[] = { NULL}, }; +static const struct rtw89_dle_mem rtw8851b_dle_mem_usb2[] = { + [RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size25, + &rtw89_mac_size.ple_size32, &rtw89_mac_size.wde_qt25, + &rtw89_mac_size.wde_qt25, &rtw89_mac_size.ple_qt72, + &rtw89_mac_size.ple_qt73}, + [RTW89_QTA_DLFW] = {RTW89_QTA_DLFW, &rtw89_mac_size.wde_size9, + &rtw89_mac_size.ple_size8, &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_dle_mem rtw8851b_dle_mem_usb3[] = { + [RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size25, + &rtw89_mac_size.ple_size33, &rtw89_mac_size.wde_qt25, + &rtw89_mac_size.wde_qt25, &rtw89_mac_size.ple_qt74, + &rtw89_mac_size.ple_qt75}, + [RTW89_QTA_DLFW] = {RTW89_QTA_DLFW, &rtw89_mac_size.wde_size9, + &rtw89_mac_size.ple_size8, &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_reg3_def rtw8851b_btc_preagc_en_defs[] = { {0x46D0, GENMASK(1, 0), 0x3}, {0x4AD4, GENMASK(31, 0), 0xf}, @@ -2466,6 +2492,8 @@ const struct rtw89_chip_info rtw8851b_chip_info = { .rsvd_ple_ofst = 0x2f800, .hfc_param_ini_pcie = rtw8851b_hfc_param_ini_pcie, .dle_mem_pcie = rtw8851b_dle_mem_pcie, + .dle_mem_usb2 = rtw8851b_dle_mem_usb2, + .dle_mem_usb3 = rtw8851b_dle_mem_usb3, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, .rf_base_addr = {0xe000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c index efa944a66976..b4be32ba8d37 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c @@ -2185,6 +2185,8 @@ const struct rtw89_chip_info rtw8852a_chip_info = { .rsvd_ple_ofst = 0x6f800, .hfc_param_ini_pcie = rtw8852a_hfc_param_ini_pcie, .dle_mem_pcie = rtw8852a_dle_mem_pcie, + .dle_mem_usb2 = NULL, + .dle_mem_usb3 = NULL, .wde_qempty_acq_grpnum = 16, .wde_qempty_mgq_grpsel = 16, .rf_base_addr = {0xc000, 0xd000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b.c b/drivers/net/wireless/realtek/rtw89/rtw8852b.c index b157fb831479..cde7965860e8 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b.c @@ -821,6 +821,8 @@ const struct rtw89_chip_info rtw8852b_chip_info = { .rsvd_ple_ofst = 0x2f800, .hfc_param_ini_pcie = rtw8852b_hfc_param_ini_pcie, .dle_mem_pcie = rtw8852b_dle_mem_pcie, + .dle_mem_usb2 = NULL, + .dle_mem_usb3 = NULL, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, .rf_base_addr = {0xe000, 0xf000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c index 78abe49a6034..35624f17de6d 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c @@ -755,6 +755,8 @@ const struct rtw89_chip_info rtw8852bt_chip_info = { .rsvd_ple_ofst = 0x6f800, .hfc_param_ini_pcie = rtw8852bt_hfc_param_ini_pcie, .dle_mem_pcie = rtw8852bt_dle_mem_pcie, + .dle_mem_usb2 = NULL, + .dle_mem_usb3 = NULL, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, .rf_base_addr = {0xe000, 0xf000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852c.c b/drivers/net/wireless/realtek/rtw89/rtw8852c.c index cdabfe6acd72..f96bc3036578 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852c.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852c.c @@ -3005,6 +3005,8 @@ const struct rtw89_chip_info rtw8852c_chip_info = { .rsvd_ple_ofst = 0x6f800, .hfc_param_ini_pcie = rtw8852c_hfc_param_ini_pcie, .dle_mem_pcie = rtw8852c_dle_mem_pcie, + .dle_mem_usb2 = NULL, + .dle_mem_usb3 = NULL, .wde_qempty_acq_grpnum = 16, .wde_qempty_mgq_grpsel = 16, .rf_base_addr = {0xe000, 0xf000}, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922a.c b/drivers/net/wireless/realtek/rtw89/rtw8922a.c index 0fce7219246d..ee2a664a7cce 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8922a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8922a.c @@ -2817,6 +2817,8 @@ const struct rtw89_chip_info rtw8922a_chip_info = { .rsvd_ple_ofst = 0x8f800, .hfc_param_ini_pcie = rtw8922a_hfc_param_ini_pcie, .dle_mem_pcie = rtw8922a_dle_mem_pcie, + .dle_mem_usb2 = NULL, + .dle_mem_usb3 = NULL, .wde_qempty_acq_grpnum = 4, .wde_qempty_mgq_grpsel = 4, .rf_base_addr = {0xe000, 0xf000}, From patchwork Sun May 4 20:51:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 887385 Received: from mail-ed1-f47.google.com (mail-ed1-f47.google.com [209.85.208.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A1A223AC18 for ; Sun, 4 May 2025 20:51:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391869; cv=none; b=SZb8yNfLg8iLaNQsoKRZABB0bfq7iCqSkhRSDC0RtM3VxFi1mqB3X8LL8qXEUTR75aTq/Z772zSWHqg9+6xCg0li/dhtOwX22Z0u5A7gSHGE7fNXtlzNucrPd3S7JsGXThS4Os6D6XVFCFfOdwOulUatokSlLKNnkUKwPkWakDE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391869; c=relaxed/simple; bh=9LxZcpXwJVF+C6DlfFpWRScnzTIfcVTUq2jtlVGWLC0=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=FOBGbxvy6RrlQ9vpthGuGYm0jlwb5pFiWVz7VpzC6oGKldg2mvN1Q+QduxrwsbUnYtYeMJxARCLk14tpOor1E5GSY4e+fSftuWj17YGcI1QCj4I7nbZe90llZdbP2Vg0ri/kKDIONhGwH8gfy3rxVYHmW8VmjO7tL7wdZA3Opoc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=QATNK6oQ; arc=none smtp.client-ip=209.85.208.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="QATNK6oQ" Received: by mail-ed1-f47.google.com with SMTP id 4fb4d7f45d1cf-5fafcdac19aso651778a12.0 for ; Sun, 04 May 2025 13:51:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746391866; x=1746996666; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=i1mrx/5ySRSqfezc/WvXUvIkjRPqlTJh0SQ32WRJs34=; b=QATNK6oQoPXJ82bxlvsN7ki+pNeEpTHwZiLFRC4XCP8cP5geNdp188OU62mLwVjw0Y Mg9nDtcysYGnFeaudbOh+r8x4UER1v3trm00/Irwelc78AY8baOWXjpQ09gYK7vI37vY BWq0vWXTYl+JkXik0SLYlo/vJHby7eGMPjOIjK7LPCSOi5VgprKZIfOFjWVsyRhxvQSn EPW2bttw0Ds0Sgco+Injx1aMowjYHaQmH3uiPvSWCdIA35OHlKCKGQNl95S8bQ58IA6e sm99fDVBIULvwYGehQP2jDH3mfThiiEPJX7xPQ3gt1S/WpbihS8QXTLUPm6jrnEFgInM SHDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746391866; x=1746996666; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=i1mrx/5ySRSqfezc/WvXUvIkjRPqlTJh0SQ32WRJs34=; b=OBM9Z+A3IQlQTmeV5XmlOPqXqvwkHHFRS0vPlKI4fb7JaRe2oAxUkUVZ4c1OhcSG4i VKNTfM4PtMBS/6jYuMv5sT3Lm4CdvlsJIWbEosbAXRnvCuLmHLEyUtopcWC+QNl/bmCh 9UCOGSTyBIfongq+ILRpaRmpOrqO1X28Pb6mN6g8zUim3SGDUy5DMRVq565CZLIQ6iQE rEl9ngCLTgSmE3mUkmBlVlrQeCD9FP9LVQwTTupnw6Q1njU7N/Kv6KL2EFHxjcuwiWxC HykhjVEdKOXiAtuLbwA632NdUwh+m1dpPpE8E3K8LvRtrCTOz3qNCRM5l96r3k+yKdG5 s6Yw== X-Gm-Message-State: AOJu0YzVdp0ECpUgohC0TaYkjdMob6kBjZ72XDLhotEj6CtILCGOqOYg PyTu8tvXMkNv3XTiFNgVJyKR3pagyVEocH7V7s3/tBEGgfZZXVNGQyxZOA== X-Gm-Gg: ASbGnctwfdb1XHd0bZ0cClooEPCZO7clV2N0xSM1/ouFOUYyqQWkcFmMmizTnKKBqOO TYd5ReDGjNwS9I/If7YS60eO30skaptVEQCRlc2Eq2j/0uU165ndAVe3jh998QvqZ8h/g1QrMyz l26jlr9KYxOj71gWzjo5A6SPft0/S3nyJRsk9Y0Rn3X2FD7uvTL2vx4DF6DyhXv6ZCKX3PELOFN c+ebPrpHHZTKI4Fc2eF4q1WTrEfoZ0ef5OPs2oAPAS5TTmwawAAWhLhbA9bmqHsAHADi0ZYDSfc p/Z+uNF6YrCp2pPrWPE5ogwQyGG/Sa5jaKVnniKMrinCNn75XL/6D5jjJkzj X-Google-Smtp-Source: AGHT+IEvUXzLrki02CCdufrqOEExnhMgpH1iLuvxOfMVFTIWYJqmnxwa+hOVw8DNLIR/GBOZ6dj1/w== X-Received: by 2002:a17:906:794f:b0:ac8:1142:a9e5 with SMTP id a640c23a62f3a-ad1a4b05f09mr462482566b.47.1746391865640; Sun, 04 May 2025 13:51:05 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad18950928esm372826666b.143.2025.05.04.13.51.05 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:51:05 -0700 (PDT) Message-ID: <348b0c94-2db6-4ae9-819c-6fa7f9c3ac56@gmail.com> Date: Sun, 4 May 2025 23:51:04 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 05/13] wifi: rtw89: Add hfc_param_ini_usb From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Add hfc_param_ini_usb to struct rtw89_chip_info. For now initialise it only for RTL8851B. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/core.h | 1 + drivers/net/wireless/realtek/rtw89/mac.c | 6 ++- drivers/net/wireless/realtek/rtw89/rtw8851b.c | 43 +++++++++++++++++++ drivers/net/wireless/realtek/rtw89/rtw8852a.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8852b.c | 1 + .../net/wireless/realtek/rtw89/rtw8852bt.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8852c.c | 1 + drivers/net/wireless/realtek/rtw89/rtw8922a.c | 1 + 8 files changed, 54 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index 335d2314699b..f17f046e773f 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -4273,6 +4273,7 @@ struct rtw89_chip_info { bool dis_2g_40m_ul_ofdma; u32 rsvd_ple_ofst; const struct rtw89_hfc_param_ini *hfc_param_ini_pcie; + const struct rtw89_hfc_param_ini *hfc_param_ini_usb; const struct rtw89_dle_mem *dle_mem_pcie; const struct rtw89_dle_mem *dle_mem_usb2; const struct rtw89_dle_mem *dle_mem_usb3; diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c index 4a5d1a5926e9..a316864ad137 100644 --- a/drivers/net/wireless/realtek/rtw89/mac.c +++ b/drivers/net/wireless/realtek/rtw89/mac.c @@ -882,12 +882,16 @@ static int hfc_reset_param(struct rtw89_dev *rtwdev) switch (rtwdev->hci.type) { case RTW89_HCI_TYPE_PCIE: param_ini = rtwdev->chip->hfc_param_ini_pcie[qta_mode]; - param->en = 0; + break; + case RTW89_HCI_TYPE_USB: + param_ini = rtwdev->chip->hfc_param_ini_usb[qta_mode]; break; default: return -EINVAL; } + param->en = 0; + if (param_ini.pub_cfg) param->pub_cfg = *param_ini.pub_cfg; diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851b.c b/drivers/net/wireless/realtek/rtw89/rtw8851b.c index d42bfdcac849..35417cdde8d5 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8851b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8851b.c @@ -51,6 +51,48 @@ static const struct rtw89_hfc_param_ini rtw8851b_hfc_param_ini_pcie[] = { [RTW89_QTA_INVALID] = {NULL}, }; +static const struct rtw89_hfc_ch_cfg rtw8851b_hfc_chcfg_usb[] = { + {18, 152, grp_0}, /* ACH 0 */ + {18, 152, grp_0}, /* ACH 1 */ + {18, 152, grp_0}, /* ACH 2 */ + {18, 152, grp_0}, /* ACH 3 */ + {0, 0, grp_0}, /* ACH 4 */ + {0, 0, grp_0}, /* ACH 5 */ + {0, 0, grp_0}, /* ACH 6 */ + {0, 0, grp_0}, /* ACH 7 */ + {18, 152, grp_0}, /* B0MGQ */ + {18, 152, grp_0}, /* B0HIQ */ + {0, 0, grp_0}, /* B1MGQ */ + {0, 0, grp_0}, /* B1HIQ */ + {0, 0, 0} /* FWCMDQ */ +}; + +static const struct rtw89_hfc_pub_cfg rtw8851b_hfc_pubcfg_usb = { + 152, /* Group 0 */ + 0, /* Group 1 */ + 152, /* Public Max */ + 0 /* WP threshold */ +}; + +static const struct rtw89_hfc_prec_cfg rtw8851b_hfc_preccfg_usb = { + 9, /* CH 0-11 pre-cost */ + 32, /* H2C pre-cost */ + 64, /* WP CH 0-7 pre-cost */ + 24, /* 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 rtw8851b_hfc_param_ini_usb[] = { + [RTW89_QTA_SCC] = {rtw8851b_hfc_chcfg_usb, &rtw8851b_hfc_pubcfg_usb, + &rtw8851b_hfc_preccfg_usb, RTW89_HCIFC_STF}, + [RTW89_QTA_DLFW] = {NULL, NULL, + &rtw8851b_hfc_preccfg_usb, RTW89_HCIFC_STF}, + [RTW89_QTA_INVALID] = {NULL}, +}; + static const struct rtw89_dle_mem rtw8851b_dle_mem_pcie[] = { [RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size6, &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt6, @@ -2491,6 +2533,7 @@ const struct rtw89_chip_info rtw8851b_chip_info = { .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x2f800, .hfc_param_ini_pcie = rtw8851b_hfc_param_ini_pcie, + .hfc_param_ini_usb = rtw8851b_hfc_param_ini_usb, .dle_mem_pcie = rtw8851b_dle_mem_pcie, .dle_mem_usb2 = rtw8851b_dle_mem_usb2, .dle_mem_usb3 = rtw8851b_dle_mem_usb3, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c index b4be32ba8d37..9d0cb83d15a0 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c @@ -2184,6 +2184,7 @@ const struct rtw89_chip_info rtw8852a_chip_info = { .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x6f800, .hfc_param_ini_pcie = rtw8852a_hfc_param_ini_pcie, + .hfc_param_ini_usb = NULL, .dle_mem_pcie = rtw8852a_dle_mem_pcie, .dle_mem_usb2 = NULL, .dle_mem_usb3 = NULL, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b.c b/drivers/net/wireless/realtek/rtw89/rtw8852b.c index cde7965860e8..9349d1a34bf6 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852b.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b.c @@ -820,6 +820,7 @@ const struct rtw89_chip_info rtw8852b_chip_info = { .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x2f800, .hfc_param_ini_pcie = rtw8852b_hfc_param_ini_pcie, + .hfc_param_ini_usb = NULL, .dle_mem_pcie = rtw8852b_dle_mem_pcie, .dle_mem_usb2 = NULL, .dle_mem_usb3 = NULL, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c index 35624f17de6d..e32c6a1a25a8 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852bt.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852bt.c @@ -754,6 +754,7 @@ const struct rtw89_chip_info rtw8852bt_chip_info = { .dis_2g_40m_ul_ofdma = true, .rsvd_ple_ofst = 0x6f800, .hfc_param_ini_pcie = rtw8852bt_hfc_param_ini_pcie, + .hfc_param_ini_usb = NULL, .dle_mem_pcie = rtw8852bt_dle_mem_pcie, .dle_mem_usb2 = NULL, .dle_mem_usb3 = NULL, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852c.c b/drivers/net/wireless/realtek/rtw89/rtw8852c.c index f96bc3036578..edbfca5bee3f 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8852c.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8852c.c @@ -3004,6 +3004,7 @@ const struct rtw89_chip_info rtw8852c_chip_info = { .dis_2g_40m_ul_ofdma = false, .rsvd_ple_ofst = 0x6f800, .hfc_param_ini_pcie = rtw8852c_hfc_param_ini_pcie, + .hfc_param_ini_usb = NULL, .dle_mem_pcie = rtw8852c_dle_mem_pcie, .dle_mem_usb2 = NULL, .dle_mem_usb3 = NULL, diff --git a/drivers/net/wireless/realtek/rtw89/rtw8922a.c b/drivers/net/wireless/realtek/rtw89/rtw8922a.c index ee2a664a7cce..59e7e7a4d829 100644 --- a/drivers/net/wireless/realtek/rtw89/rtw8922a.c +++ b/drivers/net/wireless/realtek/rtw89/rtw8922a.c @@ -2816,6 +2816,7 @@ const struct rtw89_chip_info rtw8922a_chip_info = { .dis_2g_40m_ul_ofdma = false, .rsvd_ple_ofst = 0x8f800, .hfc_param_ini_pcie = rtw8922a_hfc_param_ini_pcie, + .hfc_param_ini_usb = NULL, .dle_mem_pcie = rtw8922a_dle_mem_pcie, .dle_mem_usb2 = NULL, .dle_mem_usb3 = NULL, From patchwork Sun May 4 20:51:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 888556 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B1268224CC for ; Sun, 4 May 2025 20:51:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391895; cv=none; b=SdklAC/QW3BHEHntsxzcvMwClnqNDVb8M54sJg6zqlDyS/HnGRCi5wdbZg70qhsVOq2l91YpFNyNBx5qh3L8Ob0ZXxz0tI7UqMDMkFbi8D2wVj6HMx/8phNFxlz1cDQ0zTOa9GhRO6rJq58sXfD+qAbS+DNR5DlHl+PvYOdh67Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391895; c=relaxed/simple; bh=I2KYgc+Myx3VK15cYHu/Xjk57JCiHQj01b8kSRse93g=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=c6Fnvp6FKKV7jKAivJ46V+m/k0WjMEJAVlKb1ouXT/mnp/FfxB6dkx4vtotz5JaR4ygpOJeUNh9qk9A6PRQ7OJEFZ1l2LZnGWAU6XcCrQWv/+15OmUufoZJpvQvEbHXn4Cb4jRwrCdnGUmB6UKywmaYNt4cRMR920P909TGBhYo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=GtQyGRVt; arc=none smtp.client-ip=209.85.208.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="GtQyGRVt" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-5f861d16622so6402070a12.2 for ; Sun, 04 May 2025 13:51:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746391892; x=1746996692; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=6EVCFQR5wD/7/Ss788JkIlEqGPkx16YFTui3Jp46J4w=; b=GtQyGRVthF5RQjxUwIgm4dsFuYG135JXXuWq2lhBfbiyd5GZDgcG9jGrrbp8kCVLX9 1Gl319UgnroOeAMTMArY7sj/pGC8kPyETCOKBdrFIhFaNtQUYEtj04LiDPFMWwQ+jbin 2LnBFFZlVzltsMjWK8KhwvcOkcGsW166y6eVOzFWZiXyd3SAtvP3ii2Qjd8kipeCOdkG Ke2hangceaybkGi/XJI2YbR4nFMPS7nR4/FJmsrDjkwUz03wyayukQfkxcamxABdSLtI OOddxxAlEp0S6SJl6Qd5DxtY/2OzyKOl6pSHyl4zuOaHvNiv/6fU5Y/F8LDIIofKzxpX XTWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746391892; x=1746996692; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=6EVCFQR5wD/7/Ss788JkIlEqGPkx16YFTui3Jp46J4w=; b=k9D1inZSQNL1YPOQC1IuXanIXjV7WfwecgSxi3+oy89J4D2lOiZyMCFc1gzk6DYHAr BY2UT3WdemcdJ3K6y1mdWV7fxWIipIRiiSQiU2R3zC5CD1t7mlFte7OAv79jz6qC0lbV jsqNVCz41lJMWp8qtPyfH3KBxBzibNAqNTxEbRqWzGguM+FtsqpgP+rRqXdpgglYyZJT wqQaixJswjOtOPu9xVTgv2TA7c2V/WneEZJmrwCruzOOAmbwxNK/wprDCHw94GQuvafQ u3Yj/WfB6CuoP3oUP6D8TsKF2fn0SwHwBgi4m0fNQe2G2dJlQC3a8T+vpO/8SRusK+ic 4/pg== X-Gm-Message-State: AOJu0YwL4SAsN6ISzh9O9fo/omthjXh7clT8FzrC3WAD7f9PHv7kUq1d fEqwisaXZfZkA5dNlke35GBrI4Ro7C8kjDluTzKu46YXO4ZuBmEBUgCNog== X-Gm-Gg: ASbGnctG5025luiq7G5UMq/GNOKk/ffVAWrPSAIIT444nDfRffHFZbGdPJ04VZ/dXaY kJSHW4mpZT6sbTLPMrBfaAx/yNkEMk5EL8i+tV5U1kY7HIbc0jgoW+jG8JOjd00b3cA2Io+xRHf ETyYyc0gX8V020KoVCda0R/+i8cxtQ6dVaKh4Ds3Tnrk4+7cryrAPcSISt7hun9pndxU8kRtALt IrQA5Xo4CtFj88FIIM6SULcBbo/Vl1y9f8PUjYftGre+2y0q04CUxsEjKdBQ98xdgiy6gsazGMO ebwTA3KZRdcCR2fU5dnK7OtXK5n3UiC4MDqLAMfHDl/IcM+tTA== X-Google-Smtp-Source: AGHT+IGUl+xF7EldV0gC8AXBn0BeiVyS2qCzcJKbUY8twEo/ecvlymJY+RWwUWr6SIDn0B5vNrHWog== X-Received: by 2002:a05:6402:13c7:b0:5f8:5aea:4ad9 with SMTP id 4fb4d7f45d1cf-5fab057d01cmr4545277a12.17.1746391891813; Sun, 04 May 2025 13:51:31 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5fa77b914b4sm4228055a12.51.2025.05.04.13.51.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:51:31 -0700 (PDT) Message-ID: Date: Sun, 4 May 2025 23:51:30 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 06/13] wifi: rtw89: Disable some power saving for USB From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Disable rtw89_ps_power_mode_change() and rtw89_mac_send_rpwm() for USB because they are called in atomic context and accessing hardware registers results in "scheduling while atomic" errors. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/mac.c | 3 +++ drivers/net/wireless/realtek/rtw89/ps.c | 3 +++ 2 files changed, 6 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c index a316864ad137..1a03355b340f 100644 --- a/drivers/net/wireless/realtek/rtw89/mac.c +++ b/drivers/net/wireless/realtek/rtw89/mac.c @@ -1338,6 +1338,9 @@ static void rtw89_mac_send_rpwm(struct rtw89_dev *rtwdev, { u16 request; + if (rtwdev->hci.type == RTW89_HCI_TYPE_USB) + return; + spin_lock_bh(&rtwdev->rpwm_lock); request = rtw89_read16(rtwdev, R_AX_RPWM); diff --git a/drivers/net/wireless/realtek/rtw89/ps.c b/drivers/net/wireless/realtek/rtw89/ps.c index ac46a7baa00d..edff9f8e1016 100644 --- a/drivers/net/wireless/realtek/rtw89/ps.c +++ b/drivers/net/wireless/realtek/rtw89/ps.c @@ -56,6 +56,9 @@ static void rtw89_ps_power_mode_change_with_hci(struct rtw89_dev *rtwdev, static void rtw89_ps_power_mode_change(struct rtw89_dev *rtwdev, bool enter) { + if (rtwdev->hci.type == RTW89_HCI_TYPE_USB) + return; + if (rtwdev->chip->low_power_hci_modes & BIT(rtwdev->ps_mode) && !test_bit(RTW89_FLAG_WOWLAN, rtwdev->flags)) rtw89_ps_power_mode_change_with_hci(rtwdev, enter); From patchwork Sun May 4 20:51:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 887384 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA30623A6 for ; Sun, 4 May 2025 20:52:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391924; cv=none; b=GNqhJCukfVwBITemlf03v+mRbTcbCNhprsR1jdwxdt8RfqVmBy5lNSTMsDj+6/HvmS0+eMpB7lwvhkEQX1Dsrd2rA5EoHxBgNWuRR4q6xe2BqRjh6Ly1+1lVVGqO/nbUCQTkUsV5t8ADOQcHAqS5lzm7USAG4Iy9LdSQtpYmmH4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391924; c=relaxed/simple; bh=6aYuEiEuUR6MOT9bNGymSQkVrhDhEEYY8l9LZsqVuvo=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=NrykXx0B/McsVVMuQXpeJH5Feqsz4PxwHAkdpEXVI9ynULuwCYr5Tj7RglqQKKwHfCpQm92/TYRa6aSJWU53aXlvKNnq7x3DN8tfBg0OtftC8tjXFolSJjA8qfQmEdNpWr0DrG4UXAHh31St64/qKQexd1fxGgJrO1dJUcH9ja0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=PxTI6/r4; arc=none smtp.client-ip=209.85.218.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PxTI6/r4" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-ac2ab99e16eso790587766b.0 for ; Sun, 04 May 2025 13:52:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746391921; x=1746996721; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=NUNQHQ3f5RRPDvBfWhXy5HBi8yHtn507yoQzMrFRLeU=; b=PxTI6/r4gty++9ybFgGB3wSMmD+vhleAqNQdZrjcnEWS1u8oADUJILiq+lbTeCOAuE LeDwB89pWgT12HLWF+i8qEFEXODeoNCVM1kulgs1EHDMc/pZvvDC77RYBtBmgxEoSzyI koSShVt03FCQlLK7uqmgpPgw51RLkGTj07GRhb2veIK68Cmtn+jMOvR77duhJk8rdsEe Rr1pKnCNa3YxyO2/00PmRaX8POgfEuL1tBsof2+MMCXMp0caPgGRGeZDcLaHJ6gIeXBE MMT1qCW/i2KE0qTlUXTIu1zFtubOHPXwMZZdCOHtAjOcBkVZJmf+dSVOIuLtWZ3lsXqn jMWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746391921; x=1746996721; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=NUNQHQ3f5RRPDvBfWhXy5HBi8yHtn507yoQzMrFRLeU=; b=H2/YlYIBuBpsUmOaGcQGNQipo1u3PXy/L0WlPRT5S/+2XAOJ+EcsWgY7FuNGXFZEJz JBpSUvvPkJvFMHVRAP9weY1Rl07D3ariIYLvRdAjY6YOZnIhs992+rGtcw/knP0zoz4s lkYd1P+D9ngHyQGoFZk61+irOEDWmeOS04rmP2YQPiNEEim7Wsl4Y8NVN5kPaQMG4cgk K6YkwvFuunlUgEI2bXNsbrnEwjuj1UQ+E1GXWOBTaQapgerMVFnvmMa/VjU10C6SCShE tHpLUdUYQT1VDdWP1snPIPaPCjE4DFnlN5sWBqFjUtpi9N+Xqr0WaryGX/xVcqrEBg6v 5ulQ== X-Gm-Message-State: AOJu0YxGxuxzp0rjggUDjAdTwDjzEMUxG1i7/vk03FviTBJoYdhfSQl0 LOSksdZ8LCZ+5vVkLI7qhEAMyCBOnUbM/1xOfiTchfCUGcdNupWB/PrAtg== X-Gm-Gg: ASbGnctVF5tkDS8xZmLjqBW11682bEVNGt5pnbj/dXnIq7wl1SUxgA8WbNKN3DrnIHr DCOG8d4y/gLe4+mvKEVeqSquD08t87kLPSiSSXaa89kWpIDUCaWFiWStQAPsVkNybQnEOx8xUXC oId/Ru3kTX2NxkPFgbGhcE66kgcGx6+4iYjADC2tH0uBcp8745dRgRXQ7JutPlcEXFNqFtyr1eS 3CoQrmI0pxGJp+SlDVah9us9MB1PeNbBXTI13ONAUo86Fq6WrX7Ho1bXjFLBGrqCDCmog6hdty9 9BTilHVPKSNro0IQBknH5dbsQtLdo5FBx66xtSpToz+u53et6w== X-Google-Smtp-Source: AGHT+IGBqY5fqNJP72rAzOPGf2pEnXEMQNLJPgeg14MJMy3U5yeCXrr2fNe3JU1nQroyn7abpdcTWw== X-Received: by 2002:a17:907:6a0f:b0:ac7:2f8b:6844 with SMTP id a640c23a62f3a-ad1a495a1f8mr415531466b.23.1746391920783; Sun, 04 May 2025 13:52:00 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad189508c2csm370633866b.130.2025.05.04.13.52.00 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:52:00 -0700 (PDT) Message-ID: <039543e0-07c4-4e46-9c79-a507a8123467@gmail.com> Date: Sun, 4 May 2025 23:51:59 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 07/13] wifi: rtw89: Add extra TX headroom for USB From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: In the case of USB the TX descriptor is transmitted in the same buffer as the 802.11 frame, so add the required headroom. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c index a6e67e22349e..0161721bb0e8 100644 --- a/drivers/net/wireless/realtek/rtw89/core.c +++ b/drivers/net/wireless/realtek/rtw89/core.c @@ -5251,6 +5251,9 @@ static int rtw89_core_register_hw(struct rtw89_dev *rtwdev) int ret; int tx_headroom = IEEE80211_HT_CTL_LEN; + if (rtwdev->hci.type == RTW89_HCI_TYPE_USB) + tx_headroom += chip->txwd_body_size + chip->txwd_info_size; + hw->vif_data_size = struct_size_t(struct rtw89_vif, links_inst, n); hw->sta_data_size = struct_size_t(struct rtw89_sta, links_inst, n); hw->txq_data_size = sizeof(struct rtw89_txq); From patchwork Sun May 4 20:52:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 888555 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B0F7823A6 for ; Sun, 4 May 2025 20:52:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391952; cv=none; b=T1ndDiGzyWy7iRVHbN7oWFAEjon53xGKaX/I5zV45yRYFkStfNeRLEGM0rby//4e7UQnAdzRJDFgOe2XUDEFmc9HQvNG4otk9K7iMMmLpkJR1vCQNCNbiKrSHTARf4dcG4t5VvSADZcKCM+/Dzi8hUf3BdJvAu6WQWwR8wkB0ZA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391952; c=relaxed/simple; bh=GYeXpEcE3rUdawe2LD8j4jXkXMhaHnpIgJ6CwD4mAKY=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=aZx7yrK3pawSJFwNiE+w6BWWOVtwLv1P+IzwdfwrhGhlHzTft9O5A4sURFS0ZbaTQPbheT9wDz4jJpVEQZsuwqbzdBYNOzHJVihu2Vz9j8jSrKMHP/zO/edKfzxFyNtTJxNaJSAg7uTKzG+iH0r52ZRs532MDHyiPLBK4l6Zsuo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MV8uM7b/; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MV8uM7b/" Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-5e6c18e2c7dso6960076a12.3 for ; Sun, 04 May 2025 13:52:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746391949; x=1746996749; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=uCs7yVxwPtnPS7MnVRi8OnBTT5LhqkIyim/rfYvNAnM=; b=MV8uM7b/tNqZsfqTrRzoZ7XClddS+Tbz140Zn6yZ7La9spUniwEEVVG+Bl44Nf9mDc 8pVX6RoA3DYHv+qwmR4uOvosx0n1q6zf8R5g8sxi8ZY6CHM3KM6fkXa+puXH5gC89A7h uoer0jr6lovdxbdJOhWxC0BfIf3L0rmaqWIa+FNRj2HQVz69USYQKmdadHKJnJvBKA76 2KljoO5JzPPPBXTxsZQ4RJeN8zFBBNXF9AxPj8/qmYMeg202I2qSO1//3kUH0IUZQKru xMpeQUbaHXxatX9t55VIoiR+xtt82IBAS0umTIv2oHGFGDHdPHztxSpYlKMmtstVepzr 4Zdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746391949; x=1746996749; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=uCs7yVxwPtnPS7MnVRi8OnBTT5LhqkIyim/rfYvNAnM=; b=MKk4lWyWifVIsjqS/EqqcYC4HMTwu4Cz/DKS81Zsxkqgibrf0WPjt1w5WpcwUHUr1q Dk+IP1YN3lgRq8oAtsRgVbxlE73l5dH+n6H3YJaxs7ctLrE38MmRGZXXhpKlId7Txe64 ERFu8A+rFzC7Bumj6OS79hh9nzpi3NqbFMLNkS1d97/QrAH4zjTsIxwbnm95lhiKQEZy pNrMLzECMM2AtKPzEQsVpIp3Y93OrciL7UwoveZPWcQOO+uWFdzzABkRenx8LTJg7Qto fzplqFMkvBbcFpH/u+VLxwTeIePmDBxpSuePcLuEebrTryEScrwy6OytOSRWvnZgvCOD g4Zw== X-Gm-Message-State: AOJu0YyXl9E9FWuem3bGM1DWFEA3ZtSQTEcaZ8YIa8QDH5EQbW0tTtew tqlScUYGssabRKuQabmU3JJmcvYicV5lVasGE/+dkRTiCJ3NUU2752GH2Q== X-Gm-Gg: ASbGncsiL5XpqJSc72qM+PsRIULNvG9lkO7EZ3KdKJjawvixUP4oMYw+PjHxLLBwM2T u4ln9fNhXArz+8A39JEAxXIyL0hjkFX6U8V2UGlpZsLd40vhE7T7M3/7MphEYH3B9q9QiH6ZFr6 UoXFi/Zft1UgavE+Qum+aSZVb5mO859P5QelhquICk/xAueFaaDDS2nB7i820F1W0JXB+4x/Y7j ydLzpcR3dPzO2MSKoSRjz3VRFoJYg/m38GbO5za6H9fqYjehiy3Uug6/Imx+jp1zwY5rLAa3Vm4 i81pn0lE/fKMC69T4j1yZFBWdXaOZBJF2DRM+coktRy/9qp/Jo+qKT0Cim9Q X-Google-Smtp-Source: AGHT+IFf+/MfUhhN4QecRvKS8ElJmdHc6bQv5lAOo0wOtOfWnkwaH3wnCbWhjnjDGgw+RawXUESvOg== X-Received: by 2002:a05:6402:42c9:b0:5f9:dbc6:d363 with SMTP id 4fb4d7f45d1cf-5faa8030b88mr4994726a12.32.1746391948681; Sun, 04 May 2025 13:52:28 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5fa77b914b4sm4229111a12.51.2025.05.04.13.52.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:52:27 -0700 (PDT) Message-ID: <6038bad5-4a4e-4f99-8292-e37a6d11961c@gmail.com> Date: Sun, 4 May 2025 23:52:26 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 08/13] wifi: rtw89: Hide some errors when the device is unplugged From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: A few unnecessary error messages are printed when the device is unplugged. "read swsi busy" in particular can appear ~1000 times when RTL8851BU is unplugged. Add a new flag RTW89_FLAG_UNPLUGGED and print some error messages only when this flag is not set. The new USB driver will set the flag when the device is unplugged. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/core.h | 1 + drivers/net/wireless/realtek/rtw89/mac.c | 13 ++++++++----- drivers/net/wireless/realtek/rtw89/phy.c | 3 ++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index f17f046e773f..015eb38a5a14 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -4895,6 +4895,7 @@ enum rtw89_flags { RTW89_FLAG_FORBIDDEN_TRACK_WROK, RTW89_FLAG_CHANGING_INTERFACE, RTW89_FLAG_HW_RFKILL_STATE, + RTW89_FLAG_UNPLUGGED, NUM_OF_RTW89_FLAGS, }; diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c index 1a03355b340f..99f01fff90fe 100644 --- a/drivers/net/wireless/realtek/rtw89/mac.c +++ b/drivers/net/wireless/realtek/rtw89/mac.c @@ -88,7 +88,7 @@ int rtw89_mac_write_lte(struct rtw89_dev *rtwdev, const u32 offset, u32 val) ret = read_poll_timeout(rtw89_read8, lte_ctrl, (lte_ctrl & BIT(5)) != 0, 50, 50000, false, rtwdev, R_AX_LTE_CTRL + 3); - if (ret) + if (ret && !test_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags)) rtw89_err(rtwdev, "[ERR]lte not ready(W)\n"); rtw89_write32(rtwdev, R_AX_LTE_WDATA, val); @@ -104,7 +104,7 @@ int rtw89_mac_read_lte(struct rtw89_dev *rtwdev, const u32 offset, u32 *val) ret = read_poll_timeout(rtw89_read8, lte_ctrl, (lte_ctrl & BIT(5)) != 0, 50, 50000, false, rtwdev, R_AX_LTE_CTRL + 3); - if (ret) + if (ret && !test_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags)) rtw89_err(rtwdev, "[ERR]lte not ready(W)\n"); rtw89_write32(rtwdev, R_AX_LTE_CTRL, 0x800F0000 | offset); @@ -5842,13 +5842,15 @@ int rtw89_mac_coex_init(struct rtw89_dev *rtwdev, const struct rtw89_mac_ax_coex ret = rtw89_mac_read_lte(rtwdev, R_AX_LTE_SW_CFG_2, &val32); if (ret) { - rtw89_err(rtwdev, "Read R_AX_LTE_SW_CFG_2 fail!\n"); + if (!test_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags)) + rtw89_err(rtwdev, "Read R_AX_LTE_SW_CFG_2 fail!\n"); return ret; } val32 = val32 & B_AX_WL_RX_CTRL; ret = rtw89_mac_write_lte(rtwdev, R_AX_LTE_SW_CFG_2, val32); if (ret) { - rtw89_err(rtwdev, "Write R_AX_LTE_SW_CFG_2 fail!\n"); + if (!test_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags)) + rtw89_err(rtwdev, "Write R_AX_LTE_SW_CFG_2 fail!\n"); return ret; } @@ -5972,7 +5974,8 @@ int rtw89_mac_cfg_gnt(struct rtw89_dev *rtwdev, ret = rtw89_mac_write_lte(rtwdev, R_AX_LTE_SW_CFG_1, val); if (ret) { - rtw89_err(rtwdev, "Write LTE fail!\n"); + if (!test_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags)) + rtw89_err(rtwdev, "Write LTE fail!\n"); return ret; } diff --git a/drivers/net/wireless/realtek/rtw89/phy.c b/drivers/net/wireless/realtek/rtw89/phy.c index 270f40e44c0b..dfff46b92730 100644 --- a/drivers/net/wireless/realtek/rtw89/phy.c +++ b/drivers/net/wireless/realtek/rtw89/phy.c @@ -895,7 +895,8 @@ static u32 rtw89_phy_read_rf_a(struct rtw89_dev *rtwdev, 30, false, rtwdev, R_SWSI_V1, B_SWSI_R_DATA_DONE_V1); if (ret) { - rtw89_err(rtwdev, "read swsi busy\n"); + if (!test_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags)) + rtw89_err(rtwdev, "read swsi busy\n"); return INV_RF_DATA; } From patchwork Sun May 4 20:52:57 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 887383 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C7C3723A6 for ; Sun, 4 May 2025 20:53:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391982; cv=none; b=oRt6PTI91H+4r8slGTCR77C9S5NbqYKZKDrYL60lhZYmgCosxQs2lA1hk0Hk6fod0Hl+bOKoZGtUM+7UhmkntxCeGjJ3Re8E8BVmO4V+5R4Y7B/cA1QmdkjDd9o5eBhADyn0P8/Fa/+wNS7kAjFH2Rtv1gXu/vIVr18EfmvTgS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746391982; c=relaxed/simple; bh=FhZY9EbyQMXG4W+JUgVr+Y8daP2M1HnRC2IojROL+ME=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=QNzOk93X9reHNI/xyC6qKFEaUlzJDCm1pCWtFcOnwzl3eV2FdY+E7hKVJbbVwD3EorRYYqrYQi6BF9uZX16xEH++IW4kNCHqb6cq6Ewb+KrG9/Z7kdqEHSZvf9hHs9qG0IgZcRCziDmsyGCpc6BBejU4rAMEpbLH0Q3BsXvEcvw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=WXB3MLTK; arc=none smtp.client-ip=209.85.218.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="WXB3MLTK" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-ac6e8cf9132so715927666b.2 for ; Sun, 04 May 2025 13:53:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746391979; x=1746996779; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=lm4+BXVPyvxj2cP/K1voAad3j+1frpHmpWa70b/2Qkw=; b=WXB3MLTKjZoOtwe1dgFaie5wRyq7G4pOInLSEuqgNUFnJNh4jDxqsUxv6R52YGxJvm 7MgdJjAWBx7eCSkyLVnjdeujSw3umWrGh99BM2i4Y2tpVGWgW5bpv94+HMWqnUJbVtj4 71508WGdD4ynY4/pb7BZfSbBT0GRa2IXHaIKkFG7eNWoEHkhe3nWiwyARuJgyYypmoK0 pu/yHCKIR/5jOKEomV2sJThc1fsVvN+zbD/VhK4GrTQEn/2yFEoiir+GAc222QtIxAjj n2Ho9+khyPKocWt/NK6kE+BpaBDDuyJiw34LGOjmuSt7GWNzUc2DR5N9XgTMayGQIYlN JM/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746391979; x=1746996779; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=lm4+BXVPyvxj2cP/K1voAad3j+1frpHmpWa70b/2Qkw=; b=LBhuUPOJdZpbjQ+McV7y7iEZ7wINsNoRpm30fAqQo2f0CLzTO8mMqr/f6rPd2Xx0R5 8tDApyV5gHvMJUqcLNr+Aw8XqByF2O9LZpcJPznQLY9oHQTfxVQ6f4BHIpX2iQwh4hfD lxZbCV2UmEeZycTn2LyGLlIOIWVKYN2/JFkTAdjb21wHMRkNqX/Aoduyv8rvbPWZ7C8s rJc4WcHCP4dv9iILi73S6kwNmTJm1QMDk2mFFVe0YzEKHqh/VoWQE8rrIf+pvM9v0BWC TMCBQ4aEo/9NJ6gUxEiS9hd/BCmhcavALTqzWpcuK0J5+QaAEo8qJy/ZXFwVY19xj0RZ Zobg== X-Gm-Message-State: AOJu0YwWnRxpsIQxCL1dneksDrV5Ar/K0KQT0zFWntXWI4V2lQxjtDw3 H8vaB+XzWO8bgvh+kbi8+BoUnCj/LnkAoRjM5kKCmbThr8Nt5MCJKir2LA== X-Gm-Gg: ASbGncuLRGNNT9HfVXl4wUO4v0rn2jltF5djR2b6jLVAC3WpCotje99OdEkwXFYtgRa qb3ZWkhmCMkCqC1AWyV0zPm19ZCo837i/+r9fFl5AsgoWbfl1oIr0THXZvfi4Xk40vgWNZBrU2R XEcvomBF/H31MzB3EYeWIy/PltAtPbtskYbmJao8laEZN6widxnNRglb+hn8jM3uj/MctdG93hF sM47zasH0jtPsVQxeFjc407Pc341b4zEZfdGwyqsvZOVI/bCtj2IMsqNlhRtDrQL8r55mvW0lhd MIf8CYKCoye/auutFOe3QBUNmjiwfFkFjScnupgxoFK+eCxMe05YeX/+xoP6 X-Google-Smtp-Source: AGHT+IGwZosMxO3/eqEc840Nu/b2Tg+m8SMWH7foI2aonmyZFc63GcOyaTaVA0B93loUvkecqOTbRQ== X-Received: by 2002:a17:907:c04:b0:ac3:bd68:24f0 with SMTP id a640c23a62f3a-ad17b470a90mr1041905266b.7.1746391978854; Sun, 04 May 2025 13:52:58 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad189508c2csm370752866b.130.2025.05.04.13.52.58 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:52:58 -0700 (PDT) Message-ID: <3df912fb-3a56-40d7-940f-c82a23212adc@gmail.com> Date: Sun, 4 May 2025 23:52:57 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 09/13] wifi: rtw89: Fix rtw89_mac_power_switch() for USB From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Clear some bits in some registers in order to allow RTL8851BU to power on. Also tested with RTL8832BU and RTL8832CU. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/mac.c | 8 ++++++++ drivers/net/wireless/realtek/rtw89/reg.h | 1 + 2 files changed, 9 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c index 99f01fff90fe..d3cf67dfabc9 100644 --- a/drivers/net/wireless/realtek/rtw89/mac.c +++ b/drivers/net/wireless/realtek/rtw89/mac.c @@ -1458,6 +1458,14 @@ static int rtw89_mac_power_switch(struct rtw89_dev *rtwdev, bool on) int ret; u8 val; + if (rtwdev->hci.type == RTW89_HCI_TYPE_USB && + rtw89_read32_mask(rtwdev, R_AX_GPIO_MUXCFG, B_AX_BOOT_MODE)) { + rtw89_write32_clr(rtwdev, R_AX_SYS_PW_CTRL, B_AX_APFN_ONMAC); + rtw89_write32_clr(rtwdev, R_AX_SYS_STATUS1, B_AX_AUTO_WLPON); + rtw89_write32_clr(rtwdev, R_AX_GPIO_MUXCFG, B_AX_BOOT_MODE); + rtw89_write32_clr(rtwdev, R_AX_RSV_CTRL, B_AX_R_DIS_PRST); + } + if (on) { cfg_seq = chip->pwr_on_seq; cfg_func = chip->ops->pwr_on_func; diff --git a/drivers/net/wireless/realtek/rtw89/reg.h b/drivers/net/wireless/realtek/rtw89/reg.h index f05c81ae5869..9d9e1b02bfc7 100644 --- a/drivers/net/wireless/realtek/rtw89/reg.h +++ b/drivers/net/wireless/realtek/rtw89/reg.h @@ -182,6 +182,7 @@ #define R_AX_SYS_STATUS1 0x00F4 #define B_AX_SEL_0XC0_MASK GENMASK(17, 16) +#define B_AX_AUTO_WLPON BIT(10) #define B_AX_PAD_HCI_SEL_V2_MASK GENMASK(5, 3) #define MAC_AX_HCI_SEL_SDIO_UART 0 #define MAC_AX_HCI_SEL_MULTI_USB 1 From patchwork Sun May 4 20:53:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 888554 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5C33D23A6 for ; Sun, 4 May 2025 20:53:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746392009; cv=none; b=dxYvZLcl2m8tb5X/qQ47QuyWDeuz7rhDL7wx1GCbAgCMp4vkJKuQ6ygLQigNmumzBmJilGn2KCl0cbwvh4OrUBjFuROQpeote3CmOX3s2eAWfEkYlmLo24lLL31sr10TaBz5VPaVQrLx7BgdfD+01H6EVZ7IBqB2mhVKfY8MUGU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746392009; c=relaxed/simple; bh=L3eqjb7L8REoZjzuR6jADa+RoQj/meG4Zws/NchX5uY=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=GnLpamtcBe66OoNQw5EglAbSgAb/NQSuoQb+gRIDtXtzU8/GBMpohzAnt4B92LhQxXZ+FlfQaRWtHoMEFasn+dK3GRCfTR8iZcYKBw7PZvHrOBr5SwHbCQFH57JmThNNx3JO6736T47pyP4CvdxjHR/XIBPKgF8T+uiw7w8fjzY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=SrH993wA; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SrH993wA" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-acec5b99052so713239066b.1 for ; Sun, 04 May 2025 13:53:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746392006; x=1746996806; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=+SO12d9JOJmBU9OT5wDbnW1N1cVoFUqJduzlNA0CIkk=; b=SrH993wAtNrEM0BWHUaXEUSy6MXyZXoDFNQXO7tOnEJTw5ES/i/lURgiIOB1wL2Vn8 x5RwyZpKGczwDdfGMTKhHphZT/zupL/gmI4vtCzVaPxBabSzd+DmcABAEdcABf2gP0L4 xRewTJv/DcQFXVasLjPFIezPIo+mk+Uha3nPSPDwTXHKbGZXDJodxEhz1zeHx51yLR4A chLwXK0lAOZNis4l45LsYBAB3L8xd2LjuH3/VB2HlS/gE1rfe4uSfELiamt9ciPYPIq5 ii3CY0JOETcDmsZnEH69Jjin/UD1wZlsrmxnz8BeynT3lD5ult9T/UdQzqnvfVpPOPvP DRmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746392006; x=1746996806; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+SO12d9JOJmBU9OT5wDbnW1N1cVoFUqJduzlNA0CIkk=; b=wQajbtVtWhTyBwcK1ZFZkxKnwAhZik/U3LMoQ2hBYz142wLvPcK2lBmgcdEDqPWPuK hQhDvO2fQPgps4OllG7RniSRQ7UN+9ZOFBsYf44F1ZLgrSliZiM/CYYm3PJRscOl7kCX NT+X17Ft4KwpfasgvzXPOkcNKaaLsdQD9oDNUEZUpnfdd2fz9i6kqBa5VDImO/TD48fL 8HuSiXA88l8rJVKYcyHQqJ0uScor/apF6GdQC/ISxcwwPqmHFQ55bo0w3evSvXXN0iO4 ATs/9pq4Ye5bCP8COefxfP/fekc/n0Ke+w8aUruBjRFSUbA6DtXTYNi6rJidT+NBjT1j Z7dg== X-Gm-Message-State: AOJu0YwnfnOsdrfRKEcFF2BCrSc/IEtpoyNuK4Dez79jU26Xlqczla/C 7/ySxYIDiaqMHI7UEN5STSGWU5nUetOWuhYes4iA9VtgjfyHaMKTnKjVvA== X-Gm-Gg: ASbGnctcFh3nDMvLQ4daEUm7eEEmd67NVJPDFdL5UrymMWjlatQ0jvzUrJ2Acn4cEZB H1z6IyGZ1o9JlaMK9LWpIE9eKmSV5iMNmwS8+dpyZHjE9bIlnIETK3z/KO9KCqNkZlsiVZ7BXVm BJuosSTxVJ8dOf/cQA3Oai3aKUB3eLzobUaKHSOqpBFuSI7k1ZvBvFx6hgn+Qw+xTUNmKP8msib bq358eayTwNFCKUcLf6tqlUbC4k+TW0Khd7YgzpG33aC0SgrRYNhvyEy3ZQRgERB03+2ni2UVQE 9azOYm+ByEHy9Ywv08Sz3+Mtg8oA5ARwKw9yC7Sj79+xzOKciA== X-Google-Smtp-Source: AGHT+IHhk5l5Q6SKtm0+68Puz9W0LeQiWFxxf/jTwBxJMNzuxyhr8auCdOhhw28kqvhbDBck27Fzgg== X-Received: by 2002:a17:906:c10b:b0:abf:6d24:10bb with SMTP id a640c23a62f3a-ad1a4acf9a7mr468771966b.44.1746392005593; Sun, 04 May 2025 13:53:25 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad1895402c7sm367419166b.164.2025.05.04.13.53.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:53:25 -0700 (PDT) Message-ID: <5be206e0-a8b1-4500-ba65-6e6427f84bc0@gmail.com> Date: Sun, 4 May 2025 23:53:24 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 10/13] wifi: rtw89: Add some definitions for USB From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Add various register and bit definitions which will be used by the new USB driver. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/reg.h | 29 +++++++++++++++++++++++ drivers/net/wireless/realtek/rtw89/txrx.h | 1 + 2 files changed, 30 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw89/reg.h b/drivers/net/wireless/realtek/rtw89/reg.h index 9d9e1b02bfc7..a3b83b1a92eb 100644 --- a/drivers/net/wireless/realtek/rtw89/reg.h +++ b/drivers/net/wireless/realtek/rtw89/reg.h @@ -381,6 +381,18 @@ #define B_AX_ACH1_BUSY BIT(9) #define B_AX_ACH0_BUSY BIT(8) +#define R_AX_USB_ENDPOINT_0 0x1060 +#define B_AX_EP_IDX GENMASK(3, 0) +#define R_AX_USB_ENDPOINT_2 0x1068 +#define NUMP 0x1 +#define R_AX_USB_HOST_REQUEST_2 0x1078 +#define B_AX_R_USBIO_MODE BIT(4) +#define R_AX_USB3_MAC_NPI_CONFIG_INTF_0 0x1114 +#define B_AX_SSPHY_LFPS_FILTER BIT(31) +#define R_AX_USB_WLAN0_1 0x1174 +#define B_AX_USBRX_RST BIT(9) +#define B_AX_USBTX_RST BIT(8) + #define R_AX_PCIE_DBG_CTRL 0x11C0 #define B_AX_DBG_DUMMY_MASK GENMASK(23, 16) #define B_AX_PCIE_DBG_SEL_MASK GENMASK(15, 13) @@ -460,6 +472,17 @@ #define R_AX_WP_PAGE_CTRL2_V1 0x17A4 #define R_AX_WP_PAGE_INFO1_V1 0x17A8 +#define R_AX_USB_ENDPOINT_0_V1 0x5060 +#define B_AX_EP_IDX_V1 GENMASK(3, 0) +#define R_AX_USB_ENDPOINT_2_V1 0x5068 +#define R_AX_USB_HOST_REQUEST_2_V1 0x5078 +#define B_AX_R_USBIO_MODE_V1 BIT(4) +#define R_AX_USB3_MAC_NPI_CONFIG_INTF_0_V1 0x5114 +#define B_AX_SSPHY_LFPS_FILTER_V1 BIT(31) +#define R_AX_USB_WLAN0_1_V1 0x5174 +#define B_AX_USBRX_RST_V1 BIT(9) +#define B_AX_USBTX_RST_V1 BIT(8) + #define R_AX_H2CREG_DATA0_V1 0x7140 #define R_AX_H2CREG_DATA1_V1 0x7144 #define R_AX_H2CREG_DATA2_V1 0x7148 @@ -1026,6 +1049,12 @@ #define B_AX_DISPATCHER_INTN_SEL_MASK GENMASK(7, 4) #define B_AX_DISPATCHER_CH_SEL_MASK GENMASK(3, 0) +#define R_AX_RXDMA_SETTING 0x8908 +#define B_AX_BULK_SIZE GENMASK(1, 0) +#define USB11_BULKSIZE 0x2 +#define USB2_BULKSIZE 0x1 +#define USB3_BULKSIZE 0x0 + #define R_AX_RX_FUNCTION_STOP 0x8920 #define B_AX_HDR_RX_STOP BIT(0) diff --git a/drivers/net/wireless/realtek/rtw89/txrx.h b/drivers/net/wireless/realtek/rtw89/txrx.h index 70fe7cebc9d5..3c3819973daf 100644 --- a/drivers/net/wireless/realtek/rtw89/txrx.h +++ b/drivers/net/wireless/realtek/rtw89/txrx.h @@ -73,6 +73,7 @@ static inline u8 rtw89_get_data_nss(struct rtw89_dev *rtwdev, u16 hw_rate) #define RTW89_TXWD_BODY0_FW_DL BIT(20) #define RTW89_TXWD_BODY0_CHANNEL_DMA GENMASK(19, 16) #define RTW89_TXWD_BODY0_HDR_LLC_LEN GENMASK(15, 11) +#define RTW89_TXWD_BODY0_STF_MODE BIT(10) #define RTW89_TXWD_BODY0_WD_PAGE BIT(7) #define RTW89_TXWD_BODY0_HW_AMSDU BIT(5) #define RTW89_TXWD_BODY0_HW_SSN_SEL GENMASK(3, 2) From patchwork Sun May 4 20:54:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 887382 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9D72823A6 for ; Sun, 4 May 2025 20:54:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746392056; cv=none; b=t1yEmFCViX7MsekIQaPN5bsa/jBDgaLvyxUEepwqTYgSsVrflycbBN6mBdSDEtXo5Ll0as97fZsAZy+iDBxbjIA5dSYUlgnUoYNGIz7kzG3Bs2s9VtdlHvLGj80PTteY6GMw4ptUWiHpTFZPptWKIfOypvYN6DUzUsx67rroZxo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746392056; c=relaxed/simple; bh=/syK5Nl10Ht7fZQptOtmNL9q39qiiEGuqMyYo9CmBtE=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=SiUsmYAk81dS/6InBN3ZfoP1Zd2d04n1lVdSbi7bhFgJkahsm8mRNlKljRk4ii4LdmEOBw8vLs4ZYRPM0CvqckQelV+2Wl0pjIJF2lwnD4BqLz6v2EwyPncvR0iUCrHH2shNfmGH5rOWAKj2ctbnKeUCCFH8kFTPAkqNRp0V+MY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=FQQfgCtO; arc=none smtp.client-ip=209.85.218.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="FQQfgCtO" Received: by mail-ej1-f48.google.com with SMTP id a640c23a62f3a-ac2aeada833so719621166b.0 for ; Sun, 04 May 2025 13:54:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746392052; x=1746996852; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=+m0S5FsyZc/iRsxc2jCn6a2rGgafzReAAW2TMS+v+fI=; b=FQQfgCtOk5ET1xIlmsmhbRm6ZxerUks+mIkFONEumi238jQC8K9XGIUUHAHIByC3th BaLgdhRVlgHn5hHJPcIDIy3RDZr9sAr1B835DjNoYvYLx9U/1j6lj1j4g9no1HB4HMAJ mwbcmjU0ZWTNOSbFgm5PN1vMNjnmW0sck/CTNvD1T2NePs96do4U01QHj4rZDim7x9ey 72pcnH7sjwoMJ17IxcJIPG+o45Nss8kJxEYvFWs8P9B0PlI7h8OslAlx5k7FGhw17Xom RS5VpdfwRHsZ7hLS4bAHMhpkEtOwTK0B2/LMsHlEqATQpRpin5GcG/0GsF27/MC3Dfaq 0UFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746392052; x=1746996852; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+m0S5FsyZc/iRsxc2jCn6a2rGgafzReAAW2TMS+v+fI=; b=jONcZ5gRhxQQQJZVXntK/+fI9nABUTrVFdGg7Ua0BgEQr80eWfeBelWG8LpGfvRHID LB0+Fno0ccGOJkD+9Io3FG92K+WtDGvHrZM++AqoAH757cVIJMZSbJy6wuoQyHC2jzYv 7+p7ioAMkaqDFOtfPkAWCIvxhFyNBPCjPccwc6RSXsE/i3xQeVOvSi/NFkKURMI2ipcv bkifB2TlS/H497CGj4xDHia6lpf4ZwQHBEj0tw3J6lyX+HPqRTwn2jhnIpb1hcNu0Ijb bmXRj7HTspiOyb1f+/7tXklp9PSyFpRkUg2NV9whfzX7CUM3EY7WrVLVzAfIi1F7ynhF z70g== X-Gm-Message-State: AOJu0YwEgmT62fRrMXRZz0ZyEryEl+sRl/7qEpi6EQh2rpoJTaH5D19R pd26VzIxrLC4Hpny02mhqfIf9knHD1XPvh+DweXLWrw75E9/lg1tyKKbWg== X-Gm-Gg: ASbGncsqgekFMHwgvcmw/82w7zcEhW3qbXFKFblUQe4F/h/9PHEsQR5gdQ7sN6JqxA0 NWbnGIxcsN1PNgcRuWghl+EYLymp/E2qlFkoMO6adoQQ76jvxhRl9dT7AiGxqqmkWAVPpp/qKbD ONJMUletoB7P00kxDk4LtFZtq1m6dwt78IejX8m8fJVKpknmMpOPI1xYAxhOJGQE3xZHZ9mV9/a D8ohcN2d85IZQDXEJ7OTKt9ixHk0p4hkdyAAOSppLXWuWKOg9J6ZYGBlH3FJQ4FI3oyVNF7tmpy B/BmbsCNNcLzVYWIDZ3DaebKrjiJyRKHKHjE5bYJLoAOHtvaxw== X-Google-Smtp-Source: AGHT+IHAx20+qX+0Pw0lV/nw4jFXHD++OnK/bcjshDR6BfviqdUxBfE/uPSlF0V/FJT7Z9dbIAFGVQ== X-Received: by 2002:a17:906:9f85:b0:ace:d50f:8ee3 with SMTP id a640c23a62f3a-aceff024bf8mr1115976666b.19.1746392051527; Sun, 04 May 2025 13:54:11 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad18950be09sm369438666b.158.2025.05.04.13.54.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:54:11 -0700 (PDT) Message-ID: <9a3d63a2-2a8f-4f1d-a9cb-b79c255c1a51@gmail.com> Date: Sun, 4 May 2025 23:54:10 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 11/13] wifi: rtw89: Add usb.{c,h} From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Add very basic USB support. No TX/RX aggregation, no TX queues, no switching to USB 3 mode. RTL8851BU and RTL8832BU work. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/usb.c | 1030 ++++++++++++++++++++++ drivers/net/wireless/realtek/rtw89/usb.h | 61 ++ 2 files changed, 1091 insertions(+) create mode 100644 drivers/net/wireless/realtek/rtw89/usb.c create mode 100644 drivers/net/wireless/realtek/rtw89/usb.h diff --git a/drivers/net/wireless/realtek/rtw89/usb.c b/drivers/net/wireless/realtek/rtw89/usb.c new file mode 100644 index 000000000000..6e8a544b352c --- /dev/null +++ b/drivers/net/wireless/realtek/rtw89/usb.c @@ -0,0 +1,1030 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* Copyright(c) 2025 Realtek Corporation + */ + +#include +#include "debug.h" +#include "mac.h" +#include "reg.h" +#include "txrx.h" +#include "usb.h" + +static void rtw89_usb_vendorreq(struct rtw89_dev *rtwdev, u32 addr, + void *data, u16 len, u8 reqtype) +{ + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + struct usb_device *udev = rtwusb->udev; + unsigned int pipe; + u16 value, index; + int attempt, ret; + + value = addr & 0x0000ffff; + index = (addr & 0x00ff0000) >> 16; + + mutex_lock(&rtwusb->vendor_req_mutex); + + for (attempt = 0; attempt < 10; attempt++) { + *rtwusb->vendor_req_buf = 0; + + if (reqtype == RTW89_USB_VENQT_READ) { + pipe = usb_rcvctrlpipe(udev, 0); + } else { /* RTW89_USB_VENQT_WRITE */ + pipe = usb_sndctrlpipe(udev, 0); + + memcpy(rtwusb->vendor_req_buf, data, len); + } + + ret = usb_control_msg(udev, pipe, RTW89_USB_VENQT, reqtype, + value, index, rtwusb->vendor_req_buf, + len, 500); + + if (ret == len) { /* Success */ + atomic_set(&rtwusb->continual_io_error, 0); + + if (reqtype == RTW89_USB_VENQT_READ) + memcpy(data, rtwusb->vendor_req_buf, len); + + break; + } + + if (ret == -ESHUTDOWN || ret == -ENODEV) + set_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags); + else if (ret < 0) + rtw89_warn(rtwdev, + "usb %s%u 0x%x fail ret=%d value=0x%x attempt=%d\n", + reqtype == RTW89_USB_VENQT_READ ? "read" : "write", + len * 8, addr, ret, + le32_to_cpup(rtwusb->vendor_req_buf), + attempt); + else if (ret > 0 && reqtype == RTW89_USB_VENQT_READ) + memcpy(data, rtwusb->vendor_req_buf, len); + + if (atomic_inc_return(&rtwusb->continual_io_error) > 4) { + set_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags); + break; + } + } + + mutex_unlock(&rtwusb->vendor_req_mutex); +} + +static u32 rtw89_usb_read_cmac(struct rtw89_dev *rtwdev, u32 addr) +{ + u32 addr32, val32, shift; + __le32 data = 0; + int count; + + addr32 = addr & ~0x3; + shift = (addr & 0x3) * 8; + + for (count = 0; ; count++) { + rtw89_usb_vendorreq(rtwdev, addr32, &data, 4, + RTW89_USB_VENQT_READ); + + val32 = le32_to_cpu(data); + + if (val32 != RTW89_R32_DEAD) + break; + + if (count >= MAC_REG_POOL_COUNT) { + rtw89_warn(rtwdev, "%s: addr %#x = %#x\n", + __func__, addr32, val32); + val32 = RTW89_R32_DEAD; + break; + } + + rtw89_write32(rtwdev, R_AX_CK_EN, B_AX_CMAC_ALLCKEN); + } + + return val32 >> shift; +} + +static u8 rtw89_usb_ops_read8(struct rtw89_dev *rtwdev, u32 addr) +{ + u8 data = 0; + + if (ACCESS_CMAC(addr)) + return rtw89_usb_read_cmac(rtwdev, addr); + + rtw89_usb_vendorreq(rtwdev, addr, &data, 1, RTW89_USB_VENQT_READ); + + return data; +} + +static u16 rtw89_usb_ops_read16(struct rtw89_dev *rtwdev, u32 addr) +{ + __le16 data = 0; + + if (ACCESS_CMAC(addr)) + return rtw89_usb_read_cmac(rtwdev, addr); + + rtw89_usb_vendorreq(rtwdev, addr, &data, 2, RTW89_USB_VENQT_READ); + + return le16_to_cpu(data); +} + +static u32 rtw89_usb_ops_read32(struct rtw89_dev *rtwdev, u32 addr) +{ + __le32 data = 0; + + if (ACCESS_CMAC(addr)) + return rtw89_usb_read_cmac(rtwdev, addr); + + rtw89_usb_vendorreq(rtwdev, addr, &data, 4, + RTW89_USB_VENQT_READ); + + return le32_to_cpu(data); +} + +static void rtw89_usb_ops_write8(struct rtw89_dev *rtwdev, u32 addr, u8 val) +{ + u8 data = val; + + rtw89_usb_vendorreq(rtwdev, addr, &data, 1, RTW89_USB_VENQT_WRITE); +} + +static void rtw89_usb_ops_write16(struct rtw89_dev *rtwdev, u32 addr, u16 val) +{ + __le16 data = cpu_to_le16(val); + + rtw89_usb_vendorreq(rtwdev, addr, &data, 2, RTW89_USB_VENQT_WRITE); +} + +static void rtw89_usb_ops_write32(struct rtw89_dev *rtwdev, u32 addr, u32 val) +{ + __le32 data = cpu_to_le32(val); + + rtw89_usb_vendorreq(rtwdev, addr, &data, 4, RTW89_USB_VENQT_WRITE); +} + +static u32 +rtw89_usb_ops_check_and_reclaim_tx_resource(struct rtw89_dev *rtwdev, + u8 txch) +{ + if (txch == RTW89_TXCH_CH12) + return 1; + + return 42; /* TODO some kind of calculation? */ +} + +static void rtw89_usb_ops_tx_kick_off(struct rtw89_dev *rtwdev, u8 txch) +{ + /* TODO later. for now transmit every frame right away in + * rtw89_usb_ops_tx_write + */ +} + +static u8 rtw89_usb_get_bulkout_id(u8 ch_dma) +{ + switch (ch_dma) { + case RTW89_DMA_ACH0: + return 3; + case RTW89_DMA_ACH1: + return 4; + case RTW89_DMA_ACH2: + return 5; + case RTW89_DMA_ACH3: + return 6; + default: + case RTW89_DMA_B0MG: + return 0; + case RTW89_DMA_B0HI: + return 1; + case RTW89_DMA_H2C: + return 2; + } +} + +static int rtw89_usb_write_port(struct rtw89_dev *rtwdev, u8 ch_dma, + void *data, int len, usb_complete_t cb, + void *context) +{ + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + struct usb_device *usbd = rtwusb->udev; + struct urb *urb; + u8 bulkout_id = rtw89_usb_get_bulkout_id(ch_dma); + unsigned int pipe; + int ret; + + if (test_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags)) + return 0; + + urb = usb_alloc_urb(0, GFP_ATOMIC); + if (!urb) + return -ENOMEM; + + pipe = usb_sndbulkpipe(usbd, rtwusb->out_pipe[bulkout_id]); + + usb_fill_bulk_urb(urb, usbd, pipe, data, len, cb, context); + urb->transfer_flags |= URB_ZERO_PACKET; + ret = usb_submit_urb(urb, GFP_ATOMIC); + + if (ret) + usb_free_urb(urb); + + if (ret == -ENODEV) + set_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags); + + return ret; +} + +static void rtw89_usb_write_port_complete_fwcmd(struct urb *urb) +{ + struct rtw89_usb_tx_ctrl_block *txcb = urb->context; + struct rtw89_dev *rtwdev = txcb->rtwdev; + + switch (urb->status) { + case 0: + case -EPIPE: + case -EPROTO: + case -EINPROGRESS: + case -ENOENT: + case -ECONNRESET: + break; + default: + set_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags); + break; + } + + skb_queue_purge(&txcb->tx_ack_queue); + kfree(txcb); + usb_free_urb(urb); +} + +static int rtw89_usb_fwcmd_submit(struct rtw89_dev *rtwdev, + struct rtw89_core_tx_request *tx_req) +{ + struct rtw89_tx_desc_info *desc_info = &tx_req->desc_info; + struct rtw89_usb_tx_ctrl_block *txcb; + struct sk_buff *skb = tx_req->skb; + int txdesc_size = rtwdev->chip->h2c_desc_size; + void *txdesc; + int ret; + + if (((desc_info->pkt_size + txdesc_size) % 512) == 0) { + rtw89_info(rtwdev, "avoiding multiple of 512\n"); + desc_info->pkt_size += 4; + skb_put(skb, 4); + } + + txcb = kmalloc(sizeof(*txcb), GFP_ATOMIC); + if (!txcb) + return -ENOMEM; + + txdesc = skb_push(skb, txdesc_size); + memset(txdesc, 0, txdesc_size); + rtw89_chip_fill_txdesc_fwcmd(rtwdev, desc_info, txdesc); + + txcb->rtwdev = rtwdev; + skb_queue_head_init(&txcb->tx_ack_queue); + + skb_queue_tail(&txcb->tx_ack_queue, skb); + + ret = rtw89_usb_write_port(rtwdev, RTW89_DMA_H2C, skb->data, skb->len, + rtw89_usb_write_port_complete_fwcmd, txcb); + + if (ret) { + rtw89_err(rtwdev, "%s failed: %d\n", __func__, ret); + + skb_dequeue(&txcb->tx_ack_queue); + kfree(txcb); + } + + return ret; +} + +static void rtw89_usb_write_port_complete(struct urb *urb) +{ + struct rtw89_usb_tx_ctrl_block *txcb = urb->context; + struct rtw89_dev *rtwdev = txcb->rtwdev; + struct ieee80211_tx_info *info; + struct sk_buff *skb; + + while (true) { + skb = skb_dequeue(&txcb->tx_ack_queue); + if (!skb) + break; + + info = IEEE80211_SKB_CB(skb); + ieee80211_tx_info_clear_status(info); + + if (urb->status == 0) { + if (info->flags & IEEE80211_TX_CTL_NO_ACK) + info->flags |= IEEE80211_TX_STAT_NOACK_TRANSMITTED; + else + info->flags |= IEEE80211_TX_STAT_ACK; + } + + ieee80211_tx_status_irqsafe(rtwdev->hw, skb); + } + + switch (urb->status) { + case 0: + case -EPIPE: + case -EPROTO: + case -EINPROGRESS: + case -ENOENT: + case -ECONNRESET: + break; + default: + set_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags); + break; + } + + kfree(txcb); + usb_free_urb(urb); +} + +static int rtw89_usb_ops_tx_write(struct rtw89_dev *rtwdev, + struct rtw89_core_tx_request *tx_req) +{ + struct rtw89_tx_desc_info *desc_info = &tx_req->desc_info; + const struct rtw89_chip_info *chip = rtwdev->chip; + struct rtw89_usb_tx_ctrl_block *txcb; + struct sk_buff *skb = tx_req->skb; + struct rtw89_txwd_body *txdesc; + u32 txdesc_size; + int ret, len; + + if ((desc_info->ch_dma == RTW89_TXCH_CH12 || + tx_req->tx_type == RTW89_CORE_TX_TYPE_FWCMD) && + (desc_info->ch_dma != RTW89_TXCH_CH12 || + tx_req->tx_type != RTW89_CORE_TX_TYPE_FWCMD)) { + rtw89_err(rtwdev, "dma channel %d/TX type %d mismatch\n", + desc_info->ch_dma, tx_req->tx_type); + return -EINVAL; + } + + if (desc_info->ch_dma == RTW89_TXCH_CH12) + return rtw89_usb_fwcmd_submit(rtwdev, tx_req); + + txcb = kmalloc(sizeof(*txcb), GFP_ATOMIC); + if (!txcb) + return -ENOMEM; + + txdesc_size = chip->txwd_body_size; + if (desc_info->en_wd_info) + txdesc_size += chip->txwd_info_size; + + txdesc = (struct rtw89_txwd_body *)(skb->data - txdesc_size); + len = skb->len + txdesc_size; + memset(txdesc, 0, txdesc_size); + rtw89_chip_fill_txdesc(rtwdev, desc_info, txdesc); + + le32p_replace_bits(&txdesc->dword0, 1, RTW89_TXWD_BODY0_STF_MODE); + + txcb->rtwdev = rtwdev; + skb_queue_head_init(&txcb->tx_ack_queue); + + skb_queue_tail(&txcb->tx_ack_queue, skb); + + ret = rtw89_usb_write_port(rtwdev, desc_info->ch_dma, txdesc, len, + rtw89_usb_write_port_complete, txcb); + if (ret) { + rtw89_err(rtwdev, "%s failed: %d\n", __func__, ret); + + skb_dequeue(&txcb->tx_ack_queue); + kfree(txcb); + } + + return ret; +} + +static void rtw89_usb_rx_handler(struct work_struct *work) +{ + struct rtw89_usb *rtwusb = container_of(work, struct rtw89_usb, rx_work); + struct rtw89_dev *rtwdev = rtwusb->rtwdev; + struct rtw89_rx_desc_info desc_info; + struct sk_buff *rx_skb; + struct sk_buff *skb; + u32 pkt_offset; + int limit; + + for (limit = 0; limit < 200; limit++) { + rx_skb = skb_dequeue(&rtwusb->rx_queue); + if (!rx_skb) + break; + + if (skb_queue_len(&rtwusb->rx_queue) >= RTW89_USB_MAX_RXQ_LEN) { + rtw89_warn(rtwdev, "rx_queue overflow\n"); + dev_kfree_skb_any(rx_skb); + continue; + } + + memset(&desc_info, 0, sizeof(desc_info)); + rtw89_chip_query_rxdesc(rtwdev, &desc_info, rx_skb->data, 0); + + skb = rtw89_alloc_skb_for_rx(rtwdev, desc_info.pkt_size); + if (!skb) { + rtw89_debug(rtwdev, RTW89_DBG_HCI, + "failed to allocate RX skb of size %u\n", + desc_info.pkt_size); + continue; + } + + pkt_offset = desc_info.offset + desc_info.rxd_len; + + skb_put_data(skb, rx_skb->data + pkt_offset, + desc_info.pkt_size); + + rtw89_core_rx(rtwdev, &desc_info, skb); + + if (skb_queue_len(&rtwusb->rx_free_queue) >= RTW89_USB_RX_SKB_NUM) + dev_kfree_skb_any(rx_skb); + else + skb_queue_tail(&rtwusb->rx_free_queue, rx_skb); + } + + if (limit == 200) + rtw89_debug(rtwdev, RTW89_DBG_HCI, + "left %d rx skbs in the queue for later\n", + skb_queue_len(&rtwusb->rx_queue)); +} + +static void rtw89_usb_read_port_complete(struct urb *urb); + +static void rtw89_usb_rx_resubmit(struct rtw89_usb *rtwusb, + struct rtw89_usb_rx_ctrl_block *rxcb, + gfp_t gfp) +{ + struct rtw89_dev *rtwdev = rtwusb->rtwdev; + struct sk_buff *rx_skb; + int error; + + rx_skb = skb_dequeue(&rtwusb->rx_free_queue); + if (!rx_skb) + rx_skb = alloc_skb(RTW89_USB_RECVBUF_SZ, gfp); + + if (!rx_skb) + goto try_later; + + skb_reset_tail_pointer(rx_skb); + rx_skb->len = 0; + + rxcb->rx_skb = rx_skb; + + usb_fill_bulk_urb(rxcb->rx_urb, rtwusb->udev, + usb_rcvbulkpipe(rtwusb->udev, rtwusb->in_pipe), + rxcb->rx_skb->data, RTW89_USB_RECVBUF_SZ, + rtw89_usb_read_port_complete, rxcb); + + error = usb_submit_urb(rxcb->rx_urb, gfp); + if (error) { + skb_queue_tail(&rtwusb->rx_free_queue, rxcb->rx_skb); + + if (error == -ENODEV) + set_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags); + else + rtw89_err(rtwdev, "Err sending rx data urb %d\n", + error); + + if (error == -ENOMEM) + goto try_later; + } + + return; + +try_later: + rxcb->rx_skb = NULL; + queue_work(rtwusb->rxwq, &rtwusb->rx_urb_work); +} + +static void rtw89_usb_rx_resubmit_work(struct work_struct *work) +{ + struct rtw89_usb *rtwusb = container_of(work, struct rtw89_usb, rx_urb_work); + struct rtw89_usb_rx_ctrl_block *rxcb; + int i; + + for (i = 0; i < RTW89_USB_RXCB_NUM; i++) { + rxcb = &rtwusb->rx_cb[i]; + + if (!rxcb->rx_skb) + rtw89_usb_rx_resubmit(rtwusb, rxcb, GFP_ATOMIC); + } +} + +static void rtw89_usb_read_port_complete(struct urb *urb) +{ + struct rtw89_usb_rx_ctrl_block *rxcb = urb->context; + struct rtw89_dev *rtwdev = rxcb->rtwdev; + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + struct sk_buff *skb = rxcb->rx_skb; + + if (urb->status == 0) { + if (urb->actual_length > urb->transfer_buffer_length || + urb->actual_length < sizeof(struct rtw89_rxdesc_short)) { + rtw89_err(rtwdev, "failed to get urb length: %d\n", + urb->actual_length); + skb_queue_tail(&rtwusb->rx_free_queue, skb); + } else { + skb_put(skb, urb->actual_length); + skb_queue_tail(&rtwusb->rx_queue, skb); + queue_work(rtwusb->rxwq, &rtwusb->rx_work); + } + + rtw89_usb_rx_resubmit(rtwusb, rxcb, GFP_ATOMIC); + } else { + skb_queue_tail(&rtwusb->rx_free_queue, skb); + + if (atomic_inc_return(&rtwusb->continual_io_error) > 4) + set_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags); + + switch (urb->status) { + case -EINVAL: + case -EPIPE: + case -ENODEV: + case -ESHUTDOWN: + set_bit(RTW89_FLAG_UNPLUGGED, rtwdev->flags); + break; + case -EPROTO: + case -EILSEQ: + case -ETIME: + case -ECOMM: + case -EOVERFLOW: + case -ENOENT: + break; + case -EINPROGRESS: + rtw89_info(rtwdev, "URB is in progress\n"); + break; + default: + rtw89_err(rtwdev, "%s status %d\n", + __func__, urb->status); + break; + } + } +} + +static void rtw89_usb_cancel_rx_bufs(struct rtw89_usb *rtwusb) +{ + struct rtw89_usb_rx_ctrl_block *rxcb; + int i; + + for (i = 0; i < RTW89_USB_RXCB_NUM; i++) { + rxcb = &rtwusb->rx_cb[i]; + usb_kill_urb(rxcb->rx_urb); + } +} + +static void rtw89_usb_free_rx_bufs(struct rtw89_usb *rtwusb) +{ + struct rtw89_usb_rx_ctrl_block *rxcb; + int i; + + for (i = 0; i < RTW89_USB_RXCB_NUM; i++) { + rxcb = &rtwusb->rx_cb[i]; + + usb_kill_urb(rxcb->rx_urb); + usb_free_urb(rxcb->rx_urb); + } +} + +static int rtw89_usb_alloc_rx_bufs(struct rtw89_usb *rtwusb) +{ + struct rtw89_usb_rx_ctrl_block *rxcb; + int i; + + for (i = 0; i < RTW89_USB_RXCB_NUM; i++) { + rxcb = &rtwusb->rx_cb[i]; + + rxcb->rtwdev = rtwusb->rtwdev; + rxcb->rx_urb = usb_alloc_urb(0, GFP_KERNEL); + if (!rxcb->rx_urb) { + rtw89_usb_free_rx_bufs(rtwusb); + return -ENOMEM; + } + } + + return 0; +} + +static int rtw89_usb_init_rx(struct rtw89_dev *rtwdev) +{ + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + struct sk_buff *rx_skb; + int i; + + rtwusb->rxwq = alloc_workqueue("rtw89_usb: rx wq", WQ_BH, 0); + if (!rtwusb->rxwq) { + rtw89_err(rtwdev, "failed to create RX work queue\n"); + return -ENOMEM; + } + + skb_queue_head_init(&rtwusb->rx_queue); + skb_queue_head_init(&rtwusb->rx_free_queue); + + INIT_WORK(&rtwusb->rx_work, rtw89_usb_rx_handler); + INIT_WORK(&rtwusb->rx_urb_work, rtw89_usb_rx_resubmit_work); + + for (i = 0; i < RTW89_USB_RX_SKB_NUM; i++) { + rx_skb = alloc_skb(RTW89_USB_RECVBUF_SZ, GFP_KERNEL); + if (rx_skb) + skb_queue_tail(&rtwusb->rx_free_queue, rx_skb); + } + + return 0; +} + +static void rtw89_usb_deinit_rx(struct rtw89_dev *rtwdev) +{ + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + + skb_queue_purge(&rtwusb->rx_queue); + + destroy_workqueue(rtwusb->rxwq); + + skb_queue_purge(&rtwusb->rx_free_queue); +} + +static void rtw89_usb_start_rx(struct rtw89_dev *rtwdev) +{ + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + int i; + + for (i = 0; i < RTW89_USB_RXCB_NUM; i++) + rtw89_usb_rx_resubmit(rtwusb, &rtwusb->rx_cb[i], GFP_KERNEL); +} + +static void rtw89_usb_ops_reset(struct rtw89_dev *rtwdev) +{ + /* TODO: anything to do here? */ +} + +static int rtw89_usb_ops_start(struct rtw89_dev *rtwdev) +{ + return 0; /* Nothing to do. */ +} + +static void rtw89_usb_ops_stop(struct rtw89_dev *rtwdev) +{ + /* Nothing to do. */ +} + +static void rtw89_usb_ops_pause(struct rtw89_dev *rtwdev, bool pause) +{ + /* Nothing to do? */ +} + +static void rtw89_usb_ops_switch_mode(struct rtw89_dev *rtwdev, bool low_power) +{ + /* Nothing to do. */ +} + +static int rtw89_usb_ops_deinit(struct rtw89_dev *rtwdev) +{ + return 0; /* Nothing to do. */ +} + +static int rtw89_usb_ops_mac_pre_init(struct rtw89_dev *rtwdev) +{ + u32 val32; + + rtw89_write32_set(rtwdev, R_AX_USB_HOST_REQUEST_2, B_AX_R_USBIO_MODE); + + /* fix USB IO hang suggest by chihhanli@realtek.com */ + rtw89_write32_clr(rtwdev, R_AX_USB_WLAN0_1, + B_AX_USBRX_RST | B_AX_USBTX_RST); + + val32 = rtw89_read32(rtwdev, R_AX_HCI_FUNC_EN); + val32 &= ~(B_AX_HCI_RXDMA_EN | B_AX_HCI_TXDMA_EN); + rtw89_write32(rtwdev, R_AX_HCI_FUNC_EN, val32); + + val32 |= B_AX_HCI_RXDMA_EN | B_AX_HCI_TXDMA_EN; + rtw89_write32(rtwdev, R_AX_HCI_FUNC_EN, val32); + /* fix USB TRX hang suggest by chihhanli@realtek.com */ + + return 0; +} + +static int rtw89_usb_ops_mac_pre_deinit(struct rtw89_dev *rtwdev) +{ + return 0; /* Nothing to do. */ +} + +static int rtw89_usb_ops_mac_post_init(struct rtw89_dev *rtwdev) +{ + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + enum usb_device_speed speed; + u32 ep; + + rtw89_write32_clr(rtwdev, R_AX_USB3_MAC_NPI_CONFIG_INTF_0, + B_AX_SSPHY_LFPS_FILTER); + + speed = rtwusb->udev->speed; + + if (speed == USB_SPEED_SUPER) + rtw89_write8(rtwdev, R_AX_RXDMA_SETTING, USB3_BULKSIZE); + else if (speed == USB_SPEED_HIGH) + rtw89_write8(rtwdev, R_AX_RXDMA_SETTING, USB2_BULKSIZE); + else + rtw89_write8(rtwdev, R_AX_RXDMA_SETTING, USB11_BULKSIZE); + + for (ep = 5; ep <= 12; ep++) { + if (ep == 8) + continue; + + rtw89_write8_mask(rtwdev, R_AX_USB_ENDPOINT_0, + B_AX_EP_IDX, ep); + rtw89_write8(rtwdev, R_AX_USB_ENDPOINT_2 + 1, NUMP); + } + + return 0; +} + +static void rtw89_usb_ops_recalc_int_mit(struct rtw89_dev *rtwdev) +{ + /* Nothing to do. */ +} + +static int rtw89_usb_ops_mac_lv1_rcvy(struct rtw89_dev *rtwdev, + enum rtw89_lv1_rcvy_step step) +{ + u32 reg, mask; + + switch (rtwdev->chip->chip_id) { + case RTL8851B: + case RTL8852A: + case RTL8852B: + reg = R_AX_USB_WLAN0_1; + mask = B_AX_USBRX_RST | B_AX_USBTX_RST; + break; + case RTL8852C: + reg = R_AX_USB_WLAN0_1_V1; + mask = B_AX_USBRX_RST_V1 | B_AX_USBTX_RST_V1; + break; + default: + rtw89_err(rtwdev, "%s: fix me\n", __func__); + return -EOPNOTSUPP; + } + + switch (step) { + case RTW89_LV1_RCVY_STEP_1: + rtw89_write32_set(rtwdev, reg, mask); + + msleep(30); + + break; + case RTW89_LV1_RCVY_STEP_2: + rtw89_write32_clr(rtwdev, reg, mask); + + break; + default: + return -EINVAL; + } + + return 0; +} + +static void rtw89_usb_ops_dump_err_status(struct rtw89_dev *rtwdev) +{ + rtw89_warn(rtwdev, "%s TODO\n", __func__); +} + +static const +struct rtw89_dle_mem *rtw89_usb_ops_dle_mem(struct rtw89_dev *rtwdev, + u8 qta_mode) +{ + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + + if (rtwusb->udev->speed == USB_SPEED_SUPER) + return &rtwdev->chip->dle_mem_usb3[qta_mode]; + else + return &rtwdev->chip->dle_mem_usb2[qta_mode]; +} + +static const struct rtw89_hci_ops rtw89_usb_ops = { + .tx_write = rtw89_usb_ops_tx_write, + .tx_kick_off = rtw89_usb_ops_tx_kick_off, + .flush_queues = NULL, /* Not needed? */ + .reset = rtw89_usb_ops_reset, + .start = rtw89_usb_ops_start, + .stop = rtw89_usb_ops_stop, + .pause = rtw89_usb_ops_pause, + .switch_mode = rtw89_usb_ops_switch_mode, + .recalc_int_mit = rtw89_usb_ops_recalc_int_mit, + + .read8 = rtw89_usb_ops_read8, + .read16 = rtw89_usb_ops_read16, + .read32 = rtw89_usb_ops_read32, + .write8 = rtw89_usb_ops_write8, + .write16 = rtw89_usb_ops_write16, + .write32 = rtw89_usb_ops_write32, + + .mac_pre_init = rtw89_usb_ops_mac_pre_init, + .mac_pre_deinit = rtw89_usb_ops_mac_pre_deinit, + .mac_post_init = rtw89_usb_ops_mac_post_init, + .deinit = rtw89_usb_ops_deinit, + + .check_and_reclaim_tx_resource = rtw89_usb_ops_check_and_reclaim_tx_resource, + .mac_lv1_rcvy = rtw89_usb_ops_mac_lv1_rcvy, + .dump_err_status = rtw89_usb_ops_dump_err_status, + .napi_poll = NULL, + + .recovery_start = NULL, + .recovery_complete = NULL, + + .ctrl_txdma_ch = NULL, + .ctrl_txdma_fw_ch = NULL, + .ctrl_trxhci = NULL, + .poll_txdma_ch_idle = NULL, + + .clr_idx_all = NULL, + .clear = NULL, + .disable_intr = NULL, + .enable_intr = NULL, + .rst_bdram = NULL, + + .dle_mem = rtw89_usb_ops_dle_mem, +}; + +static int rtw89_usb_parse(struct rtw89_dev *rtwdev, + struct usb_interface *intf) +{ + struct usb_host_interface *host_interface = &intf->altsetting[0]; + struct usb_interface_descriptor *intf_desc = &host_interface->desc; + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + struct usb_endpoint_descriptor *endpoint; + int num_out_pipes = 0; + u8 num; + int i; + + if (intf_desc->bNumEndpoints > RTW89_MAX_ENDPOINT_NUM) { + rtw89_err(rtwdev, "found %d endpoints, expected %d max\n", + intf_desc->bNumEndpoints, RTW89_MAX_ENDPOINT_NUM); + return -EINVAL; + } + + for (i = 0; i < intf_desc->bNumEndpoints; i++) { + endpoint = &host_interface->endpoint[i].desc; + num = usb_endpoint_num(endpoint); + + if (usb_endpoint_dir_in(endpoint) && + usb_endpoint_xfer_bulk(endpoint)) { + if (rtwusb->in_pipe) { + rtw89_err(rtwdev, + "found more than 1 bulk in endpoint\n"); + return -EINVAL; + } + + rtwusb->in_pipe = num; + } + + if (usb_endpoint_dir_out(endpoint) && + usb_endpoint_xfer_bulk(endpoint)) { + if (num_out_pipes >= RTW89_MAX_BULKOUT_NUM) { + rtw89_err(rtwdev, + "found more than %d bulk out endpoints\n", + RTW89_MAX_BULKOUT_NUM); + return -EINVAL; + } + + rtwusb->out_pipe[num_out_pipes++] = num; + } + } + + if (num_out_pipes < 1) { + rtw89_err(rtwdev, "no bulk out endpoints found\n"); + return -EINVAL; + } + + return 0; +} + +static int rtw89_usb_intf_init(struct rtw89_dev *rtwdev, + struct usb_interface *intf) +{ + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + int ret; + + ret = rtw89_usb_parse(rtwdev, intf); + if (ret) + return ret; + + rtwusb->vendor_req_buf = kmalloc(sizeof(u32), GFP_KERNEL); + if (!rtwusb->vendor_req_buf) + return -ENOMEM; + + rtwusb->udev = usb_get_dev(interface_to_usbdev(intf)); + + usb_set_intfdata(intf, rtwdev->hw); + + SET_IEEE80211_DEV(rtwdev->hw, &intf->dev); + + mutex_init(&rtwusb->vendor_req_mutex); + + return 0; +} + +static void rtw89_usb_intf_deinit(struct rtw89_dev *rtwdev, + struct usb_interface *intf) +{ + struct rtw89_usb *rtwusb = rtw89_get_usb_priv(rtwdev); + + mutex_destroy(&rtwusb->vendor_req_mutex); + usb_put_dev(rtwusb->udev); + kfree(rtwusb->vendor_req_buf); + usb_set_intfdata(intf, NULL); +} + +int rtw89_usb_probe(struct usb_interface *intf, + const struct usb_device_id *id) +{ + const struct rtw89_driver_info *info; + struct rtw89_dev *rtwdev; + struct rtw89_usb *rtwusb; + int ret; + + info = (const struct rtw89_driver_info *)id->driver_info; + + rtwdev = rtw89_alloc_ieee80211_hw(&intf->dev, + sizeof(struct rtw89_usb), + info->chip, info->variant); + if (!rtwdev) { + dev_err(&intf->dev, "failed to allocate hw\n"); + return -ENOMEM; + } + + rtwusb = rtw89_get_usb_priv(rtwdev); + rtwusb->rtwdev = rtwdev; + + rtwdev->hci.ops = &rtw89_usb_ops; + rtwdev->hci.type = RTW89_HCI_TYPE_USB; + + ret = rtw89_usb_intf_init(rtwdev, intf); + if (ret) { + rtw89_err(rtwdev, "failed to initialise intf: %d\n", ret); + goto err_free_hw; + } + + ret = rtw89_usb_alloc_rx_bufs(rtwusb); + if (ret) + goto err_intf_deinit; + + ret = rtw89_usb_init_rx(rtwdev); + if (ret) + goto err_free_rx_bufs; + + ret = rtw89_core_init(rtwdev); + if (ret) { + rtw89_err(rtwdev, "failed to initialise core: %d\n", ret); + goto err_deinit_rx; + } + + ret = rtw89_chip_info_setup(rtwdev); + if (ret) { + rtw89_err(rtwdev, "failed to setup chip information\n"); + goto err_core_deinit; + } + + ret = rtw89_core_register(rtwdev); + if (ret) { + rtw89_err(rtwdev, "failed to register core\n"); + goto err_core_deinit; + } + + rtw89_usb_start_rx(rtwdev); + + set_bit(RTW89_FLAG_PROBE_DONE, rtwdev->flags); + + return 0; + +err_core_deinit: + rtw89_core_deinit(rtwdev); +err_deinit_rx: + rtw89_usb_deinit_rx(rtwdev); +err_free_rx_bufs: + rtw89_usb_free_rx_bufs(rtwusb); +err_intf_deinit: + rtw89_usb_intf_deinit(rtwdev, intf); +err_free_hw: + rtw89_free_ieee80211_hw(rtwdev); + + return ret; +} +EXPORT_SYMBOL(rtw89_usb_probe); + +void rtw89_usb_disconnect(struct usb_interface *intf) +{ + struct ieee80211_hw *hw = usb_get_intfdata(intf); + struct rtw89_dev *rtwdev; + struct rtw89_usb *rtwusb; + + if (!hw) + return; + + rtwdev = hw->priv; + rtwusb = rtw89_get_usb_priv(rtwdev); + + rtw89_usb_cancel_rx_bufs(rtwusb); + + rtw89_core_unregister(rtwdev); + rtw89_core_deinit(rtwdev); + rtw89_usb_deinit_rx(rtwdev); + rtw89_usb_free_rx_bufs(rtwusb); + rtw89_usb_intf_deinit(rtwdev, intf); + rtw89_free_ieee80211_hw(rtwdev); +} +EXPORT_SYMBOL(rtw89_usb_disconnect); + +MODULE_AUTHOR("Bitterblue Smith "); +MODULE_DESCRIPTION("Realtek USB 802.11ax wireless driver"); +MODULE_LICENSE("Dual BSD/GPL"); diff --git a/drivers/net/wireless/realtek/rtw89/usb.h b/drivers/net/wireless/realtek/rtw89/usb.h new file mode 100644 index 000000000000..86caae1b9d0b --- /dev/null +++ b/drivers/net/wireless/realtek/rtw89/usb.h @@ -0,0 +1,61 @@ +/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ +/* Copyright(c) 2025 Realtek Corporation + */ + +#ifndef __RTW89_USB_H__ +#define __RTW89_USB_H__ + +#define RTW89_USB_VENQT 0x05 +#define RTW89_USB_VENQT_READ 0xc0 +#define RTW89_USB_VENQT_WRITE 0x40 + +#define RTW89_USB_RECVBUF_SZ 20480 +#define RTW89_USB_RXCB_NUM 8 +#define RTW89_USB_RX_SKB_NUM 16 +#define RTW89_USB_MAX_RXQ_LEN 512 + +#define RTW89_MAX_ENDPOINT_NUM 9 +#define RTW89_MAX_BULKOUT_NUM 7 + +struct rtw89_usb_rx_ctrl_block { + struct rtw89_dev *rtwdev; + struct urb *rx_urb; + struct sk_buff *rx_skb; +}; + +struct rtw89_usb_tx_ctrl_block { + struct rtw89_dev *rtwdev; + struct sk_buff_head tx_ack_queue; +}; + +struct rtw89_usb { + struct rtw89_dev *rtwdev; + struct usb_device *udev; + + /* Serialises the register accesses. */ + struct mutex vendor_req_mutex; + __le32 *vendor_req_buf; + + atomic_t continual_io_error; + + u8 in_pipe; + u8 out_pipe[RTW89_MAX_BULKOUT_NUM]; + + struct workqueue_struct *rxwq; + struct rtw89_usb_rx_ctrl_block rx_cb[RTW89_USB_RXCB_NUM]; + struct sk_buff_head rx_queue; + struct sk_buff_head rx_free_queue; + struct work_struct rx_work; + struct work_struct rx_urb_work; +}; + +static inline struct rtw89_usb *rtw89_get_usb_priv(struct rtw89_dev *rtwdev) +{ + return (struct rtw89_usb *)rtwdev->priv; +} + +int rtw89_usb_probe(struct usb_interface *intf, + const struct usb_device_id *id); +void rtw89_usb_disconnect(struct usb_interface *intf); + +#endif From patchwork Sun May 4 20:54:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 888553 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E692623A6 for ; Sun, 4 May 2025 20:54:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746392080; cv=none; b=Fv6r6eLv7SjzwyCFYS1pUw6YHsHtREDk9Njpg8H1LmY71Vr2KyFABb7mMbnrBTgyT1rPb906PBA6vQww8SgQ79lXOtHdj/n76vaZmz2G0C9YAWIKQv5MWjGt6lntugWp/hFm4pItLxKHWiOyqMYqqIA0TKIIZmnVqRj7kPkYars= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746392080; c=relaxed/simple; bh=phLBdlqMG9IQDqthl2P4yhU56D95r5yIFEVmoWeC2Dg=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=bvF5QxNh1CKuZoJEn3oBPmlYQ0a8b2yy4xV+D4hp/7NdH5eIjg4ceRKPD1wg3ACVRrpcteBCOxruoAN528CHzG7uR449Pbu54UMttSgYRoZsOQuPwivPMyQ5sOqYSTf1dTQVTvbkUY3JjgOJAw5dcIK4S5HZgQI6ssdFC1GExtY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=BpjfSh76; arc=none smtp.client-ip=209.85.218.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="BpjfSh76" Received: by mail-ej1-f43.google.com with SMTP id a640c23a62f3a-ac345bd8e13so627244166b.0 for ; Sun, 04 May 2025 13:54:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746392077; x=1746996877; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=J00bcdMjNm3bZLG805/0ATu2XuNOjwFdtGvMXrn2H2c=; b=BpjfSh76+lEfqFC0P9L/ZLcrCxFKH4voioojBjMHV9UKDDVOoLcoOPwxQa9MarTleg o+d4GGKpsh541KrWWjnMdP8fFjU/Cb8C9i28oC7vBZW/R96mTWss6u+ygTyHeztW14XR I1X1x3DtTQe1Kck9Jy+QXf8N01gX7u5R57twYomMMHksgujr5Xc/GA919rE9V8PC1Gh0 3EuPO5BpA3/cywUWZ7dZcjsuK53GQ6+SaXSa4yPWH58uuiKLYY/djZYzKvSRoi80MNCw rAgaCUczhDjpBj219mNfbbyquVqHEBPdLWgeM/zgfG+lrg3r+Xai3ELi7BmvuxhatrDM AIHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746392077; x=1746996877; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=J00bcdMjNm3bZLG805/0ATu2XuNOjwFdtGvMXrn2H2c=; b=XjZf9mJ32zdDCxexk1DCI/1ejl0GJuX1fMtCxstV3xwGTbeAUAEgRc/ryBQKjyi/EY EonFmRe5CLplSxgQJI69yaph0AsIMCtsHgT39Rxv4WddhaWFeFpGEcOl0KAty3erKU0r AgWkivOsXXw0/gi+HTblePR4S2OjGKBZxLLkPdyXcZCo73PpI5a2Fn5X+D3oU5kx6Zqs nf4kAW0ygK3zjNaiu/E25koK3PHiflHV4Ch3V9741wISmxcVgXtJ+F+xDnEPwmDae1in qiDxb3FQPhUOsr93VXWBQ+eQx1Ef3atXd0gmh4CNRgBUUMt6plDNCi5TqvdBP4g6/hrU ZEBQ== X-Gm-Message-State: AOJu0YxWwinwAEO8mwQ9qciXb+zKZQNkWUuoB8Rq8fveshEtEbJzMJ+b 2sPz32ZpuUJMNxfs9kCH07WTyDok0WB2mYx/x9vFwyyWeM1PS5/Cnq6mFQ== X-Gm-Gg: ASbGncuQJI1g1Ej7Vzy8JdHWdh2eRViUmVzqaZ3/TUukT2TMxRbQqWMjKAXwo8gxWLk aTTkw65PJYyr5mDqjHD2+k/qorCmuY2Nq0u/wVJXO9eBeQFFrt/7i9SaLhQQMY2iJ/Zgw3xo+36 rW/4yGloi4aP+eT+0c8lpm8Ag9H/TyoEUc4dvscnaoKRwIc7nbkG99161hc2gRxShahVRxHz31l pRxUrqWVgEMPa/LlqhCGBv5bxJT024lm+tPhn3qOixxRcmNVrfWpYqjrqvjpKqp8abyP6sxu5N2 G+05DuY0b+/JCI/NcM4yOhNMfXTGmiyPaHLWKwy94Vyc0M2W0g== X-Google-Smtp-Source: AGHT+IHzP8qmscYIE79Y2MWXHtPOuYHlhxcemVIEpA0vDZVc5t+m4IUXEfm0t5O4B9GBbRaoSwQtNQ== X-Received: by 2002:a17:907:1b0c:b0:ace:c3b7:de7b with SMTP id a640c23a62f3a-ad1905ed97cmr667503966b.11.1746392077036; Sun, 04 May 2025 13:54:37 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ad1891a2bd8sm375741066b.57.2025.05.04.13.54.36 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:54:36 -0700 (PDT) Message-ID: Date: Sun, 4 May 2025 23:54:36 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 12/13] wifi: rtw89: Add rtw8851bu.c From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: This is the entry point for the new rtw89_8851bu module. Signed-off-by: Bitterblue Smith --- .../net/wireless/realtek/rtw89/rtw8851bu.c | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 drivers/net/wireless/realtek/rtw89/rtw8851bu.c diff --git a/drivers/net/wireless/realtek/rtw89/rtw8851bu.c b/drivers/net/wireless/realtek/rtw89/rtw8851bu.c new file mode 100644 index 000000000000..059b9b757698 --- /dev/null +++ b/drivers/net/wireless/realtek/rtw89/rtw8851bu.c @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause +/* Copyright(c) 2025 Realtek Corporation + */ + +#include +#include +#include "rtw8851b.h" +#include "usb.h" + +static const struct rtw89_driver_info rtw89_8851bu_info = { + .chip = &rtw8851b_chip_info, + .variant = NULL, + .quirks = NULL, +}; + +static const struct usb_device_id rtw_8851bu_id_table[] = { + { USB_DEVICE_AND_INTERFACE_INFO(0x0bda, 0xb851, 0xff, 0xff, 0xff), + .driver_info = (kernel_ulong_t)&rtw89_8851bu_info }, + {}, +}; +MODULE_DEVICE_TABLE(usb, rtw_8851bu_id_table); + +static struct usb_driver rtw_8851bu_driver = { + .name = KBUILD_MODNAME, + .id_table = rtw_8851bu_id_table, + .probe = rtw89_usb_probe, + .disconnect = rtw89_usb_disconnect, +}; +module_usb_driver(rtw_8851bu_driver); + +MODULE_AUTHOR("Bitterblue Smith "); +MODULE_DESCRIPTION("Realtek 802.11ax wireless 8851BU driver"); +MODULE_LICENSE("Dual BSD/GPL"); From patchwork Sun May 4 20:55:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bitterblue Smith X-Patchwork-Id: 887381 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9432A23A6 for ; Sun, 4 May 2025 20:55:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746392122; cv=none; b=FU4fxBDeRSTDmVkxHFNs4h0jwaH+UZUnIVWXxPPClLY15FyDk8D3VGw3aY90Vte0lQgM8j03Sr2ZySSYi4nO5tYvR4gaX7w2iMgVwc0c0UONM4I8oyS90Vhx8RrCNCNf70fa7t9FluLWN7BiSk4sdOMPmvOFEnDW29EFDwzyY54= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746392122; c=relaxed/simple; bh=OOWK6zDcgSuLvUmP18w4a9/aflH66xB1iI+AJMSexes=; h=Message-ID:Date:MIME-Version:Subject:From:To:Cc:References: In-Reply-To:Content-Type; b=pt8RwlgXvW/lUgdumOqnXFoovIhkTRxmju8Su5RAq7ItJgfBtD8dqmXp0UeBLzNVZMkXUlq+JnHe3YvJZ3pyneVsltT3ArFBNWEFPVxNzq8mQ6gIOapoeiXW+5Lg2GYf0/rgUd2VfR+zUgkSohXYT+i9PqNw+q4efU6ET3gamGg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=jA14AT2f; arc=none smtp.client-ip=209.85.208.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="jA14AT2f" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-5faaddb09feso2231369a12.2 for ; Sun, 04 May 2025 13:55:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746392118; x=1746996918; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id:from:to :cc:subject:date:message-id:reply-to; bh=fIHXU4a01/GlkNrKvuOopA+lkPENn9zO0RnVH0szbsQ=; b=jA14AT2fN8yCBjWjdzAokH9tu4Ppgst9fx66iG8/ApZP2qV8VSpPQy7EGYvRvzqMdh A4dwz3Oh231SSrm8pId56mqygnfd3MWWxzEp8N7uR8q9NMibXNGFAkUtsFnQRSnSyn7D U1fPhZEZcljHfJw92wJDoeVnezlaMMgAiNVoN1VZoo27R4LDnkRa4O75zlyg9k+Wft+m BeZ8dn9JUj7S6VEAHu/gjhgVblnKFxxcIPfsOu6yhQ/HPEZgcBNJla1Qzj/mxmqzPfRc 3szD2W0JLM+MEWAMeMSMKkhlK0VgdHL72N3TB7eITDtM9+DJFknlEXdmIFoLHxjLyvK2 PD5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746392118; x=1746996918; h=content-transfer-encoding:in-reply-to:content-language:references :cc:to:from:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=fIHXU4a01/GlkNrKvuOopA+lkPENn9zO0RnVH0szbsQ=; b=gueFe/zQc7EpSKnv1ESrZczHDPJ7KymdwNfuX8wlreVxc6+E+ur7l+jwdpMr2xM3RB QfWJnLgYO07pHHMDkWGBCd2wKBG+IiOPIgOtfw7KHF6k8a8JBwKJAJpaftLfDDqNx71v zPjc3Rzd9cP/uKWxWeiQNad71a4tPgwS/HZFvrjVKVXlpyG/oqrAOT1EfGkW0lJWeakc 9EOUTf6kAOxLjaPemcNp2a3YCPiRBy/b70bXzYN72BLMl+08uzreLR/qSSfu+sBTVEAs 4VfrvqYY71Ru0zJqHBjYXNvxGx09nGNd7gJm3DJ5nREzYLvcP993aEaFYZeTdN6roctB yWfA== X-Gm-Message-State: AOJu0YztQwgWBs10RuDEllIqnxZWo07UHB+ACPwKwlt18ZHk0uWLXIlD QUyh9UjW+1+ldcrtbkZbB/F1aNeYbXUARYRgAE4nMNi1vf/XsxGk0BbsxA== X-Gm-Gg: ASbGncuHmo0f9smkjuhKtZyTztIddrLaC8sVmcCMv2yKsM4liZqwG38KPTnz6IlKiUM 2mUd/HscDAM6qXKTSr4aDv19M6GjdmbwWsdm9G7KJdxrnW4L1gehCfpoee9PPmN4RDn/2LhNf7K vO/c8VcEmtAbwcPsm7ZxWu0U0puIxQqRLW1J5JThwxdEbdBysfVTsjSc4w4M+NCSx5HwSoNJy/e k+DLHRkukdQ+yJm8aeDIYsY9j2ilgC2SMcLetZZEstUII6gyRglATXN/wsXYkbB/C1gAQOA//yD fSqEj9iSxzAOE5GrkiUsS9UO7MDcB7SQtVKBsv9uuDFwgJKCJA== X-Google-Smtp-Source: AGHT+IH+eVphb+/Qb3NGGogmbXPPR5zLrZcIKzaICiEXGEfU4KrJ4dV9+BrGbVlJfYVbERSjy7UyoA== X-Received: by 2002:a05:6402:4549:b0:5ec:cd52:27c9 with SMTP id 4fb4d7f45d1cf-5fab05e0767mr3509840a12.31.1746392117724; Sun, 04 May 2025 13:55:17 -0700 (PDT) Received: from [192.168.0.50] ([79.119.240.158]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5fa77b914b4sm4232247a12.51.2025.05.04.13.55.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 04 May 2025 13:55:17 -0700 (PDT) Message-ID: <42c89728-134d-41a8-bc7b-8d95940b202b@gmail.com> Date: Sun, 4 May 2025 23:55:15 +0300 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: [PATCH rtw-next v1 13/13] wifi: rtw89: Enable the new USB modules From: Bitterblue Smith To: "linux-wireless@vger.kernel.org" Cc: Ping-Ke Shih References: Content-Language: en-US In-Reply-To: Enable compilation of the new rtw89_usb and rtw89_8851bu modules. Signed-off-by: Bitterblue Smith --- drivers/net/wireless/realtek/rtw89/Kconfig | 14 ++++++++++++++ drivers/net/wireless/realtek/rtw89/Makefile | 6 ++++++ 2 files changed, 20 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw89/Kconfig b/drivers/net/wireless/realtek/rtw89/Kconfig index 205d7ecca7d7..bd180f3369c3 100644 --- a/drivers/net/wireless/realtek/rtw89/Kconfig +++ b/drivers/net/wireless/realtek/rtw89/Kconfig @@ -17,6 +17,9 @@ config RTW89_CORE config RTW89_PCI tristate +config RTW89_USB + tristate + config RTW89_8851B tristate @@ -49,6 +52,17 @@ config RTW89_8851BE 802.11ax PCIe wireless network (Wi-Fi 6) adapter +config RTW89_8851BU + tristate "Realtek 8851BU USB wireless network (Wi-Fi 6) adapter" + depends on USB + select RTW89_CORE + select RTW89_USB + select RTW89_8851B + help + Select this option will enable support for 8851BU chipset + + 802.11ax USB wireless network (Wi-Fi 6) adapter + config RTW89_8852AE tristate "Realtek 8852AE 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 c751013e811e..891e2d55c335 100644 --- a/drivers/net/wireless/realtek/rtw89/Makefile +++ b/drivers/net/wireless/realtek/rtw89/Makefile @@ -31,6 +31,9 @@ rtw89_8851b-objs := rtw8851b.o \ obj-$(CONFIG_RTW89_8851BE) += rtw89_8851be.o rtw89_8851be-objs := rtw8851be.o +obj-$(CONFIG_RTW89_8851BU) += rtw89_8851bu.o +rtw89_8851bu-objs := rtw8851bu.o + obj-$(CONFIG_RTW89_8852A) += rtw89_8852a.o rtw89_8852a-objs := rtw8852a.o \ rtw8852a_table.o \ @@ -81,3 +84,6 @@ rtw89_core-$(CONFIG_RTW89_DEBUG) += debug.o obj-$(CONFIG_RTW89_PCI) += rtw89_pci.o rtw89_pci-y := pci.o pci_be.o +obj-$(CONFIG_RTW89_USB) += rtw89_usb.o +rtw89_usb-y := usb.o +