diff options
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.patch | 80 |
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); |