diff options
author | neil.shi <neil.shi@quectel.com> | 2023-05-23 17:41:00 +0800 |
---|---|---|
committer | Pierre-Loup A. Griffais <pgriffais@valvesoftware.com> | 2023-11-02 16:05:17 -0700 |
commit | 0f02da05404b27449b01cc3b3a992dcb6f795287 (patch) | |
tree | 1a3b454b5390b16468ab156ea8383cf99e8107cf /drivers | |
parent | cf0e9db9d0ebae11545c0403e9f216ffc94fa6a3 (diff) | |
download | linux-0f02da05404b27449b01cc3b3a992dcb6f795287.tar.gz |
wifi: ath11k: merge all patches to 6.1.11, fix exceptions and compilation errors
Signed-off-by: neil.shi <neil.shi@quectel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/ath/ath11k/debugfs.c | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath11k/hw.h | 6 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath11k/pci.c | 35 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath11k/pcic.c | 11 |
4 files changed, 43 insertions, 10 deletions
diff --git a/drivers/net/wireless/ath/ath11k/debugfs.c b/drivers/net/wireless/ath/ath11k/debugfs.c index d4ae4bd93d62..da30cdd10c34 100644 --- a/drivers/net/wireless/ath/ath11k/debugfs.c +++ b/drivers/net/wireless/ath/ath11k/debugfs.c @@ -1029,6 +1029,7 @@ static ssize_t ath11k_read_sram_dump(struct file *file, static int ath11k_release_sram_dump(struct inode *inode, struct file *file) { + struct ath11k_base *ab = inode->i_private; vfree(file->private_data); file->private_data = NULL; diff --git a/drivers/net/wireless/ath/ath11k/hw.h b/drivers/net/wireless/ath/ath11k/hw.h index 4da64301d297..f54fa6ab35c0 100644 --- a/drivers/net/wireless/ath/ath11k/hw.h +++ b/drivers/net/wireless/ath/ath11k/hw.h @@ -160,6 +160,11 @@ struct ath11k_hw_params { u32 svc_to_ce_map_len; bool single_pdev_only; + + u32 rfkill_pin; + u32 rfkill_cfg; + u32 rfkill_on_level; + bool rxdma1_enable; int num_rxmda_per_pdev; @@ -211,6 +216,7 @@ struct ath11k_hw_params { bool fixed_fw_mem; bool support_off_channel_tx; bool supports_multi_bssid; + bool wakeup_mhi; struct { u32 start; diff --git a/drivers/net/wireless/ath/ath11k/pci.c b/drivers/net/wireless/ath/ath11k/pci.c index 61c8840a0559..798c1010b215 100644 --- a/drivers/net/wireless/ath/ath11k/pci.c +++ b/drivers/net/wireless/ath/ath11k/pci.c @@ -228,7 +228,12 @@ static u32 ath11k_pci_window_read32(struct ath11k_base *ab, u32 offset) struct ath11k_pci *ab_pci = ath11k_pci_priv(ab); u32 window_start, val; - window_start = ath11k_pci_get_window_start(ab, offset); + if (ab->hw_params.static_window_map) + window_start = ath11k_pci_get_window_start(ab, offset); + else + window_start = ATH11K_PCI_WINDOW_START; + + //window_start = ath11k_pci_get_window_start(ab, offset); if (window_start == ATH11K_PCI_WINDOW_START) { spin_lock_bh(&ab_pci->window_lock); @@ -852,6 +857,8 @@ static int ath11k_pci_probe(struct pci_dev *pdev, u32 soc_hw_version_major, soc_hw_version_minor, addr; const struct ath11k_pci_ops *pci_ops; int ret; + u32 sub_version; + int ops_init = 0; ab = ath11k_core_alloc(&pdev->dev, sizeof(*ab_pci), ATH11K_BUS_PCI); @@ -899,8 +906,8 @@ static int ath11k_pci_probe(struct pci_dev *pdev, case QCA6390_DEVICE_ID: ath11k_pci_read_hw_version(ab, &soc_hw_version_major, &soc_hw_version_minor); - switch (soc_hw_version_major) { - case 2: + switch (soc_hw_version_major) { + case 2: ab->hw_rev = ATH11K_HW_QCA6390_HW20; break; default: @@ -920,6 +927,13 @@ static int ath11k_pci_probe(struct pci_dev *pdev, ab->id.bdf_search = ATH11K_BDF_SEARCH_BUS_AND_BOARD; ath11k_pci_read_hw_version(ab, &soc_hw_version_major, &soc_hw_version_minor); + pci_ops = &ath11k_pci_ops_qca6390; + ret = ath11k_pcic_register_pci_ops(ab, pci_ops); + if (ret) { + ath11k_err(ab, "failed to register PCI ops: %d\n", ret); + goto err_pci_free_region; + } + ops_init = 1; switch (soc_hw_version_major) { case 2: switch (soc_hw_version_minor) { @@ -930,7 +944,7 @@ static int ath11k_pci_probe(struct pci_dev *pdev, case 0x10: case 0x11: //ab->hw_rev = ATH11K_HW_WCN6855_HW21; - sub_version = ath11k_pci_read32(ab, SUB_VERSION); + sub_version = ath11k_pcic_read32(ab, SUB_VERSION); ath11k_dbg(ab, ATH11K_DBG_PCI, "sub_version 0x%x\n", sub_version); switch (sub_version) { case 0x1019A0E1: @@ -955,7 +969,6 @@ unsupported_wcn6855_soc: goto err_pci_free_region; } - pci_ops = &ath11k_pci_ops_qca6390; break; default: dev_err(&pdev->dev, "Unknown PCI device found: 0x%x\n", @@ -964,11 +977,13 @@ unsupported_wcn6855_soc: goto err_pci_free_region; } - ret = ath11k_pcic_register_pci_ops(ab, pci_ops); - if (ret) { - ath11k_err(ab, "failed to register PCI ops: %d\n", ret); - goto err_pci_free_region; - } + if(ops_init == 1){ + ret = ath11k_pcic_register_pci_ops(ab, pci_ops); + if (ret) { + ath11k_err(ab, "failed to register PCI ops: %d\n", ret); + goto err_pci_free_region; + } + } ret = ath11k_pcic_init_msi_config(ab); if (ret) { diff --git a/drivers/net/wireless/ath/ath11k/pcic.c b/drivers/net/wireless/ath/ath11k/pcic.c index 063e97815455..82233e30c835 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_QCA206X_HW21, + }, }; int ath11k_pcic_init_msi_config(struct ath11k_base *ab) |