diff mbox series

[11/11] ath11k: add qcn9074 pci device support

Message ID 1612946530-28504-12-git-send-email-akolli@codeaurora.org (mailing list archive)
State Accepted
Commit 4e80946197a83a6115e308334618449b77696d6a
Delegated to: Kalle Valo
Headers show
Series ath11k: Add support for QCN9074 | expand

Commit Message

Anilkumar Kolli Feb. 10, 2021, 8:42 a.m. UTC
QCN9074 is PCI based 11ax radio.
	- has 2G/5G/6G variants.
	- has NSS 2x2 and 4x4 variants.

QCN9074 uses 45MB of HOST DDR memory, target requests host memory in
segments, each segment is of 2MB size and is physcial contiguous and
use static window configuration.

Below QMI issues are seen with QCN9074,
Issue 1:
 ath11k_pci 0000:06:00.0: qmi failed memory request, err = -110
 ath11k_pci 0000:06:00.0: qmi failed to respond fw mem req:-110
Issue 2:
 ath11k_pci 0000:06:00.0: firmware crashed: MHI_CB_SYS_ERROR
 ath11k_pci 0000:06:00.0: qmi failed set mode request, mode: 0, err = -110
 ath11k_pci 0000:06:00.0: qmi failed to send wlan fw mode:-110

Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.4.0.1.r2-00012-QCAHKSWPL_SILICONZ-1

Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
---
 drivers/net/wireless/ath/ath11k/pci.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

Comments

Kalle Valo Feb. 16, 2021, 4:36 p.m. UTC | #1
Anilkumar Kolli <akolli@codeaurora.org> writes:

> QCN9074 is PCI based 11ax radio.
> 	- has 2G/5G/6G variants.
> 	- has NSS 2x2 and 4x4 variants.
>
> QCN9074 uses 45MB of HOST DDR memory, target requests host memory in
> segments, each segment is of 2MB size and is physcial contiguous and
> use static window configuration.
>
> Below QMI issues are seen with QCN9074,
> Issue 1:
>  ath11k_pci 0000:06:00.0: qmi failed memory request, err = -110
>  ath11k_pci 0000:06:00.0: qmi failed to respond fw mem req:-110
> Issue 2:
>  ath11k_pci 0000:06:00.0: firmware crashed: MHI_CB_SYS_ERROR
>  ath11k_pci 0000:06:00.0: qmi failed set mode request, mode: 0, err = -110
>  ath11k_pci 0000:06:00.0: qmi failed to send wlan fw mode:-110

I clarified the commit log to mention that QCN9074 is not fully working
yet.

> Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.4.0.1.r2-00012-QCAHKSWPL_SILICONZ-1
>
> Signed-off-by: Anilkumar Kolli <akolli@codeaurora.org>
> ---
>  drivers/net/wireless/ath/ath11k/pci.c | 20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath11k/pci.c b/drivers/net/wireless/ath/ath11k/pci.c
> index 70dcb80475b1..259a39e59a91 100644
> --- a/drivers/net/wireless/ath/ath11k/pci.c
> +++ b/drivers/net/wireless/ath/ath11k/pci.c
> @@ -34,10 +34,12 @@
>   */
>  #define ACCESS_ALWAYS_OFF 0xFE0
>  
> -#define QCA6390_DEVICE_ID		0x1101
> +#define QCA6390_DEVICE_ID              0x1101

Here you convert tabs to spaces, I fixed them back.

> +#define QCN9074_DEVICE_ID              0x1104

And modified this to use tabs as well.

>  static const struct pci_device_id ath11k_pci_id_table[] = {
>  	{ PCI_VDEVICE(QCOM, QCA6390_DEVICE_ID) },
> +	{ PCI_VDEVICE(QCOM, QCN9074_DEVICE_ID) },

I removed this and added a comment instead. Let's add the pci id once
the device is fully working.
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/pci.c b/drivers/net/wireless/ath/ath11k/pci.c
index 70dcb80475b1..259a39e59a91 100644
--- a/drivers/net/wireless/ath/ath11k/pci.c
+++ b/drivers/net/wireless/ath/ath11k/pci.c
@@ -34,10 +34,12 @@ 
  */
 #define ACCESS_ALWAYS_OFF 0xFE0
 
-#define QCA6390_DEVICE_ID		0x1101
+#define QCA6390_DEVICE_ID              0x1101
+#define QCN9074_DEVICE_ID              0x1104
 
 static const struct pci_device_id ath11k_pci_id_table[] = {
 	{ PCI_VDEVICE(QCOM, QCA6390_DEVICE_ID) },
+	{ PCI_VDEVICE(QCOM, QCN9074_DEVICE_ID) },
 	{0}
 };
 
@@ -61,6 +63,15 @@  static const struct ath11k_msi_config ath11k_msi_config[] = {
 			{ .name = "DP", .num_vectors = 18, .base_vector = 14 },
 		},
 	},
+	{
+		.total_vectors = 16,
+		.total_users = 3,
+		.users = (struct ath11k_msi_user[]) {
+			{ .name = "MHI", .num_vectors = 3, .base_vector = 0 },
+			{ .name = "CE", .num_vectors = 5, .base_vector = 3 },
+			{ .name = "DP", .num_vectors = 8, .base_vector = 8 },
+		},
+	},
 };
 
 static const char *irq_name[ATH11K_IRQ_NUM_MAX] = {
@@ -1219,6 +1230,12 @@  static int ath11k_pci_probe(struct pci_dev *pdev,
 			ret = -EOPNOTSUPP;
 			goto err_pci_free_region;
 		}
+		ab_pci->msi_config = &ath11k_msi_config[0];
+		break;
+	case QCN9074_DEVICE_ID:
+		ab_pci->msi_config = &ath11k_msi_config[1];
+		ab->bus_params.static_window_map = true;
+		ab->hw_rev = ATH11K_HW_QCN9074_HW10;
 		break;
 	default:
 		dev_err(&pdev->dev, "Unknown PCI device found: 0x%x\n",
@@ -1227,7 +1244,6 @@  static int ath11k_pci_probe(struct pci_dev *pdev,
 		goto err_pci_free_region;
 	}
 
-	ab_pci->msi_config = &ath11k_msi_config[0];
 	ret = ath11k_pci_enable_msi(ab_pci);
 	if (ret) {
 		ath11k_err(ab, "failed to enable msi: %d\n", ret);