浏览代码

iwlwifi: pcie: support secured boot flow for family 8000 B step

The driver loads the 2 CPU sections, then it needs to let
the firmware know to start the authentication of the
sections. This is done by writing the relevants bits to
FH_UCODE_LOAD_STATUS.

For CPU1, the driver sets the lower 16 bits. For both CPUs,
the driver sets all the 32 bits.

Signed-off-by: Eran Harary <eran.harary@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Eran Harary 11 年之前
父节点
当前提交
afb8891740
共有 1 个文件被更改,包括 5 次插入3 次删除
  1. 5 3
      drivers/net/wireless/iwlwifi/pcie/trans.c

+ 5 - 3
drivers/net/wireless/iwlwifi/pcie/trans.c

@@ -722,6 +722,11 @@ static int iwl_pcie_load_cpu_sections_8000b(struct iwl_trans *trans,
 
 
 	*first_ucode_section = last_read_idx;
 	*first_ucode_section = last_read_idx;
 
 
+	if (cpu == 1)
+		iwl_write_direct32(trans, FH_UCODE_LOAD_STATUS, 0xFFFF);
+	else
+		iwl_write_direct32(trans, FH_UCODE_LOAD_STATUS, 0xFFFFFFFF);
+
 	return 0;
 	return 0;
 }
 }
 
 
@@ -911,9 +916,6 @@ static int iwl_pcie_load_given_ucode_8000b(struct iwl_trans *trans,
 	if (trans->dbg_dest_tlv)
 	if (trans->dbg_dest_tlv)
 		iwl_pcie_apply_destination(trans);
 		iwl_pcie_apply_destination(trans);
 
 
-	/* Notify FW loading is done */
-	iwl_write_direct32(trans, FH_UCODE_LOAD_STATUS, 0xFFFFFFFF);
-
 	/* wait for image verification to complete  */
 	/* wait for image verification to complete  */
 	ret = iwl_poll_prph_bit(trans, LMPM_SECURE_BOOT_CPU1_STATUS_ADDR_B0,
 	ret = iwl_poll_prph_bit(trans, LMPM_SECURE_BOOT_CPU1_STATUS_ADDR_B0,
 				LMPM_SECURE_BOOT_STATUS_SUCCESS,
 				LMPM_SECURE_BOOT_STATUS_SUCCESS,