]> git.baikalelectronics.ru Git - kernel.git/commitdiff
ath11k: Refactor ath11k_msi_config
authorAnilkumar Kolli <akolli@codeaurora.org>
Tue, 16 Feb 2021 07:15:35 +0000 (09:15 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 17 Feb 2021 09:32:06 +0000 (11:32 +0200)
Move ath11k_msi_config to array of structures to add multiple
pci devices support. No functional changes.

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>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/1612946530-28504-2-git-send-email-akolli@codeaurora.org
drivers/net/wireless/ath/ath11k/pci.c
drivers/net/wireless/ath/ath11k/pci.h

index d14416816acc435534b3f5a623a8754b9aa708df..046eac75eab80d141a58ee02b6c60f77bc8c1cc6 100644 (file)
@@ -50,14 +50,16 @@ static const struct ath11k_bus_params ath11k_pci_bus_params = {
        .fixed_mem_region = false,
 };
 
-static const struct ath11k_msi_config msi_config = {
-       .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 },
+static const struct ath11k_msi_config ath11k_msi_config[] = {
+       {
+               .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 },
+               },
        },
 };
 
@@ -406,14 +408,15 @@ int ath11k_pci_get_user_msi_assignment(struct ath11k_pci *ab_pci, char *user_nam
                                       u32 *base_vector)
 {
        struct ath11k_base *ab = ab_pci->ab;
+       const struct ath11k_msi_config *msi_config = ab_pci->msi_config;
        int idx;
 
-       for (idx = 0; idx < msi_config.total_users; idx++) {
-               if (strcmp(user_name, msi_config.users[idx].name) == 0) {
-                       *num_vectors = msi_config.users[idx].num_vectors;
-                       *user_base_data = msi_config.users[idx].base_vector
+       for (idx = 0; idx < msi_config->total_users; idx++) {
+               if (strcmp(user_name, msi_config->users[idx].name) == 0) {
+                       *num_vectors = msi_config->users[idx].num_vectors;
+                       *user_base_data = msi_config->users[idx].base_vector
                                + ab_pci->msi_ep_base_data;
-                       *base_vector = msi_config.users[idx].base_vector;
+                       *base_vector = msi_config->users[idx].base_vector;
 
                        ath11k_dbg(ab, ATH11K_DBG_PCI, "Assign MSI to user: %s, num_vectors: %d, user_base_data: %u, base_vector: %u\n",
                                   user_name, *num_vectors, *user_base_data,
@@ -760,17 +763,18 @@ static void ath11k_pci_ce_irqs_enable(struct ath11k_base *ab)
 static int ath11k_pci_enable_msi(struct ath11k_pci *ab_pci)
 {
        struct ath11k_base *ab = ab_pci->ab;
+       const struct ath11k_msi_config *msi_config = ab_pci->msi_config;
        struct msi_desc *msi_desc;
        int num_vectors;
        int ret;
 
        num_vectors = pci_alloc_irq_vectors(ab_pci->pdev,
-                                           msi_config.total_vectors,
-                                           msi_config.total_vectors,
+                                           msi_config->total_vectors,
+                                           msi_config->total_vectors,
                                            PCI_IRQ_MSI);
-       if (num_vectors != msi_config.total_vectors) {
+       if (num_vectors != msi_config->total_vectors) {
                ath11k_err(ab, "failed to get %d MSI vectors, only %d available",
-                          msi_config.total_vectors, num_vectors);
+                          msi_config->total_vectors, num_vectors);
 
                if (num_vectors >= 0)
                        return -EINVAL;
@@ -1138,6 +1142,7 @@ 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);
index fe44d0dfce1956912474eff47f2a86c6ebd0cbb3..92eeb7c30546008536f0d19252382d0c73186115 100644 (file)
@@ -73,6 +73,7 @@ struct ath11k_pci {
        char amss_path[100];
        u32 msi_ep_base_data;
        struct mhi_controller *mhi_ctrl;
+       const struct ath11k_msi_config *msi_config;
        unsigned long mhi_state;
        u32 register_window;