ath10k: add new hw_ops for sdio chip
authorWen Gong <wgong@codeaurora.org>
Mon, 17 Jun 2019 07:37:28 +0000 (15:37 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 27 Jun 2019 17:58:48 +0000 (20:58 +0300)
It report error message while suspend/resume test.
dmesg log:
[  150.749962] ath10k_sdio mmc1:0001:1: hif read32 not supported
[  150.755728] ath10k_sdio mmc1:0001:1: failed to set coverage class: expected integer microsecond value in register

Reason is sdio chip does not support set_coverage_class as well as
pcie chip, remove the set_coverage_class handler will avoid it.

callstack of the error message:
OUTLINED_FUNCTION_6+0xc/0x14 [ath10k_core]
ath10k_mac_op_set_coverage_class+0x2c/0x40 [ath10k_core]
ieee80211_reconfig+0x5d0/0x108c [mac80211]
ieee80211_resume+0x34/0x6c [mac80211]
wiphy_resume+0xbc/0x13c [cfg80211]
dpm_run_callback+0xa4/0x168
device_resume+0x1d4/0x200
async_resume+0x1c/0x34
async_run_entry_fn+0x48/0xf8
process_one_work+0x178/0x2f8
worker_thread+0x1d8/0x2cc
kthread+0x11c/0x12c
ret_from_fork+0x10/0x18

the error log will not happen after this patch applied.

Tested with QCA6174 SDIO with firmware
WLAN.RMH.4.4.1-00007-QCARMSWP-1.

Signed-off-by: Wen Gong <wgong@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath10k/core.c
drivers/net/wireless/ath/ath10k/hw.c
drivers/net/wireless/ath/ath10k/hw.h

index c047f479e3a9448728ff323d78006b45c9773a90..dc45d16e8d21445f978e6831579a12a78357d57b 100644 (file)
@@ -178,7 +178,7 @@ static const struct ath10k_hw_params ath10k_hw_params_list[] = {
                        .board_size = QCA6174_BOARD_DATA_SZ,
                        .board_ext_size = QCA6174_BOARD_EXT_DATA_SZ,
                },
-               .hw_ops = &qca6174_ops,
+               .hw_ops = &qca6174_sdio_ops,
                .hw_clk = qca6174_clk,
                .target_cpu_freq = 176000000,
                .decap_align_bytes = 4,
index b242085c3c167aaf146afd2ea3c0ecc5934b7e71..c415e971735b508e682cd631ab330669a029a712 100644 (file)
@@ -1153,6 +1153,10 @@ const struct ath10k_hw_ops qca6174_ops = {
        .is_rssi_enable = ath10k_htt_tx_rssi_enable,
 };
 
+const struct ath10k_hw_ops qca6174_sdio_ops = {
+       .enable_pll_clk = ath10k_hw_qca6174_enable_pll_clock,
+};
+
 const struct ath10k_hw_ops wcn3990_ops = {
        .tx_data_rssi_pad_bytes = ath10k_get_htt_tx_data_rssi_pad,
        .is_rssi_enable = ath10k_htt_tx_rssi_enable_wcn3990,
index 57381f8566bd47408f4c633efcb3a18a26bb256f..2ae57c1de7b55bddcbb206f8ef6358479205da3b 100644 (file)
@@ -636,6 +636,7 @@ struct ath10k_hw_ops {
 extern const struct ath10k_hw_ops qca988x_ops;
 extern const struct ath10k_hw_ops qca99x0_ops;
 extern const struct ath10k_hw_ops qca6174_ops;
+extern const struct ath10k_hw_ops qca6174_sdio_ops;
 extern const struct ath10k_hw_ops wcn3990_ops;
 
 extern const struct ath10k_hw_clk_params qca6174_clk[];