aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch')
-rw-r--r--package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch80
1 files changed, 80 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch b/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch
new file mode 100644
index 0000000000..3fcf505e15
--- /dev/null
+++ b/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch
@@ -0,0 +1,80 @@
+From: Anilkumar Kolli <akolli@qti.qualcomm.com>
+Date: Wed, 31 May 2017 14:21:27 +0300
+Subject: [PATCH] ath10k: add BMI parameters to fix calibration from
+ DT/pre-cal
+
+QCA99X0, QCA9888, QCA9984 supports calibration data in
+either OTP or DT/pre-cal file. Current ath10k supports
+Calibration data from OTP only.
+
+If caldata is loaded from DT/pre-cal file, fetching board id
+and applying calibration parameters like tx power gets failed.
+
+error log:
+[ 15.733663] ath10k_pci 0000:01:00.0: failed to fetch board file: -2
+[ 15.741474] ath10k_pci 0000:01:00.0: could not probe fw (-2)
+
+This patch adds calibration data support from DT/pre-cal
+file. Below parameters are used to get board id and
+applying calibration parameters from cal data.
+
+ EEPROM[OTP] FLASH[DT/pre-cal file]
+Cal param 0x700 0x10000
+Board id 0x10 0x8000
+
+Tested on QCA9888 with pre-cal file.
+
+Signed-off-by: Anilkumar Kolli <akolli@qti.qualcomm.com>
+Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
+---
+
+--- a/drivers/net/wireless/ath/ath10k/bmi.h
++++ b/drivers/net/wireless/ath/ath10k/bmi.h
+@@ -83,6 +83,8 @@ enum bmi_cmd_id {
+ #define BMI_NVRAM_SEG_NAME_SZ 16
+
+ #define BMI_PARAM_GET_EEPROM_BOARD_ID 0x10
++#define BMI_PARAM_GET_FLASH_BOARD_ID 0x8000
++#define BMI_PARAM_FLASH_SECTION_ALL 0x10000
+
+ #define ATH10K_BMI_BOARD_ID_FROM_OTP_MASK 0x7c00
+ #define ATH10K_BMI_BOARD_ID_FROM_OTP_LSB 10
+--- a/drivers/net/wireless/ath/ath10k/core.c
++++ b/drivers/net/wireless/ath/ath10k/core.c
+@@ -657,7 +657,7 @@ static int ath10k_core_get_board_id_from
+ {
+ u32 result, address;
+ u8 board_id, chip_id;
+- int ret;
++ int ret, bmi_board_id_param;
+
+ address = ar->hw_params.patch_load_addr;
+
+@@ -681,8 +681,13 @@ static int ath10k_core_get_board_id_from
+ return ret;
+ }
+
+- ret = ath10k_bmi_execute(ar, address, BMI_PARAM_GET_EEPROM_BOARD_ID,
+- &result);
++ if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
++ ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE)
++ bmi_board_id_param = BMI_PARAM_GET_FLASH_BOARD_ID;
++ else
++ bmi_board_id_param = BMI_PARAM_GET_EEPROM_BOARD_ID;
++
++ ret = ath10k_bmi_execute(ar, address, bmi_board_id_param, &result);
+ if (ret) {
+ ath10k_err(ar, "could not execute otp for board id check: %d\n",
+ ret);
+@@ -810,6 +815,11 @@ static int ath10k_download_and_run_otp(s
+ return ret;
+ }
+
++ /* As of now pre-cal is valid for 10_4 variants */
++ if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
++ ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE)
++ bmi_otp_exe_param = BMI_PARAM_FLASH_SECTION_ALL;
++
+ ret = ath10k_bmi_execute(ar, address, bmi_otp_exe_param, &result);
+ if (ret) {
+ ath10k_err(ar, "could not execute otp (%d)\n", ret);