On 3/2/20 12:45 PM, Christian Hewitt wrote:

On 26 Sep 2019, at 6:24 pm, Kalle Valo <[email protected]> wrote:

From: Erik Stromdahl <[email protected]>

Add hardware parameters for QCA9377 sdio devices, it's now properly supported.

Signed-off-by: Erik Stromdahl <[email protected]>
Signed-off-by: Kalle Valo <[email protected]>
---

I don't have any working QCA9377 SDIO hardware so I would appreciate any
test reports. This should apply cleanly to ath.git master branch (at least to
tag ath-201909230832):

https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/log/?h=master

drivers/net/wireless/ath/ath10k/core.c | 27 +++++++++++++++++++++++++++
drivers/net/wireless/ath/ath10k/hw.h   |  3 +++
2 files changed, 30 insertions(+)

diff --git a/drivers/net/wireless/ath/ath10k/core.c 
b/drivers/net/wireless/ath/ath10k/core.c
index 36c62d66c19e..e5572d4b6ae9 100644
--- a/drivers/net/wireless/ath/ath10k/core.c
+++ b/drivers/net/wireless/ath/ath10k/core.c
@@ -539,6 +539,33 @@ static const struct ath10k_hw_params 
ath10k_hw_params_list[] = {
                .tx_stats_over_pktlog = false,
        },
        {
+               .id = QCA9377_HW_1_1_DEV_VERSION,
+               .dev_id = QCA9377_1_0_DEVICE_ID,
+               .bus = ATH10K_BUS_SDIO,
+               .name = "qca9377 hw1.1 sdio",
+               .patch_load_addr = QCA9377_HW_1_0_PATCH_LOAD_ADDR,
+               .uart_pin = 19,
+               .otp_exe_param = 0,
+               .channel_counters_freq_hz = 88000,
+               .max_probe_resp_desc_thres = 0,
+               .cal_data_len = 8124,
+               .fw = {
+                       .dir = QCA9377_HW_1_0_FW_DIR,
+                       .board = QCA9377_HW_1_0_BOARD_DATA_FILE,
+                       .board_size = QCA9377_BOARD_DATA_SZ,
+                       .board_ext_size = QCA9377_BOARD_EXT_DATA_SZ,
+               },
+               .hw_ops = &qca6174_ops,
+               .hw_clk = qca6174_clk,
+               .target_cpu_freq = 176000000,
+               .decap_align_bytes = 4,
+               .n_cipher_suites = 8,
+               .num_peers = TARGET_QCA9377_HL_NUM_PEERS,
+               .ast_skid_limit = 0x10,
+               .num_wds_entries = 0x20,
+               .uart_pin_workaround = true,
+       },
+       {
                .id = QCA4019_HW_1_0_DEV_VERSION,
                .dev_id = 0,
                .bus = ATH10K_BUS_AHB,
diff --git a/drivers/net/wireless/ath/ath10k/hw.h 
b/drivers/net/wireless/ath/ath10k/hw.h
index 2ae57c1de7b5..ddb1d23ec6de 100644
--- a/drivers/net/wireless/ath/ath10k/hw.h
+++ b/drivers/net/wireless/ath/ath10k/hw.h
@@ -768,6 +768,9 @@ ath10k_is_rssi_enable(struct ath10k_hw_params *hw,
#define TARGET_HL_TLV_AST_SKID_LIMIT            16
#define TARGET_HL_TLV_NUM_WDS_ENTRIES           2

+/* Target specific defines for QCA9377 high latency firmware */
+#define TARGET_QCA9377_HL_NUM_PEERS            15
+
/* Diagnostic Window */
#define CE_DIAG_PIPE    7


Tested and working fine using Linux 5.6-rc3 and SDIO firmware from [1].

[    5.391369] ath10k_sdio mmc2:0001:1: qca9377 hw1.1 sdio target 0x05020001 
chip_id 0x00000000 sub 0000:0000
[    5.391379] ath10k_sdio mmc2:0001:1: kconfig debug 0 debugfs 0 tracing 0 dfs 
0 testmode 0
[    5.391632] ath10k_sdio mmc2:0001:1: firmware ver 
WLAN.TF.1.1.1-00061-QCATFSWPZ-1 api 5 features ignore-otp crc32 7746e551
[    5.624198] ath10k_sdio mmc2:0001:1: failed to fetch board data for 
bus=sdio,vendor=0271,device=0701,subsystem-vendor=0000,subsystem-device=0000 
from ath10k/QCA9377/hw1.0/board-2.bin
[    5.624473] ath10k_sdio mmc2:0001:1: board_file api 1 bmi_id N/A crc32 
544289f7
[    6.775882] ath10k_sdio mmc2:0001:1: htt-ver 3.32 wmi-op 4 htt-op 3 cal otp 
max-sta 32 raw 0 hwcrypto 1
[    6.854066] ath: EEPROM regdomain sanitized
[    6.854073] ath: EEPROM regdomain: 0x64
[    6.854075] ath: EEPROM indicates we should expect a direct regpair map
[    6.854082] ath: Country alpha2 being used: 00
[    6.854083] ath: Regpair used: 0x64
[    8.444189] ath: EEPROM regdomain: 0x8114
[    8.444194] ath: EEPROM indicates we should expect a country code
[    8.444196] ath: doing EEPROM country->regdmn map search
[    8.444198] ath: country maps to regdmn code: 0x37
[    8.444201] ath: Country alpha2 being used: DE
[    8.444203] ath: Regpair used: 0x37
[    8.444206] ath: regdomain 0x8114 dynamically updated by country element

The test device is an Amlogic S905D STB device from O2.cz that I have just 
submitted a working device-tree for [2].

If you need a QCA9377 test device, I have a duplicate/spare of the box and 
would be happy to post it.

Tested-by: Christian Hewitt <[email protected]>

[1] https://github.com/chewitt/qca-firmware
[2] https://patchwork.kernel.org/project/linux-amlogic/list/?series=249525


I have received a lot of questions lately about this patch (why it has not been 
integrated).
It is actually the only missing piece in order to have working QCA9377 support 
on mainline.

Unless there is a good reason not to add it, I think it should be integrated.

--
Erik

_______________________________________________
ath10k mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/ath10k

Reply via email to