diff mbox series

[v2,2/2] wifi: ath11k: add support for QCA2066

Message ID 20240109021336.4143-3-quic_bqiang@quicinc.com (mailing list archive)
State Accepted
Commit 5dc9d1a55e953d9059ecbdd8fe6ec81e9edd349e
Delegated to: Kalle Valo
Headers show
Series wifi: ath11k: add support for QCA2066 | expand

Commit Message

Baochen Qiang Jan. 9, 2024, 2:13 a.m. UTC
QCA2066 is a PCI based DBS device. It is very similar to WCN6855
overall: they share the same PCI device ID, the same major and
minor version numbers, the same register address, and same HAL
descriptors etc. The most significant difference is that QCA2066
supports 3-antenna configuration while WCN6855 does not. To differentiate
them, subversion numbers are used. Currently four numbers are used
by QCA2066: 0x1019A0E1, 0x1019B0E1, 0x1019C0E1 and 0x1019D0E1.

Tested-on: QCA2066 hw2.1 PCI WLAN.HSP.1.1-03737-QCAHSPSWPL_V2_SILICONZ_CE-1
Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3

Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
---
v2:
 - Rebased on ToT.

 drivers/net/wireless/ath/ath11k/core.c | 86 ++++++++++++++++++++++++++
 drivers/net/wireless/ath/ath11k/core.h |  1 +
 drivers/net/wireless/ath/ath11k/mhi.c  |  1 +
 drivers/net/wireless/ath/ath11k/pci.c  | 17 ++++-
 drivers/net/wireless/ath/ath11k/pcic.c | 11 ++++
 5 files changed, 115 insertions(+), 1 deletion(-)

Comments

Jeff Johnson Jan. 9, 2024, 5:41 p.m. UTC | #1
On 1/8/2024 6:13 PM, Baochen Qiang wrote:
> QCA2066 is a PCI based DBS device. It is very similar to WCN6855
> overall: they share the same PCI device ID, the same major and
> minor version numbers, the same register address, and same HAL
> descriptors etc. The most significant difference is that QCA2066
> supports 3-antenna configuration while WCN6855 does not. To differentiate
> them, subversion numbers are used. Currently four numbers are used
> by QCA2066: 0x1019A0E1, 0x1019B0E1, 0x1019C0E1 and 0x1019D0E1.
> 
> Tested-on: QCA2066 hw2.1 PCI WLAN.HSP.1.1-03737-QCAHSPSWPL_V2_SILICONZ_CE-1
> Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
> 
> Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
> ---
> v2:
>  - Rebased on ToT.

hmmm, fails to apply using b4 shazam

Checking attestation on all messages, may take a moment...
---
  ✓ [PATCH v2 1/2] wifi: ath11k: move pci.ops registration ahead
  ✓ [PATCH v2 2/2] wifi: ath11k: add support for QCA2066
  ---
  ✓ Signed: DKIM/quicinc.com
---
Total patches: 2
---
 Base: using specified base-commit 2cd4e3f91f264926a6b11df948417b74d52ca9b9
Applying: wifi: ath11k: move pci.ops registration ahead
Applying: wifi: ath11k: add support for QCA2066
Patch failed at 0002 wifi: ath11k: add support for QCA2066
error: patch failed: drivers/net/wireless/ath/ath11k/core.c:711
error: drivers/net/wireless/ath/ath11k/core.c: patch does not apply

And sure enough the code at drivers/net/wireless/ath/ath11k/core.c:711
doesn't match the code in the 2nd patch so something is amiss here.

note your patch has reference to .support_dual_stations that is not
present in ath11k -- perhaps there are other prerequisites?
<https://patchwork.kernel.org/project/linux-wireless/patch/20230714023801.2621802-2-quic_cjhuang@quicinc.com/>

