forked from espressif/esp-idf
Merge branch 'fix/incorrect_parent_crypto_clk_reset' into 'master'
fix(hal/crypto): Do not reset parent crypto clk when resetting a crypto peripheral See merge request espressif/esp-idf!29422
This commit is contained in:
@@ -67,40 +67,40 @@ static inline uint32_t periph_ll_get_rst_en_mask(periph_module_t periph, bool en
|
|||||||
case PERIPH_SARADC_MODULE:
|
case PERIPH_SARADC_MODULE:
|
||||||
return HP_SYS_CLKRST_REG_RST_EN_ADC;
|
return HP_SYS_CLKRST_REG_RST_EN_ADC;
|
||||||
case PERIPH_AES_MODULE:
|
case PERIPH_AES_MODULE:
|
||||||
ret = HP_SYS_CLKRST_REG_RST_EN_CRYPTO | HP_SYS_CLKRST_REG_RST_EN_AES;
|
ret = HP_SYS_CLKRST_REG_RST_EN_AES;
|
||||||
if (enable == true) {
|
if (enable == true) {
|
||||||
// Clear reset on digital signature, otherwise AES unit is held in reset
|
// Clear reset on digital signature, otherwise AES unit is held in reset
|
||||||
ret |= HP_SYS_CLKRST_REG_RST_EN_DS;
|
ret |= HP_SYS_CLKRST_REG_RST_EN_DS;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
case PERIPH_DS_MODULE:
|
case PERIPH_DS_MODULE:
|
||||||
return HP_SYS_CLKRST_REG_RST_EN_CRYPTO | HP_SYS_CLKRST_REG_RST_EN_DS;
|
return HP_SYS_CLKRST_REG_RST_EN_DS;
|
||||||
case PERIPH_ECC_MODULE:
|
case PERIPH_ECC_MODULE:
|
||||||
ret = HP_SYS_CLKRST_REG_RST_EN_CRYPTO | HP_SYS_CLKRST_REG_RST_EN_ECC;
|
ret = HP_SYS_CLKRST_REG_RST_EN_ECC;
|
||||||
if (enable == true) {
|
if (enable == true) {
|
||||||
ret |= HP_SYS_CLKRST_REG_RST_EN_ECDSA;
|
ret |= HP_SYS_CLKRST_REG_RST_EN_ECDSA;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
case PERIPH_HMAC_MODULE:
|
case PERIPH_HMAC_MODULE:
|
||||||
return HP_SYS_CLKRST_REG_RST_EN_CRYPTO | HP_SYS_CLKRST_REG_RST_EN_HMAC;
|
return HP_SYS_CLKRST_REG_RST_EN_HMAC;
|
||||||
case PERIPH_RSA_MODULE:
|
case PERIPH_RSA_MODULE:
|
||||||
ret = HP_SYS_CLKRST_REG_RST_EN_CRYPTO | HP_SYS_CLKRST_REG_RST_EN_RSA;
|
ret = HP_SYS_CLKRST_REG_RST_EN_RSA;
|
||||||
if (enable == true) {
|
if (enable == true) {
|
||||||
// Clear reset on digital signature, and ECDSA, otherwise RSA is held in reset
|
// Clear reset on digital signature, and ECDSA, otherwise RSA is held in reset
|
||||||
ret |= HP_SYS_CLKRST_REG_RST_EN_DS | HP_SYS_CLKRST_REG_RST_EN_ECDSA;
|
ret |= HP_SYS_CLKRST_REG_RST_EN_DS | HP_SYS_CLKRST_REG_RST_EN_ECDSA;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
case PERIPH_SEC_MODULE:
|
case PERIPH_SEC_MODULE:
|
||||||
return HP_SYS_CLKRST_REG_RST_EN_CRYPTO | HP_SYS_CLKRST_REG_RST_EN_SEC;
|
return HP_SYS_CLKRST_REG_RST_EN_SEC;
|
||||||
case PERIPH_SHA_MODULE:
|
case PERIPH_SHA_MODULE:
|
||||||
ret = HP_SYS_CLKRST_REG_RST_EN_CRYPTO | HP_SYS_CLKRST_REG_RST_EN_SHA;
|
ret = HP_SYS_CLKRST_REG_RST_EN_SHA;
|
||||||
if (enable == true) {
|
if (enable == true) {
|
||||||
// Clear reset on digital signature, HMAC and ECDSA, otherwise SHA is held in reset
|
// Clear reset on digital signature, HMAC and ECDSA, otherwise SHA is held in reset
|
||||||
ret |= (HP_SYS_CLKRST_REG_RST_EN_HMAC | HP_SYS_CLKRST_REG_RST_EN_DS | HP_SYS_CLKRST_REG_RST_EN_ECDSA);
|
ret |= (HP_SYS_CLKRST_REG_RST_EN_HMAC | HP_SYS_CLKRST_REG_RST_EN_DS | HP_SYS_CLKRST_REG_RST_EN_ECDSA);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
case PERIPH_ECDSA_MODULE:
|
case PERIPH_ECDSA_MODULE:
|
||||||
return HP_SYS_CLKRST_REG_RST_EN_CRYPTO | HP_SYS_CLKRST_REG_RST_EN_ECDSA;
|
return HP_SYS_CLKRST_REG_RST_EN_ECDSA;
|
||||||
case PERIPH_EMAC_MODULE:
|
case PERIPH_EMAC_MODULE:
|
||||||
return LP_CLKRST_RST_EN_EMAC;
|
return LP_CLKRST_RST_EN_EMAC;
|
||||||
default:
|
default:
|
||||||
|
@@ -46,8 +46,6 @@ static inline void ds_ll_reset_register(void)
|
|||||||
{
|
{
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ds = 1;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ds = 1;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ds = 0;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ds = 0;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 1;
|
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// use a macro to wrap the function, force the caller to use it in a critical section
|
/// use a macro to wrap the function, force the caller to use it in a critical section
|
||||||
|
@@ -46,8 +46,6 @@ static inline void ecc_ll_reset_register(void)
|
|||||||
{
|
{
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecc = 1;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecc = 1;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecc = 0;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecc = 0;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 1;
|
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 0;
|
|
||||||
|
|
||||||
// Clear reset on ECDSA, otherwise ECC is held in reset
|
// Clear reset on ECDSA, otherwise ECC is held in reset
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecdsa = 0;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecdsa = 0;
|
||||||
|
@@ -91,8 +91,6 @@ static inline void ecdsa_ll_reset_register(void)
|
|||||||
{
|
{
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecdsa = 1;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecdsa = 1;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecdsa = 0;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ecdsa = 0;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 1;
|
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -53,8 +53,6 @@ static inline void hmac_ll_reset_register(void)
|
|||||||
{
|
{
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_hmac = 1;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_hmac = 1;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_hmac = 0;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_hmac = 0;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 1;
|
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// use a macro to wrap the function, force the caller to use it in a critical section
|
/// use a macro to wrap the function, force the caller to use it in a critical section
|
||||||
|
@@ -59,8 +59,6 @@ static inline void key_mgr_ll_reset_register(void)
|
|||||||
{
|
{
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_km = 1;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_km = 1;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_km = 0;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_km = 0;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 1;
|
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// use a macro to wrap the function, force the caller to use it in a critical section
|
/// use a macro to wrap the function, force the caller to use it in a critical section
|
||||||
|
@@ -39,8 +39,6 @@ static inline void mpi_ll_reset_register(void)
|
|||||||
{
|
{
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_rsa = 1;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_rsa = 1;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_rsa = 0;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_rsa = 0;
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 1;
|
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_crypto = 0;
|
|
||||||
|
|
||||||
// Clear reset on digital signature and ECDSA, otherwise RSA is held in reset
|
// Clear reset on digital signature and ECDSA, otherwise RSA is held in reset
|
||||||
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ds = 0;
|
HP_SYS_CLKRST.hp_rst_en2.reg_rst_en_ds = 0;
|
||||||
|
Reference in New Issue
Block a user