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_RCC_ATOMIC() {
|
||||||
mpi_ll_enable_bus_clock(enable);
|
mpi_ll_enable_bus_clock(enable);
|
||||||
if (enable) {
|
if (enable) {
|
||||||
|
mpi_ll_power_up();
|
||||||
mpi_ll_reset_register();
|
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.
|
// 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_hmac_enable_periph_clk(true);
|
||||||
esp_crypto_sha_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);
|
esp_crypto_ds_enable_periph_clk(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ds_disable_release(void)
|
static void ds_disable_release(void)
|
||||||
{
|
{
|
||||||
esp_crypto_ds_enable_periph_clk(false);
|
esp_crypto_ds_enable_periph_clk(false);
|
||||||
|
esp_crypto_mpi_enable_periph_clk(false);
|
||||||
esp_crypto_sha_enable_periph_clk(false);
|
esp_crypto_sha_enable_periph_clk(false);
|
||||||
esp_crypto_hmac_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)
|
void mpi_hal_enable_hardware_hw_op(void)
|
||||||
{
|
{
|
||||||
mpi_ll_power_up();
|
|
||||||
while (mpi_ll_check_memory_init_complete()) {
|
while (mpi_ll_check_memory_init_complete()) {
|
||||||
}
|
}
|
||||||
// Note: from enabling RSA clock to here takes about 1.3us
|
// 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)
|
void mpi_hal_disable_hardware_hw_op(void)
|
||||||
{
|
{
|
||||||
mpi_ll_power_down();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void mpi_hal_interrupt_enable(bool enable)
|
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
|
* SPDX-License-Identifier: Unlicense OR CC0-1.0
|
||||||
*/
|
*/
|
||||||
@@ -19,17 +19,13 @@
|
|||||||
#include "hal/mpi_hal.h"
|
#include "hal/mpi_hal.h"
|
||||||
#include "hal/mpi_ll.h"
|
#include "hal/mpi_ll.h"
|
||||||
#include "mpi_params.h"
|
#include "mpi_params.h"
|
||||||
|
#include "esp_crypto_periph_clk.h"
|
||||||
|
|
||||||
#define _DEBUG_ 0
|
#define _DEBUG_ 0
|
||||||
|
|
||||||
static void esp_mpi_enable_hardware_hw_op( void )
|
static void esp_mpi_enable_hardware_hw_op( void )
|
||||||
{
|
{
|
||||||
/* Enable RSA hardware */
|
esp_crypto_mpi_enable_periph_clk(true);
|
||||||
MPI_RCC_ATOMIC() {
|
|
||||||
mpi_ll_enable_bus_clock(true);
|
|
||||||
mpi_ll_reset_register();
|
|
||||||
}
|
|
||||||
|
|
||||||
mpi_hal_enable_hardware_hw_op();
|
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 )
|
static void esp_mpi_disable_hardware_hw_op( void )
|
||||||
{
|
{
|
||||||
mpi_hal_disable_hardware_hw_op();
|
mpi_hal_disable_hardware_hw_op();
|
||||||
|
esp_crypto_mpi_enable_periph_clk(false);
|
||||||
/* Disable RSA hardware */
|
|
||||||
MPI_RCC_ATOMIC() {
|
|
||||||
mpi_ll_enable_bus_clock(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -24,8 +24,6 @@ void esp_mpi_enable_hardware_hw_op( void )
|
|||||||
|
|
||||||
void esp_mpi_disable_hardware_hw_op( void )
|
void esp_mpi_disable_hardware_hw_op( void )
|
||||||
{
|
{
|
||||||
mpi_hal_disable_hardware_hw_op();
|
|
||||||
|
|
||||||
/* Disable RSA hardware */
|
/* Disable RSA hardware */
|
||||||
esp_crypto_mpi_enable_periph_clk(false);
|
esp_crypto_mpi_enable_periph_clk(false);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user