/jeff
Baochen Qiang Jan. 10, 2024, 2:16 a.m. UTC | #2
On 1/10/2024 1:41 AM, Jeff Johnson wrote:
> On 1/8/2024 6:13 PM, Baochen Qiang wrote:
>> QCA2066 is a PCI based DBS device. It is very similar to WCN6855
>> overall: they share the same PCI device ID, the same major and
>> minor version numbers, the same register address, and same HAL
>> descriptors etc. The most significant difference is that QCA2066
>> supports 3-antenna configuration while WCN6855 does not. To differentiate
>> them, subversion numbers are used. Currently four numbers are used
>> by QCA2066: 0x1019A0E1, 0x1019B0E1, 0x1019C0E1 and 0x1019D0E1.
>>
>> Tested-on: QCA2066 hw2.1 PCI WLAN.HSP.1.1-03737-QCAHSPSWPL_V2_SILICONZ_CE-1
>> Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
>>
>> Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
>> ---
>> v2:
>>   - Rebased on ToT.
> 
> hmmm, fails to apply using b4 shazam
> 
> Checking attestation on all messages, may take a moment...
> ---
>    ✓ [PATCH v2 1/2] wifi: ath11k: move pci.ops registration ahead
>    ✓ [PATCH v2 2/2] wifi: ath11k: add support for QCA2066
>    ---
>    ✓ Signed: DKIM/quicinc.com
> ---
> Total patches: 2
> ---
>   Base: using specified base-commit 2cd4e3f91f264926a6b11df948417b74d52ca9b9
> Applying: wifi: ath11k: move pci.ops registration ahead
> Applying: wifi: ath11k: add support for QCA2066
> Patch failed at 0002 wifi: ath11k: add support for QCA2066
> error: patch failed: drivers/net/wireless/ath/ath11k/core.c:711
> error: drivers/net/wireless/ath/ath11k/core.c: patch does not apply
> 
> And sure enough the code at drivers/net/wireless/ath/ath11k/core.c:711
> doesn't match the code in the 2nd patch so something is amiss here.
> 
> note your patch has reference to .support_dual_stations that is not
> present in ath11k -- perhaps there are other prerequisites?
> <https://patchwork.kernel.org/project/linux-wireless/patch/20230714023801.2621802-2-quic_cjhuang@quicinc.com/>
Yes, as said in the cover letter, this patch set depends on the above patch.

> 
> /jeff
Jeff Johnson Jan. 10, 2024, 4:20 p.m. UTC | #3
On 1/9/2024 6:16 PM, Baochen Qiang wrote:
> On 1/10/2024 1:41 AM, Jeff Johnson wrote:
>> On 1/8/2024 6:13 PM, Baochen Qiang wrote:
>>> QCA2066 is a PCI based DBS device. It is very similar to WCN6855
>>> overall: they share the same PCI device ID, the same major and
>>> minor version numbers, the same register address, and same HAL
>>> descriptors etc. The most significant difference is that QCA2066
>>> supports 3-antenna configuration while WCN6855 does not. To differentiate
>>> them, subversion numbers are used. Currently four numbers are used
>>> by QCA2066: 0x1019A0E1, 0x1019B0E1, 0x1019C0E1 and 0x1019D0E1.
>>>
>>> Tested-on: QCA2066 hw2.1 PCI WLAN.HSP.1.1-03737-QCAHSPSWPL_V2_SILICONZ_CE-1
>>> Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
>>>
>>> Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
>>> ---
>>> v2:
>>>   - Rebased on ToT.
>>
>> hmmm, fails to apply using b4 shazam
>>
>> Checking attestation on all messages, may take a moment...
>> ---
>>    ✓ [PATCH v2 1/2] wifi: ath11k: move pci.ops registration ahead
>>    ✓ [PATCH v2 2/2] wifi: ath11k: add support for QCA2066
>>    ---
>>    ✓ Signed: DKIM/quicinc.com
>> ---
>> Total patches: 2
>> ---
>>   Base: using specified base-commit 2cd4e3f91f264926a6b11df948417b74d52ca9b9
>> Applying: wifi: ath11k: move pci.ops registration ahead
>> Applying: wifi: ath11k: add support for QCA2066
>> Patch failed at 0002 wifi: ath11k: add support for QCA2066
>> error: patch failed: drivers/net/wireless/ath/ath11k/core.c:711
>> error: drivers/net/wireless/ath/ath11k/core.c: patch does not apply
>>
>> And sure enough the code at drivers/net/wireless/ath/ath11k/core.c:711
>> doesn't match the code in the 2nd patch so something is amiss here.
>>
>> note your patch has reference to .support_dual_stations that is not
>> present in ath11k -- perhaps there are other prerequisites?
>> <https://patchwork.kernel.org/project/linux-wireless/patch/20230714023801.2621802-2-quic_cjhuang@quicinc.com/>
> Yes, as said in the cover letter, this patch set depends on the above patch.

Unfortunately automated tasks don't parse cover letters. But it looks
like b4 doesn't handle or warn about:
prerequisite-patch-id: 640366721125b1adea0eeabd5cdfca5e91476e7c

And not quite sure how it would handle that.

Kalle, that prerequisite series is set to Deferred and predates my
transition to the ath11k maintainer role. What action is needed from the
developers?
<https://patchwork.kernel.org/project/linux-wireless/list/?series=765506&state=*>

