Commit f700423c authored by Lionel Debieve's avatar Lionel Debieve
Browse files

bsec: move bsec_mode_is_closed_device() service to platform



This BSEC service is a platform specific service. Implementation
moved to the platform part.
Signed-off-by: default avatarLionel Debieve <lionel.debieve@st.com>
Change-Id: I1f70ed48a446860498ed111acce01187568538c9
parent b1e0b11c
...@@ -840,22 +840,6 @@ static uint32_t bsec_power_safmem(bool power) ...@@ -840,22 +840,6 @@ static uint32_t bsec_power_safmem(bool power)
return BSEC_OK; return BSEC_OK;
} }
/*
* bsec_mode_is_closed_device: read OTP secure sub-mode.
* return: false if open_device and true of closed_device.
*/
bool bsec_mode_is_closed_device(void)
{
uint32_t value;
if ((bsec_shadow_register(DATA0_OTP) != BSEC_OK) ||
(bsec_read_otp(&value, DATA0_OTP) != BSEC_OK)) {
return true;
}
return (value & DATA0_OTP_SECURED) == DATA0_OTP_SECURED;
}
/* /*
* bsec_shadow_read_otp: Load OTP from SAFMEM and provide its value * bsec_shadow_read_otp: Load OTP from SAFMEM and provide its value
* otp_value: read value. * otp_value: read value.
...@@ -894,7 +878,7 @@ uint32_t bsec_check_nsec_access_rights(uint32_t otp) ...@@ -894,7 +878,7 @@ uint32_t bsec_check_nsec_access_rights(uint32_t otp)
if (otp >= STM32MP1_UPPER_OTP_START) { if (otp >= STM32MP1_UPPER_OTP_START) {
/* Check if BSEC is in OTP-SECURED closed_device state. */ /* Check if BSEC is in OTP-SECURED closed_device state. */
if (bsec_mode_is_closed_device()) { if (stm32mp_is_closed_device()) {
if (!non_secure_can_access(otp)) { if (!non_secure_can_access(otp)) {
return BSEC_ERROR; return BSEC_ERROR;
} }
......
...@@ -199,7 +199,6 @@ bool bsec_read_sp_lock(uint32_t otp); ...@@ -199,7 +199,6 @@ bool bsec_read_sp_lock(uint32_t otp);
bool bsec_wr_lock(uint32_t otp); bool bsec_wr_lock(uint32_t otp);
uint32_t bsec_otp_lock(uint32_t service, uint32_t value); uint32_t bsec_otp_lock(uint32_t service, uint32_t value);
bool bsec_mode_is_closed_device(void);
uint32_t bsec_shadow_read_otp(uint32_t *otp_value, uint32_t word); uint32_t bsec_shadow_read_otp(uint32_t *otp_value, uint32_t word);
uint32_t bsec_check_nsec_access_rights(uint32_t otp); uint32_t bsec_check_nsec_access_rights(uint32_t otp);
......
...@@ -19,6 +19,7 @@ void stm32mp_save_boot_ctx_address(uintptr_t address); ...@@ -19,6 +19,7 @@ void stm32mp_save_boot_ctx_address(uintptr_t address);
uintptr_t stm32mp_get_boot_ctx_address(void); uintptr_t stm32mp_get_boot_ctx_address(void);
bool stm32mp_is_single_core(void); bool stm32mp_is_single_core(void);
bool stm32mp_is_closed_device(void);
/* Return the base address of the DDR controller */ /* Return the base address of the DDR controller */
uintptr_t stm32mp_ddrctrl_base(void); uintptr_t stm32mp_ddrctrl_base(void);
......
...@@ -278,6 +278,19 @@ bool stm32mp_is_single_core(void) ...@@ -278,6 +278,19 @@ bool stm32mp_is_single_core(void)
return ret; return ret;
} }
/* Return true when device is in closed state */
bool stm32mp_is_closed_device(void)
{
uint32_t value;
if ((bsec_shadow_register(DATA0_OTP) != BSEC_OK) ||
(bsec_read_otp(&value, DATA0_OTP) != BSEC_OK)) {
return true;
}
return (value & DATA0_OTP_SECURED) == DATA0_OTP_SECURED;
}
uint32_t stm32_iwdg_get_instance(uintptr_t base) uint32_t stm32_iwdg_get_instance(uintptr_t base)
{ {
switch (base) { switch (base) {
......
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