diff options
author | Tobias Schramm <tobleminer@gmail.com> | 2018-01-30 07:06:05 -0500 |
---|---|---|
committer | Kalle Valo <kvalo@codeaurora.org> | 2018-02-07 09:09:44 -0500 |
commit | 34f1cb339cae5c0b6b75094e2d5c79d19be424ed (patch) | |
tree | 85a36c23c1db09a5969e10e3ec23e79178cd6930 | |
parent | d5cc61119343b6f1b8716cfe591d4989ea0c5c28 (diff) |
ath10k: add support for Ubiquiti rebranded QCA988X v2
Some modern Ubiquiti devices contain a rebranded QCA988X rev2 with
a custom Ubiquiti vendor and device id. This patch adds support for
those devices, treating them as a QCA988X v2.
Signed-off-by: Tobias Schramm <tobleminer@gmail.com>
[kvalo@codeaurora.org: rebase, add missing fields in hw_params, fix a long line in pci.c:61]
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
-rw-r--r-- | drivers/net/wireless/ath/ath10k/core.c | 29 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath10k/hw.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath10k/pci.c | 6 |
3 files changed, 36 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath10k/core.c b/drivers/net/wireless/ath/ath10k/core.c index b0fdc1023619..6fb282f76804 100644 --- a/drivers/net/wireless/ath/ath10k/core.c +++ b/drivers/net/wireless/ath/ath10k/core.c | |||
@@ -91,6 +91,35 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = { | |||
91 | .rx_ring_fill_level = HTT_RX_RING_FILL_LEVEL, | 91 | .rx_ring_fill_level = HTT_RX_RING_FILL_LEVEL, |
92 | }, | 92 | }, |
93 | { | 93 | { |
94 | .id = QCA988X_HW_2_0_VERSION, | ||
95 | .dev_id = QCA988X_2_0_DEVICE_ID_UBNT, | ||
96 | .name = "qca988x hw2.0 ubiquiti", | ||
97 | .patch_load_addr = QCA988X_HW_2_0_PATCH_LOAD_ADDR, | ||
98 | .uart_pin = 7, | ||
99 | .cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_ALL, | ||
100 | .otp_exe_param = 0, | ||
101 | .channel_counters_freq_hz = 88000, | ||
102 | .max_probe_resp_desc_thres = 0, | ||
103 | .cal_data_len = 2116, | ||
104 | .fw = { | ||
105 | .dir = QCA988X_HW_2_0_FW_DIR, | ||
106 | .board = QCA988X_HW_2_0_BOARD_DATA_FILE, | ||
107 | .board_size = QCA988X_BOARD_DATA_SZ, | ||
108 | .board_ext_size = QCA988X_BOARD_EXT_DATA_SZ, | ||
109 | }, | ||
110 | .hw_ops = &qca988x_ops, | ||
111 | .decap_align_bytes = 4, | ||
112 | .spectral_bin_discard = 0, | ||
113 | .vht160_mcs_rx_highest = 0, | ||
114 | .vht160_mcs_tx_highest = 0, | ||
115 | .n_cipher_suites = 8, | ||
116 | .num_peers = TARGET_TLV_NUM_PEERS, | ||
117 | .ast_skid_limit = 0x10, | ||
118 | .num_wds_entries = 0x20, | ||
119 | .target_64bit = false, | ||
120 | .rx_ring_fill_level = HTT_RX_RING_FILL_LEVEL, | ||
121 | }, | ||
122 | { | ||
94 | .id = QCA9887_HW_1_0_VERSION, | 123 | .id = QCA9887_HW_1_0_VERSION, |
95 | .dev_id = QCA9887_1_0_DEVICE_ID, | 124 | .dev_id = QCA9887_1_0_DEVICE_ID, |
96 | .name = "qca9887 hw1.0", | 125 | .name = "qca9887 hw1.0", |
diff --git a/drivers/net/wireless/ath/ath10k/hw.h b/drivers/net/wireless/ath/ath10k/hw.h index 6203bc65799b..413b1b4321f7 100644 --- a/drivers/net/wireless/ath/ath10k/hw.h +++ b/drivers/net/wireless/ath/ath10k/hw.h | |||
@@ -22,6 +22,7 @@ | |||
22 | 22 | ||
23 | #define ATH10K_FW_DIR "ath10k" | 23 | #define ATH10K_FW_DIR "ath10k" |
24 | 24 | ||
25 | #define QCA988X_2_0_DEVICE_ID_UBNT (0x11ac) | ||
25 | #define QCA988X_2_0_DEVICE_ID (0x003c) | 26 | #define QCA988X_2_0_DEVICE_ID (0x003c) |
26 | #define QCA6164_2_1_DEVICE_ID (0x0041) | 27 | #define QCA6164_2_1_DEVICE_ID (0x0041) |
27 | #define QCA6174_2_1_DEVICE_ID (0x003e) | 28 | #define QCA6174_2_1_DEVICE_ID (0x003e) |
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c index 355db6a0fcf3..1b266cd0c2ec 100644 --- a/drivers/net/wireless/ath/ath10k/pci.c +++ b/drivers/net/wireless/ath/ath10k/pci.c | |||
@@ -58,6 +58,9 @@ MODULE_PARM_DESC(reset_mode, "0: auto, 1: warm only (default: 0)"); | |||
58 | #define ATH10K_DIAG_TRANSFER_LIMIT 0x5000 | 58 | #define ATH10K_DIAG_TRANSFER_LIMIT 0x5000 |
59 | 59 | ||
60 | static const struct pci_device_id ath10k_pci_id_table[] = { | 60 | static const struct pci_device_id ath10k_pci_id_table[] = { |
61 | /* PCI-E QCA988X V2 (Ubiquiti branded) */ | ||
62 | { PCI_VDEVICE(UBIQUITI, QCA988X_2_0_DEVICE_ID_UBNT) }, | ||
63 | |||
61 | { PCI_VDEVICE(ATHEROS, QCA988X_2_0_DEVICE_ID) }, /* PCI-E QCA988X V2 */ | 64 | { PCI_VDEVICE(ATHEROS, QCA988X_2_0_DEVICE_ID) }, /* PCI-E QCA988X V2 */ |
62 | { PCI_VDEVICE(ATHEROS, QCA6164_2_1_DEVICE_ID) }, /* PCI-E QCA6164 V2.1 */ | 65 | { PCI_VDEVICE(ATHEROS, QCA6164_2_1_DEVICE_ID) }, /* PCI-E QCA6164 V2.1 */ |
63 | { PCI_VDEVICE(ATHEROS, QCA6174_2_1_DEVICE_ID) }, /* PCI-E QCA6174 V2.1 */ | 66 | { PCI_VDEVICE(ATHEROS, QCA6174_2_1_DEVICE_ID) }, /* PCI-E QCA6174 V2.1 */ |
@@ -74,6 +77,7 @@ static const struct ath10k_pci_supp_chip ath10k_pci_supp_chips[] = { | |||
74 | * hacks. ath10k doesn't have them and these devices crash horribly | 77 | * hacks. ath10k doesn't have them and these devices crash horribly |
75 | * because of that. | 78 | * because of that. |
76 | */ | 79 | */ |
80 | { QCA988X_2_0_DEVICE_ID_UBNT, QCA988X_HW_2_0_CHIP_ID_REV }, | ||
77 | { QCA988X_2_0_DEVICE_ID, QCA988X_HW_2_0_CHIP_ID_REV }, | 81 | { QCA988X_2_0_DEVICE_ID, QCA988X_HW_2_0_CHIP_ID_REV }, |
78 | 82 | ||
79 | { QCA6164_2_1_DEVICE_ID, QCA6174_HW_2_1_CHIP_ID_REV }, | 83 | { QCA6164_2_1_DEVICE_ID, QCA6174_HW_2_1_CHIP_ID_REV }, |
@@ -2193,6 +2197,7 @@ static int ath10k_pci_get_num_banks(struct ath10k *ar) | |||
2193 | struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); | 2197 | struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); |
2194 | 2198 | ||
2195 | switch (ar_pci->pdev->device) { | 2199 | switch (ar_pci->pdev->device) { |
2200 | case QCA988X_2_0_DEVICE_ID_UBNT: | ||
2196 | case QCA988X_2_0_DEVICE_ID: | 2201 | case QCA988X_2_0_DEVICE_ID: |
2197 | case QCA99X0_2_0_DEVICE_ID: | 2202 | case QCA99X0_2_0_DEVICE_ID: |
2198 | case QCA9888_2_0_DEVICE_ID: | 2203 | case QCA9888_2_0_DEVICE_ID: |
@@ -3424,6 +3429,7 @@ static int ath10k_pci_probe(struct pci_dev *pdev, | |||
3424 | u32 (*targ_cpu_to_ce_addr)(struct ath10k *ar, u32 addr); | 3429 | u32 (*targ_cpu_to_ce_addr)(struct ath10k *ar, u32 addr); |
3425 | 3430 | ||
3426 | switch (pci_dev->device) { | 3431 | switch (pci_dev->device) { |
3432 | case QCA988X_2_0_DEVICE_ID_UBNT: | ||
3427 | case QCA988X_2_0_DEVICE_ID: | 3433 | case QCA988X_2_0_DEVICE_ID: |
3428 | hw_rev = ATH10K_HW_QCA988X; | 3434 | hw_rev = ATH10K_HW_QCA988X; |
3429 | pci_ps = false; | 3435 | pci_ps = false; |