From: George Moussalem QCN6122 is a 2x2 11AX PCIe based chipset, but it is attached to the WPSS (Wireless Processor SubSystem) Q6 processor, hence it is enumerated by the Q6 processor. It is registered to the APSS processor as a platform device (AHB). Q6 firmware segments for QCN6122 are contained within the multi-PD version of the shared firmware package for IPQ5018. Each (up to 2) QCN6122 radio present runs in its own user PD which the ath11k driver manages to power it up or down. Also, device information like BAR and its size is not known to the APSS processor as the chip is enumerated by WPSS Q6. These details are fetched over QMI. The QCN6122 chip supports STA, AP, and MESH modes. Tested on: Linksys MX2000 and GLiNET B3000 wireless access points for prolonged duration tests spanning multiple days with multiple clients connected with firmware WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1 Signed-off-by: George Moussalem --- drivers/net/wireless/ath/ath11k/ahb.c | 7 +++++++ drivers/net/wireless/ath/ath11k/pcic.c | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/drivers/net/wireless/ath/ath11k/ahb.c b/drivers/net/wireless/ath/ath11k/ahb.c index 26110c927577..51908e779b7c 100644 --- a/drivers/net/wireless/ath/ath11k/ahb.c +++ b/drivers/net/wireless/ath/ath11k/ahb.c @@ -46,6 +46,9 @@ static const struct of_device_id ath11k_ahb_of_match[] = { { .compatible = "qcom,ipq5018-wifi", .data = (void *)ATH11K_HW_IPQ5018_HW10, }, + { .compatible = "qcom,qcn6122-wifi", + .data = (void *)ATH11K_HW_QCN6122_HW10, + }, { } }; @@ -1395,6 +1398,10 @@ static int ath11k_ahb_setup_msi_resources(struct ath11k_base *ab) ab->pci.msi.addr_hi = upper_32_bits(msi_addr_iova); ret = of_property_read_u32_index(ab->dev->of_node, "interrupts", 1, &int_prop); + if (ret == -EINVAL) + ret = of_property_read_u32_index(ab->dev->of_node, + "interrupts-extended", 2, + &int_prop); if (ret) return ret; diff --git a/drivers/net/wireless/ath/ath11k/pcic.c b/drivers/net/wireless/ath/ath11k/pcic.c index 2259adc3bbdc..cdcf3df26438 100644 --- a/drivers/net/wireless/ath/ath11k/pcic.c +++ b/drivers/net/wireless/ath/ath11k/pcic.c @@ -138,6 +138,15 @@ static const struct ath11k_msi_config ath11k_msi_config[] = { }, .hw_rev = ATH11K_HW_QCA6698AQ_HW21, }, + { + .total_vectors = 13, + .total_users = 2, + .users = (struct ath11k_msi_user[]) { + { .name = "CE", .num_vectors = 5, .base_vector = 0 }, + { .name = "DP", .num_vectors = 8, .base_vector = 5 }, + }, + .hw_rev = ATH11K_HW_QCN6122_HW10, + }, }; int ath11k_pcic_init_msi_config(struct ath11k_base *ab) -- 2.53.0