|
@@ -134,17 +134,18 @@ ath10k_swap_code_seg_alloc(struct ath10k *ar, size_t swap_bin_len)
|
|
|
return seg_info;
|
|
|
}
|
|
|
|
|
|
-int ath10k_swap_code_seg_configure(struct ath10k *ar)
|
|
|
+int ath10k_swap_code_seg_configure(struct ath10k *ar,
|
|
|
+ const struct ath10k_fw_file *fw_file)
|
|
|
{
|
|
|
int ret;
|
|
|
struct ath10k_swap_code_seg_info *seg_info = NULL;
|
|
|
|
|
|
- if (!ar->swap.firmware_swap_code_seg_info)
|
|
|
+ if (!fw_file->firmware_swap_code_seg_info)
|
|
|
return 0;
|
|
|
|
|
|
ath10k_dbg(ar, ATH10K_DBG_BOOT, "boot found firmware code swap binary\n");
|
|
|
|
|
|
- seg_info = ar->swap.firmware_swap_code_seg_info;
|
|
|
+ seg_info = fw_file->firmware_swap_code_seg_info;
|
|
|
|
|
|
ret = ath10k_bmi_write_memory(ar, seg_info->target_addr,
|
|
|
&seg_info->seg_hw_info,
|
|
@@ -158,28 +159,29 @@ int ath10k_swap_code_seg_configure(struct ath10k *ar)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-void ath10k_swap_code_seg_release(struct ath10k *ar)
|
|
|
+void ath10k_swap_code_seg_release(struct ath10k *ar,
|
|
|
+ struct ath10k_fw_file *fw_file)
|
|
|
{
|
|
|
- ath10k_swap_code_seg_free(ar, ar->swap.firmware_swap_code_seg_info);
|
|
|
+ ath10k_swap_code_seg_free(ar, fw_file->firmware_swap_code_seg_info);
|
|
|
|
|
|
/* FIXME: these two assignments look to bein wrong place! Shouldn't
|
|
|
* they be in ath10k_core_free_firmware_files() like the rest?
|
|
|
*/
|
|
|
- ar->normal_mode_fw.fw_file.codeswap_data = NULL;
|
|
|
- ar->normal_mode_fw.fw_file.codeswap_len = 0;
|
|
|
+ fw_file->codeswap_data = NULL;
|
|
|
+ fw_file->codeswap_len = 0;
|
|
|
|
|
|
- ar->swap.firmware_swap_code_seg_info = NULL;
|
|
|
+ fw_file->firmware_swap_code_seg_info = NULL;
|
|
|
}
|
|
|
|
|
|
-int ath10k_swap_code_seg_init(struct ath10k *ar)
|
|
|
+int ath10k_swap_code_seg_init(struct ath10k *ar, struct ath10k_fw_file *fw_file)
|
|
|
{
|
|
|
int ret;
|
|
|
struct ath10k_swap_code_seg_info *seg_info;
|
|
|
const void *codeswap_data;
|
|
|
size_t codeswap_len;
|
|
|
|
|
|
- codeswap_data = ar->normal_mode_fw.fw_file.codeswap_data;
|
|
|
- codeswap_len = ar->normal_mode_fw.fw_file.codeswap_len;
|
|
|
+ codeswap_data = fw_file->codeswap_data;
|
|
|
+ codeswap_len = fw_file->codeswap_len;
|
|
|
|
|
|
if (!codeswap_len || !codeswap_data)
|
|
|
return 0;
|
|
@@ -200,7 +202,7 @@ int ath10k_swap_code_seg_init(struct ath10k *ar)
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
- ar->swap.firmware_swap_code_seg_info = seg_info;
|
|
|
+ fw_file->firmware_swap_code_seg_info = seg_info;
|
|
|
|
|
|
return 0;
|
|
|
}
|