Commit c7583d7d authored by Eran Harary's avatar Eran Harary Committed by Emmanuel Grumbach

iwlwifi: always run the secured flow for family 8000

In the new format the "CSS section" has the same TLV type
as the "mem section". So we need to run the secured flow
for all the 8000 products.
Signed-off-by: default avatarEran Harary <eran.harary@intel.com>
Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
parent a3ead656
...@@ -87,6 +87,16 @@ enum iwl_device_family { ...@@ -87,6 +87,16 @@ enum iwl_device_family {
IWL_DEVICE_FAMILY_8000, IWL_DEVICE_FAMILY_8000,
}; };
static inline bool iwl_has_secure_boot(u32 hw_rev,
enum iwl_device_family family)
{
/* return 1 only for family 8000 B0 */
if ((family == IWL_DEVICE_FAMILY_8000) && (hw_rev & 0xC))
return 1;
return 0;
}
/* /*
* LED mode * LED mode
* IWL_LED_DEFAULT: use device default * IWL_LED_DEFAULT: use device default
......
...@@ -807,19 +807,16 @@ static int iwl_parse_tlv_firmware(struct iwl_drv *drv, ...@@ -807,19 +807,16 @@ static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR, iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR,
tlv_len); tlv_len);
drv->fw.mvm_fw = true; drv->fw.mvm_fw = true;
drv->fw.img[IWL_UCODE_REGULAR].is_secure = true;
break; break;
case IWL_UCODE_TLV_SECURE_SEC_INIT: case IWL_UCODE_TLV_SECURE_SEC_INIT:
iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT, iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT,
tlv_len); tlv_len);
drv->fw.mvm_fw = true; drv->fw.mvm_fw = true;
drv->fw.img[IWL_UCODE_INIT].is_secure = true;
break; break;
case IWL_UCODE_TLV_SECURE_SEC_WOWLAN: case IWL_UCODE_TLV_SECURE_SEC_WOWLAN:
iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN, iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN,
tlv_len); tlv_len);
drv->fw.mvm_fw = true; drv->fw.mvm_fw = true;
drv->fw.img[IWL_UCODE_WOWLAN].is_secure = true;
break; break;
case IWL_UCODE_TLV_NUM_OF_CPU: case IWL_UCODE_TLV_NUM_OF_CPU:
if (tlv_len != sizeof(u32)) if (tlv_len != sizeof(u32))
......
...@@ -227,7 +227,6 @@ struct fw_desc { ...@@ -227,7 +227,6 @@ struct fw_desc {
struct fw_img { struct fw_img {
struct fw_desc sec[IWL_UCODE_SECTION_MAX]; struct fw_desc sec[IWL_UCODE_SECTION_MAX];
bool is_secure;
bool is_dual_cpus; bool is_dual_cpus;
}; };
......
...@@ -746,15 +746,12 @@ static int iwl_pcie_load_given_ucode(struct iwl_trans *trans, ...@@ -746,15 +746,12 @@ static int iwl_pcie_load_given_ucode(struct iwl_trans *trans,
int ret = 0; int ret = 0;
int first_ucode_section; int first_ucode_section;
IWL_DEBUG_FW(trans,
"working with %s image\n",
image->is_secure ? "Secured" : "Non Secured");
IWL_DEBUG_FW(trans, IWL_DEBUG_FW(trans,
"working with %s CPU\n", "working with %s CPU\n",
image->is_dual_cpus ? "Dual" : "Single"); image->is_dual_cpus ? "Dual" : "Single");
/* configure the ucode to be ready to get the secured image */ /* configure the ucode to be ready to get the secured image */
if (image->is_secure) { if (iwl_has_secure_boot(trans->hw_rev, trans->cfg->device_family)) {
/* set secure boot inspector addresses */ /* set secure boot inspector addresses */
iwl_write_prph(trans, iwl_write_prph(trans,
LMPM_SECURE_INSPECTOR_CODE_ADDR, LMPM_SECURE_INSPECTOR_CODE_ADDR,
...@@ -790,7 +787,8 @@ static int iwl_pcie_load_given_ucode(struct iwl_trans *trans, ...@@ -790,7 +787,8 @@ static int iwl_pcie_load_given_ucode(struct iwl_trans *trans,
LMPM_SECURE_CPU2_HDR_MEM_SPACE); LMPM_SECURE_CPU2_HDR_MEM_SPACE);
/* load to FW the binary sections of CPU2 */ /* load to FW the binary sections of CPU2 */
if (image->is_secure) if (iwl_has_secure_boot(trans->hw_rev,
trans->cfg->device_family))
ret = iwl_pcie_load_cpu_secured_sections( ret = iwl_pcie_load_cpu_secured_sections(
trans, image, 2, trans, image, 2,
&first_ucode_section); &first_ucode_section);
...@@ -821,7 +819,7 @@ static int iwl_pcie_load_given_ucode(struct iwl_trans *trans, ...@@ -821,7 +819,7 @@ static int iwl_pcie_load_given_ucode(struct iwl_trans *trans,
else else
iwl_write32(trans, CSR_RESET, 0); iwl_write32(trans, CSR_RESET, 0);
if (image->is_secure) { if (iwl_has_secure_boot(trans->hw_rev, trans->cfg->device_family)) {
/* wait for image verification to complete */ /* wait for image verification to complete */
ret = iwl_poll_prph_bit(trans, ret = iwl_poll_prph_bit(trans,
LMPM_SECURE_BOOT_CPU1_STATUS_ADDR, LMPM_SECURE_BOOT_CPU1_STATUS_ADDR,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment