mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-05 05:34:32 +02:00
fix(esp_security): Power up MPI memory registers when enabling MPI
Co-authored-by: Li HongXi <lihongxi@espressif.com>
This commit is contained in:
@@ -80,7 +80,10 @@ void esp_crypto_mpi_enable_periph_clk(bool enable)
|
||||
MPI_RCC_ATOMIC() {
|
||||
mpi_ll_enable_bus_clock(enable);
|
||||
if (enable) {
|
||||
mpi_ll_power_up();
|
||||
mpi_ll_reset_register();
|
||||
} else {
|
||||
mpi_ll_power_down();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -253,12 +253,14 @@ static void ds_acquire_enable(void)
|
||||
// We also enable SHA and HMAC here. SHA is used by HMAC, HMAC is used by DS.
|
||||
esp_crypto_hmac_enable_periph_clk(true);
|
||||
esp_crypto_sha_enable_periph_clk(true);
|
||||
esp_crypto_mpi_enable_periph_clk(true);
|
||||
esp_crypto_ds_enable_periph_clk(true);
|
||||
}
|
||||
|
||||
static void ds_disable_release(void)
|
||||
{
|
||||
esp_crypto_ds_enable_periph_clk(false);
|
||||
esp_crypto_mpi_enable_periph_clk(false);
|
||||
esp_crypto_sha_enable_periph_clk(false);
|
||||
esp_crypto_hmac_enable_periph_clk(false);
|
||||
|
||||
|
@@ -15,7 +15,6 @@ size_t mpi_hal_calc_hardware_words(size_t words)
|
||||
|
||||
void mpi_hal_enable_hardware_hw_op(void)
|
||||
{
|
||||
mpi_ll_power_up();
|
||||
while (mpi_ll_check_memory_init_complete()) {
|
||||
}
|
||||
// Note: from enabling RSA clock to here takes about 1.3us
|
||||
@@ -27,7 +26,7 @@ void mpi_hal_enable_hardware_hw_op(void)
|
||||
|
||||
void mpi_hal_disable_hardware_hw_op(void)
|
||||
{
|
||||
mpi_ll_power_down();
|
||||
|
||||
}
|
||||
|
||||
void mpi_hal_interrupt_enable(bool enable)
|
||||
|
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
|
||||
* SPDX-FileCopyrightText: 2023-2025 Espressif Systems (Shanghai) CO LTD
|
||||
*
|
||||
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||
*/
|
||||
@@ -19,17 +19,13 @@
|
||||
#include "hal/mpi_hal.h"
|
||||
#include "hal/mpi_ll.h"
|
||||
#include "mpi_params.h"
|
||||
#include "esp_crypto_periph_clk.h"
|
||||
|
||||
#define _DEBUG_ 0
|
||||
|
||||
static void esp_mpi_enable_hardware_hw_op( void )
|
||||
{
|
||||
/* Enable RSA hardware */
|
||||
MPI_RCC_ATOMIC() {
|
||||
mpi_ll_enable_bus_clock(true);
|
||||
mpi_ll_reset_register();
|
||||
}
|
||||
|
||||
esp_crypto_mpi_enable_periph_clk(true);
|
||||
mpi_hal_enable_hardware_hw_op();
|
||||
}
|
||||
|
||||
@@ -37,11 +33,7 @@ static void esp_mpi_enable_hardware_hw_op( void )
|
||||
static void esp_mpi_disable_hardware_hw_op( void )
|
||||
{
|
||||
mpi_hal_disable_hardware_hw_op();
|
||||
|
||||
/* Disable RSA hardware */
|
||||
MPI_RCC_ATOMIC() {
|
||||
mpi_ll_enable_bus_clock(false);
|
||||
}
|
||||
esp_crypto_mpi_enable_periph_clk(false);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -24,8 +24,6 @@ void esp_mpi_enable_hardware_hw_op( void )
|
||||
|
||||
void esp_mpi_disable_hardware_hw_op( void )
|
||||
{
|
||||
mpi_hal_disable_hardware_hw_op();
|
||||
|
||||
/* Disable RSA hardware */
|
||||
esp_crypto_mpi_enable_periph_clk(false);
|
||||
|
||||
|
Reference in New Issue
Block a user