/jeff
Kalle Valo Jan. 11, 2024, 5:04 p.m. UTC | #4
Jeff Johnson <quic_jjohnson@quicinc.com> writes:

> On 1/9/2024 6:16 PM, Baochen Qiang wrote:
>
>> On 1/10/2024 1:41 AM, Jeff Johnson wrote:
>>> On 1/8/2024 6:13 PM, Baochen Qiang wrote:
>>>> QCA2066 is a PCI based DBS device. It is very similar to WCN6855
>>>> overall: they share the same PCI device ID, the same major and
>>>> minor version numbers, the same register address, and same HAL
>>>> descriptors etc. The most significant difference is that QCA2066
>>>> supports 3-antenna configuration while WCN6855 does not. To differentiate
>>>> them, subversion numbers are used. Currently four numbers are used
>>>> by QCA2066: 0x1019A0E1, 0x1019B0E1, 0x1019C0E1 and 0x1019D0E1.
>>>>
>>>> Tested-on: QCA2066 hw2.1 PCI WLAN.HSP.1.1-03737-QCAHSPSWPL_V2_SILICONZ_CE-1
>>>> Tested-on: WCN6855 hw2.1 PCI WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3
>>>>
>>>> Signed-off-by: Baochen Qiang <quic_bqiang@quicinc.com>
>>>> ---
>>>> v2:
>>>>   - Rebased on ToT.
>>>
>>> hmmm, fails to apply using b4 shazam
>>>
>>> Checking attestation on all messages, may take a moment...
>>> ---
>>>    ✓ [PATCH v2 1/2] wifi: ath11k: move pci.ops registration ahead
>>>    ✓ [PATCH v2 2/2] wifi: ath11k: add support for QCA2066
>>>    ---
>>>    ✓ Signed: DKIM/quicinc.com
>>> ---
>>> Total patches: 2
>>> ---
>>>   Base: using specified base-commit 2cd4e3f91f264926a6b11df948417b74d52ca9b9
>>> Applying: wifi: ath11k: move pci.ops registration ahead
>>> Applying: wifi: ath11k: add support for QCA2066
>>> Patch failed at 0002 wifi: ath11k: add support for QCA2066
>>> error: patch failed: drivers/net/wireless/ath/ath11k/core.c:711
>>> error: drivers/net/wireless/ath/ath11k/core.c: patch does not apply
>>>
>>> And sure enough the code at drivers/net/wireless/ath/ath11k/core.c:711
>>> doesn't match the code in the 2nd patch so something is amiss here.
>>>
>>> note your patch has reference to .support_dual_stations that is not
>>> present in ath11k -- perhaps there are other prerequisites?
>>> <https://patchwork.kernel.org/project/linux-wireless/patch/20230714023801.2621802-2-quic_cjhuang@quicinc.com/>
>> Yes, as said in the cover letter, this patch set depends on the above patch.
>
> Unfortunately automated tasks don't parse cover letters. But it looks
> like b4 doesn't handle or warn about:
> prerequisite-patch-id: 640366721125b1adea0eeabd5cdfca5e91476e7c
>
> And not quite sure how it would handle that.
>
> Kalle, that prerequisite series is set to Deferred and predates my
> transition to the ath11k maintainer role. What action is needed from the
> developers?
> <https://patchwork.kernel.org/project/linux-wireless/list/?series=765506&state=*>

My plan was to run some tests on that patch before applying it, that's
why it's deferred for now. I'll try to do that soon.
Konstantin Ryabitsev Jan. 12, 2024, 2:38 p.m. UTC | #5
On Wed, Jan 10, 2024 at 08:20:46AM -0800, Jeff Johnson wrote:
> Unfortunately automated tasks don't parse cover letters. But it looks
> like b4 doesn't handle or warn about:
> prerequisite-patch-id: 640366721125b1adea0eeabd5cdfca5e91476e7c
> 
> And not quite sure how it would handle that.

B4 should be able to handle dependencies like that in the future. For example,
we can already locate this patch using:

https://lore.kernel.org/all/?q=patchid%3A640366721125b1adea0eeabd5cdfca5e91476e7c

Support for dependencies is slated to land in the next few months.

-K
Kalle Valo Jan. 12, 2024, 3:46 p.m. UTC | #6
Konstantin Ryabitsev <konstantin@linuxfoundation.org> writes:

> On Wed, Jan 10, 2024 at 08:20:46AM -0800, Jeff Johnson wrote:
>> Unfortunately automated tasks don't parse cover letters. But it looks
>> like b4 doesn't handle or warn about:
>> prerequisite-patch-id: 640366721125b1adea0eeabd5cdfca5e91476e7c
>> 
>> And not quite sure how it would handle that.
>
> B4 should be able to handle dependencies like that in the future. For example,
> we can already locate this patch using:
>
> https://lore.kernel.org/all/?q=patchid%3A640366721125b1adea0eeabd5cdfca5e91476e7c

