iwlwifi: pcie: support secured boot flow for family 8000 B step
authorEran Harary <eran.harary@intel.com>
Tue, 20 Jan 2015 13:37:34 +0000 (15:37 +0200)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 22 Jan 2015 15:55:26 +0000 (17:55 +0200)
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>
drivers/net/wireless/iwlwifi/pcie/trans.c

index 49e32060eafba727552f476cb06741ea62161512..1ff87677c3d35ceaf68762cc4dda8b578a22e514 100644 (file)
@@ -722,6 +722,11 @@ static int iwl_pcie_load_cpu_sections_8000b(struct iwl_trans *trans,
 
        *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;
 }
 
@@ -911,9 +916,6 @@ static int iwl_pcie_load_given_ucode_8000b(struct iwl_trans *trans,
        if (trans->dbg_dest_tlv)
                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  */
        ret = iwl_poll_prph_bit(trans, LMPM_SECURE_BOOT_CPU1_STATUS_ADDR_B0,
                                LMPM_SECURE_BOOT_STATUS_SUCCESS,