Skip to content

Commit

Permalink
ath10k: sdio: workaround firmware UART pin configuration bug
Browse files Browse the repository at this point in the history
On QCA6174 SDIO devices the SDIO interrupt will fail if UART is
disabled from ath10k. SDIO firmware enables UART printouts by
default. If ath10k will try to enable UART again the firmware
will configure it's GPIO line incorrectly and SDIO interrupts
won't work anymore. The workaround is to set UART pin again (19
for QCA6174 SDIO) if uart_print is 0.

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>
  • Loading branch information
Wen Gong authored and Kalle Valo committed Apr 23, 2019
1 parent db5e323 commit 4504f0e
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 1 deletion.
10 changes: 9 additions & 1 deletion drivers/net/wireless/ath/ath10k/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -2065,8 +2065,16 @@ static int ath10k_init_uart(struct ath10k *ar)
return ret;
}

if (!uart_print)
if (!uart_print && ar->hw_params.uart_pin_workaround) {
ret = ath10k_bmi_write32(ar, hi_dbg_uart_txpin,
ar->hw_params.uart_pin);
if (ret) {
ath10k_warn(ar, "failed to set UART TX pin: %d", ret);
return ret;
}

return 0;
}

ret = ath10k_bmi_write32(ar, hi_dbg_uart_txpin, ar->hw_params.uart_pin);
if (ret) {
Expand Down
5 changes: 5 additions & 0 deletions drivers/net/wireless/ath/ath10k/hw.h
Original file line number Diff line number Diff line change
Expand Up @@ -606,6 +606,11 @@ struct ath10k_hw_params {

/* target supporting fw download via diag ce */
bool fw_diag_ce_download;

/* need to set uart pin if disable uart print, workaround for a
* firmware bug
*/
bool uart_pin_workaround;
};

struct htt_rx_desc;
Expand Down

0 comments on commit 4504f0e

Please sign in to comment.