Oh, that is a very useful feature. Thank you.
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index 3c1ba8fd28f4..922e67f8e04f 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -711,6 +711,92 @@  static const struct ath11k_hw_params ath11k_hw_params[] = {
 		.support_fw_mac_sequence = false,
 		.support_dual_stations = false,
 	},
+	{
+		.name = "qca2066 hw2.1",
+		.hw_rev = ATH11K_HW_QCA2066_HW21,
+		.fw = {
+			.dir = "QCA2066/hw2.1",
+			.board_size = 256 * 1024,
+			.cal_offset = 128 * 1024,
+		},
+		.max_radios = 3,
+		.bdf_addr = 0x4B0C0000,
+		.hw_ops = &wcn6855_ops,
+		.ring_mask = &ath11k_hw_ring_mask_qca6390,
+		.internal_sleep_clock = true,
+		.regs = &wcn6855_regs,
+		.qmi_service_ins_id = ATH11K_QMI_WLFW_SERVICE_INS_ID_V01_QCA6390,
+		.host_ce_config = ath11k_host_ce_config_qca6390,
+		.ce_count = 9,
+		.target_ce_config = ath11k_target_ce_config_wlan_qca6390,
+		.target_ce_count = 9,
+		.svc_to_ce_map = ath11k_target_service_to_ce_map_wlan_qca6390,
+		.svc_to_ce_map_len = 14,
+		.ce_ie_addr = &ath11k_ce_ie_addr_ipq8074,
+		.single_pdev_only = true,
+		.rxdma1_enable = false,
+		.num_rxmda_per_pdev = 2,
+		.rx_mac_buf_ring = true,
+		.vdev_start_delay = true,
+		.htt_peer_map_v2 = false,
+
+		.spectral = {
+			.fft_sz = 0,
+			.fft_pad_sz = 0,
+			.summary_pad_sz = 0,
+			.fft_hdr_len = 0,
+			.max_fft_bins = 0,
+			.fragment_160mhz = false,
+		},
+
+		.interface_modes = BIT(NL80211_IFTYPE_STATION) |
+					BIT(NL80211_IFTYPE_AP),
+		.supports_monitor = false,
+		.full_monitor_mode = false,
+		.supports_shadow_regs = true,
+		.idle_ps = true,
+		.supports_sta_ps = true,
+		.coldboot_cal_mm = false,
+		.coldboot_cal_ftm = false,
+		.cbcal_restart_fw = false,
+		.fw_mem_mode = 0,
+		.num_vdevs = 2 + 1,
+		.num_peers = 512,
+		.supports_suspend = true,
+		.hal_desc_sz = sizeof(struct hal_rx_desc_wcn6855),
+		.supports_regdb = true,
+		.fix_l1ss = false,
+		.credit_flow = true,
+		.max_tx_ring = DP_TCL_NUM_RING_MAX_QCA6390,
+		.hal_params = &ath11k_hw_hal_params_qca6390,
+		.supports_dynamic_smps_6ghz = false,
+		.alloc_cacheable_memory = false,
+		.supports_rssi_stats = true,
+		.fw_wmi_diag_event = true,
+		.current_cc_support = true,
+		.dbr_debug_support = false,
+		.global_reset = true,
+		.bios_sar_capa = &ath11k_hw_sar_capa_wcn6855,
+		.m3_fw_support = true,
+		.fixed_bdf_addr = false,
+		.fixed_mem_region = false,
+		.static_window_map = false,
+		.hybrid_bus_type = false,
+		.fixed_fw_mem = false,
+		.support_off_channel_tx = true,
+		.supports_multi_bssid = true,
+
+		.sram_dump = {
+			.start = 0x01400000,
+			.end = 0x0177ffff,
+		},
+
+		.tcl_ring_retry = true,
+		.tx_ring_size = DP_TCL_DATA_RING_SIZE,
+		.smp2p_wow_exit = false,
+		.support_fw_mac_sequence = true,
+		.support_dual_stations = true,
+	},
 };
 
 static inline struct ath11k_pdev *ath11k_core_get_single_pdev(struct ath11k_base *ab)
