mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-25 08:21:14 +00:00
b33bfcf9fa
Synchronize the ath11k backports with the current ath-next tree. All of the changes are various bugfixes, there is no new major feature. Signed-off-by: Robert Marko <robimarko@gmail.com>
181 lines
5.8 KiB
Diff
181 lines
5.8 KiB
Diff
From 011e5a3052a22d3758d17442bf0c04c68bf79bea Mon Sep 17 00:00:00 2001
|
|
From: Seevalamuthu Mariappan <quic_seevalam@quicinc.com>
|
|
Date: Wed, 26 Jul 2023 19:40:30 +0530
|
|
Subject: [PATCH 3/5] wifi: ath11k: Split coldboot calibration hw_param
|
|
|
|
QCN9074 enables coldboot calibration only in Factory Test Mode (FTM).
|
|
Hence, split cold_boot_calib to two hw_params for mission and FTM
|
|
mode.
|
|
|
|
Tested-on: QCN9074 hw1.0 PCI WLAN.HK.2.7.0.1-01744-QCAHKSWPL_SILICONZ-1
|
|
|
|
Signed-off-by: Seevalamuthu Mariappan <quic_seevalam@quicinc.com>
|
|
Signed-off-by: Raj Kumar Bhagat <quic_rajkbhag@quicinc.com>
|
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
|
Link: https://lore.kernel.org/r/20230726141032.3061-2-quic_rajkbhag@quicinc.com
|
|
---
|
|
drivers/net/wireless/ath/ath11k/ahb.c | 3 +--
|
|
drivers/net/wireless/ath/ath11k/core.c | 36 ++++++++++++++++++++------
|
|
drivers/net/wireless/ath/ath11k/core.h | 1 +
|
|
drivers/net/wireless/ath/ath11k/hw.h | 3 ++-
|
|
drivers/net/wireless/ath/ath11k/qmi.c | 6 ++---
|
|
5 files changed, 35 insertions(+), 14 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/ahb.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/ahb.c
|
|
@@ -422,8 +422,7 @@ static int ath11k_ahb_fwreset_from_cold_
|
|
{
|
|
int timeout;
|
|
|
|
- if (ath11k_cold_boot_cal == 0 || ab->qmi.cal_done ||
|
|
- ab->hw_params.cold_boot_calib == 0 ||
|
|
+ if (!ath11k_core_coldboot_cal_support(ab) || ab->qmi.cal_done ||
|
|
ab->hw_params.cbcal_restart_fw == 0)
|
|
return 0;
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/core.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/core.c
|
|
@@ -86,7 +86,8 @@ static const struct ath11k_hw_params ath
|
|
.supports_shadow_regs = false,
|
|
.idle_ps = false,
|
|
.supports_sta_ps = false,
|
|
- .cold_boot_calib = true,
|
|
+ .coldboot_cal_mm = true,
|
|
+ .coldboot_cal_ftm = true,
|
|
.cbcal_restart_fw = true,
|
|
.fw_mem_mode = 0,
|
|
.num_vdevs = 16 + 1,
|
|
@@ -167,7 +168,8 @@ static const struct ath11k_hw_params ath
|
|
.supports_shadow_regs = false,
|
|
.idle_ps = false,
|
|
.supports_sta_ps = false,
|
|
- .cold_boot_calib = true,
|
|
+ .coldboot_cal_mm = true,
|
|
+ .coldboot_cal_ftm = true,
|
|
.cbcal_restart_fw = true,
|
|
.fw_mem_mode = 0,
|
|
.num_vdevs = 16 + 1,
|
|
@@ -248,7 +250,8 @@ static const struct ath11k_hw_params ath
|
|
.supports_shadow_regs = true,
|
|
.idle_ps = true,
|
|
.supports_sta_ps = true,
|
|
- .cold_boot_calib = false,
|
|
+ .coldboot_cal_mm = false,
|
|
+ .coldboot_cal_ftm = false,
|
|
.cbcal_restart_fw = false,
|
|
.fw_mem_mode = 0,
|
|
.num_vdevs = 16 + 1,
|
|
@@ -332,7 +335,8 @@ static const struct ath11k_hw_params ath
|
|
.supports_shadow_regs = false,
|
|
.idle_ps = false,
|
|
.supports_sta_ps = false,
|
|
- .cold_boot_calib = false,
|
|
+ .coldboot_cal_mm = false,
|
|
+ .coldboot_cal_ftm = false,
|
|
.cbcal_restart_fw = false,
|
|
.fw_mem_mode = 2,
|
|
.num_vdevs = 8,
|
|
@@ -413,7 +417,8 @@ static const struct ath11k_hw_params ath
|
|
.supports_shadow_regs = true,
|
|
.idle_ps = true,
|
|
.supports_sta_ps = true,
|
|
- .cold_boot_calib = false,
|
|
+ .coldboot_cal_mm = false,
|
|
+ .coldboot_cal_ftm = false,
|
|
.cbcal_restart_fw = false,
|
|
.fw_mem_mode = 0,
|
|
.num_vdevs = 16 + 1,
|
|
@@ -495,7 +500,8 @@ static const struct ath11k_hw_params ath
|
|
.supports_shadow_regs = true,
|
|
.idle_ps = true,
|
|
.supports_sta_ps = true,
|
|
- .cold_boot_calib = false,
|
|
+ .coldboot_cal_mm = false,
|
|
+ .coldboot_cal_ftm = false,
|
|
.cbcal_restart_fw = false,
|
|
.fw_mem_mode = 0,
|
|
.num_vdevs = 16 + 1,
|
|
@@ -578,7 +584,8 @@ static const struct ath11k_hw_params ath
|
|
.supports_shadow_regs = true,
|
|
.idle_ps = true,
|
|
.supports_sta_ps = true,
|
|
- .cold_boot_calib = true,
|
|
+ .coldboot_cal_mm = true,
|
|
+ .coldboot_cal_ftm = true,
|
|
.cbcal_restart_fw = false,
|
|
.fw_mem_mode = 0,
|
|
.num_vdevs = 16 + 1,
|
|
@@ -667,7 +674,8 @@ static const struct ath11k_hw_params ath
|
|
.supports_suspend = false,
|
|
.hal_params = &ath11k_hw_hal_params_ipq8074,
|
|
.single_pdev_only = false,
|
|
- .cold_boot_calib = true,
|
|
+ .coldboot_cal_mm = true,
|
|
+ .coldboot_cal_ftm = true,
|
|
.cbcal_restart_fw = true,
|
|
.fix_l1ss = true,
|
|
.supports_dynamic_smps_6ghz = false,
|
|
@@ -749,6 +757,18 @@ void ath11k_fw_stats_free(struct ath11k_
|
|
ath11k_fw_stats_bcn_free(&stats->bcn);
|
|
}
|
|
|
|
+bool ath11k_core_coldboot_cal_support(struct ath11k_base *ab)
|
|
+{
|
|
+ if (!ath11k_cold_boot_cal)
|
|
+ return false;
|
|
+
|
|
+ if (ath11k_ftm_mode)
|
|
+ return ab->hw_params.coldboot_cal_ftm;
|
|
+
|
|
+ else
|
|
+ return ab->hw_params.coldboot_cal_mm;
|
|
+}
|
|
+
|
|
int ath11k_core_suspend(struct ath11k_base *ab)
|
|
{
|
|
int ret;
|
|
--- a/drivers/net/wireless/ath/ath11k/core.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/core.h
|
|
@@ -1186,6 +1186,7 @@ void ath11k_core_halt(struct ath11k *ar)
|
|
int ath11k_core_resume(struct ath11k_base *ab);
|
|
int ath11k_core_suspend(struct ath11k_base *ab);
|
|
void ath11k_core_pre_reconfigure_recovery(struct ath11k_base *ab);
|
|
+bool ath11k_core_coldboot_cal_support(struct ath11k_base *ab);
|
|
|
|
const struct firmware *ath11k_core_firmware_request(struct ath11k_base *ab,
|
|
const char *filename);
|
|
--- a/drivers/net/wireless/ath/ath11k/hw.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/hw.h
|
|
@@ -187,7 +187,8 @@ struct ath11k_hw_params {
|
|
bool supports_shadow_regs;
|
|
bool idle_ps;
|
|
bool supports_sta_ps;
|
|
- bool cold_boot_calib;
|
|
+ bool coldboot_cal_mm;
|
|
+ bool coldboot_cal_ftm;
|
|
bool cbcal_restart_fw;
|
|
int fw_mem_mode;
|
|
u32 num_vdevs;
|
|
--- a/drivers/net/wireless/ath/ath11k/qmi.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/qmi.c
|
|
@@ -2079,7 +2079,7 @@ static int ath11k_qmi_assign_target_mem_
|
|
return -EINVAL;
|
|
}
|
|
|
|
- if (ath11k_cold_boot_cal && ab->hw_params.cold_boot_calib) {
|
|
+ if (ath11k_core_coldboot_cal_support(ab)) {
|
|
if (hremote_node) {
|
|
ab->qmi.target_mem[idx].paddr =
|
|
res.start + host_ddr_sz;
|
|
@@ -3209,8 +3209,8 @@ static void ath11k_qmi_driver_event_work
|
|
break;
|
|
}
|
|
|
|
- if (ath11k_cold_boot_cal && ab->qmi.cal_done == 0 &&
|
|
- ab->hw_params.cold_boot_calib) {
|
|
+ if (ab->qmi.cal_done == 0 &&
|
|
+ ath11k_core_coldboot_cal_support(ab)) {
|
|
ath11k_qmi_process_coldboot_calibration(ab);
|
|
} else {
|
|
clear_bit(ATH11K_FLAG_CRASH_FLUSH,
|