aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtienne Carriere <etienne.carriere@st.com>2019-03-14 09:06:37 +0100
committerJérôme Forissier <jerome.forissier@linaro.org>2019-04-11 14:52:21 +0200
commit10e4668773b515ee5731d59edfc54f75e78c61d0 (patch)
treecfd5e25e9cf35132961a2a2850d09e83623108a0
parent23b2f911c063a32264f4eb32ce83d07245c11f7a (diff)
stm32mp1: shres: set GPIO secure hardening
Set secure hardening for the GPIOZ pins according to their peripheral registration. Signed-off-by: Etienne Carriere <etienne.carriere@st.com> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
-rw-r--r--core/arch/arm/plat-stm32mp1/shared_resources.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/core/arch/arm/plat-stm32mp1/shared_resources.c b/core/arch/arm/plat-stm32mp1/shared_resources.c
index 44295a4f..bcc2b7a4 100644
--- a/core/arch/arm/plat-stm32mp1/shared_resources.c
+++ b/core/arch/arm/plat-stm32mp1/shared_resources.c
@@ -4,6 +4,7 @@
*/
#include <drivers/stm32_etzpc.h>
+#include <drivers/stm32_gpio.h>
#include <drivers/stm32mp1_etzpc.h>
#include <drivers/stm32mp1_rcc.h>
#include <dt-bindings/clock/stm32mp1-clks.h>
@@ -635,7 +636,19 @@ static void check_rcc_secure_configuration(void)
panic();
}
-static TEE_Result stm32mp1_lock_shared_resources(void)
+static void set_gpio_secure_configuration(void)
+{
+ unsigned int pin = 0;
+
+ for (pin = 0; pin < get_gpioz_nbpin(); pin++) {
+ enum stm32mp_shres shres = STM32MP1_SHRES_GPIOZ(pin);
+ bool secure = stm32mp_periph_is_secure(shres);
+
+ stm32_gpio_set_secure_cfg(GPIO_BANK_Z, pin, secure);
+ }
+}
+
+static TEE_Result stm32mp1_init_shres(void)
{
enum stm32mp_shres id = STM32MP1_SHRES_COUNT;
@@ -655,8 +668,9 @@ static TEE_Result stm32mp1_lock_shared_resources(void)
}
set_etzpc_secure_configuration();
+ set_gpio_secure_configuration();
check_rcc_secure_configuration();
return TEE_SUCCESS;
}
-driver_init_late(stm32mp1_lock_shared_resources);
+driver_init_late(stm32mp1_init_shres);