diff --git a/drivers/net/wireless/ath/ath11k/core.h b/drivers/net/wireless/ath/ath11k/core.h
index 7e3b6779f4e9..38c66cc73092 100644
--- a/drivers/net/wireless/ath/ath11k/core.h
+++ b/drivers/net/wireless/ath/ath11k/core.h
@@ -147,6 +147,7 @@  enum ath11k_hw_rev {
 	ATH11K_HW_WCN6855_HW21,
 	ATH11K_HW_WCN6750_HW10,
 	ATH11K_HW_IPQ5018_HW10,
+	ATH11K_HW_QCA2066_HW21,
 };
 
 enum ath11k_firmware_mode {
diff --git a/drivers/net/wireless/ath/ath11k/mhi.c b/drivers/net/wireless/ath/ath11k/mhi.c
index 6835c14b82cc..1f0eb5cba8d4 100644
--- a/drivers/net/wireless/ath/ath11k/mhi.c
+++ b/drivers/net/wireless/ath/ath11k/mhi.c
@@ -443,6 +443,7 @@  int ath11k_mhi_register(struct ath11k_pci *ab_pci)
 	case ATH11K_HW_QCA6390_HW20:
 	case ATH11K_HW_WCN6855_HW20:
 	case ATH11K_HW_WCN6855_HW21:
+	case ATH11K_HW_QCA2066_HW21:
 		ath11k_mhi_config = &ath11k_mhi_config_qca6390;
 		break;
 	default:
diff --git a/drivers/net/wireless/ath/ath11k/pci.c b/drivers/net/wireless/ath/ath11k/pci.c
index 1159c00f9411..13b53f2979df 100644
--- a/drivers/net/wireless/ath/ath11k/pci.c
+++ b/drivers/net/wireless/ath/ath11k/pci.c
@@ -28,6 +28,8 @@ 
 #define QCN9074_DEVICE_ID		0x1104
 #define WCN6855_DEVICE_ID		0x1103
 
+#define TCSR_SOC_HW_SUB_VER	0x1910010
+
 static const struct pci_device_id ath11k_pci_id_table[] = {
 	{ PCI_VDEVICE(QCOM, QCA6390_DEVICE_ID) },
 	{ PCI_VDEVICE(QCOM, WCN6855_DEVICE_ID) },
@@ -732,6 +734,7 @@  static int ath11k_pci_probe(struct pci_dev *pdev,
 	struct ath11k_pci *ab_pci;
 	u32 soc_hw_version_major, soc_hw_version_minor, addr;
 	int ret;
+	u32 sub_version;
 
 	ab = ath11k_core_alloc(&pdev->dev, sizeof(*ab_pci), ATH11K_BUS_PCI);
 
@@ -822,7 +825,19 @@  static int ath11k_pci_probe(struct pci_dev *pdev,
 				break;
 			case 0x10:
 			case 0x11:
-				ab->hw_rev = ATH11K_HW_WCN6855_HW21;
+				sub_version = ath11k_pcic_read32(ab, TCSR_SOC_HW_SUB_VER);
+				ath11k_dbg(ab, ATH11K_DBG_PCI, "sub_version 0x%x\n",
+					   sub_version);
+				switch (sub_version) {
+				case 0x1019A0E1:
+				case 0x1019B0E1:
+				case 0x1019C0E1:
+				case 0x1019D0E1:
+					ab->hw_rev = ATH11K_HW_QCA2066_HW21;
+					break;
+				default:
+					ab->hw_rev = ATH11K_HW_WCN6855_HW21;
+				}
 				break;
 			default:
 				goto unsupported_wcn6855_soc;
diff --git a/drivers/net/wireless/ath/ath11k/pcic.c b/drivers/net/wireless/ath/ath11k/pcic.c
index 15e2ceb22a44..add4db4c50bc 100644
--- a/drivers/net/wireless/ath/ath11k/pcic.c
+++ b/drivers/net/wireless/ath/ath11k/pcic.c
@@ -115,6 +115,17 @@  static const struct ath11k_msi_config ath11k_msi_config[] = {
 		},
 		.hw_rev = ATH11K_HW_WCN6750_HW10,
 	},
+	{
+		.total_vectors = 32,
+		.total_users = 4,
+		.users = (struct ath11k_msi_user[]) {
+			{ .name = "MHI", .num_vectors = 3, .base_vector = 0 },
+			{ .name = "CE", .num_vectors = 10, .base_vector = 3 },
+			{ .name = "WAKE", .num_vectors = 1, .base_vector = 13 },
+			{ .name = "DP", .num_vectors = 18, .base_vector = 14 },
+		},
+		.hw_rev = ATH11K_HW_QCA2066_HW21,
+	},
 };
 
 int ath11k_pcic_init_msi_config(struct ath11k_base *ab)