stm32mp1: register shared resource per GPIO bank/pin
Introduce helper functions stm32mp_register_secure_gpio() and stm32mp_register_non_secure_gpio() for drivers to register a GPIO pin as secure or non-secure. These functions are stubbed when shared resource driver is not embedded in the BL image so that drivers do not bother whether they shall register or not their resources. Change-Id: I1fe98576c072ae31f75427c9ac5c9f6c4f1b6ed1 Signed-off-by: Etienne Carriere <etienne.carriere@st.com>
This commit is contained in:
parent
0651b5b77a
commit
ec8f4212ac
|
@ -29,6 +29,10 @@ void stm32mp_register_non_secure_periph(enum stm32mp_shres id);
|
||||||
void stm32mp_register_secure_periph_iomem(uintptr_t base);
|
void stm32mp_register_secure_periph_iomem(uintptr_t base);
|
||||||
void stm32mp_register_non_secure_periph_iomem(uintptr_t base);
|
void stm32mp_register_non_secure_periph_iomem(uintptr_t base);
|
||||||
|
|
||||||
|
/* Register a GPIO as secure or non-secure based on its bank and pin numbers */
|
||||||
|
void stm32mp_register_secure_gpio(unsigned int bank, unsigned int pin);
|
||||||
|
void stm32mp_register_non_secure_gpio(unsigned int bank, unsigned int pin);
|
||||||
|
|
||||||
/* Consolidate peripheral states and lock against new peripheral registering */
|
/* Consolidate peripheral states and lock against new peripheral registering */
|
||||||
void stm32mp_lock_periph_registering(void);
|
void stm32mp_lock_periph_registering(void);
|
||||||
#else
|
#else
|
||||||
|
@ -40,5 +44,15 @@ static inline
|
||||||
void stm32mp_register_non_secure_periph_iomem(uintptr_t base __unused)
|
void stm32mp_register_non_secure_periph_iomem(uintptr_t base __unused)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void stm32mp_register_secure_gpio(unsigned int bank __unused,
|
||||||
|
unsigned int pin __unused)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void stm32mp_register_non_secure_gpio(unsigned int bank __unused,
|
||||||
|
unsigned int pin __unused)
|
||||||
|
{
|
||||||
|
}
|
||||||
#endif /* STM32MP_SHARED_RESOURCES */
|
#endif /* STM32MP_SHARED_RESOURCES */
|
||||||
#endif /* STM32MP_SHARED_RESOURCES_H */
|
#endif /* STM32MP_SHARED_RESOURCES_H */
|
||||||
|
|
|
@ -311,6 +311,29 @@ void stm32mp_register_non_secure_periph_iomem(uintptr_t base)
|
||||||
register_periph_iomem(base, SHRES_NON_SECURE);
|
register_periph_iomem(base, SHRES_NON_SECURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void stm32mp_register_secure_gpio(unsigned int bank, unsigned int pin)
|
||||||
|
{
|
||||||
|
switch (bank) {
|
||||||
|
case GPIO_BANK_Z:
|
||||||
|
register_periph(STM32MP1_SHRES_GPIOZ(pin), SHRES_SECURE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
ERROR("GPIO bank %u cannot be secured\n", bank);
|
||||||
|
panic();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void stm32mp_register_non_secure_gpio(unsigned int bank, unsigned int pin)
|
||||||
|
{
|
||||||
|
switch (bank) {
|
||||||
|
case GPIO_BANK_Z:
|
||||||
|
register_periph(STM32MP1_SHRES_GPIOZ(pin), SHRES_NON_SECURE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool stm32mp_gpio_bank_is_non_secure(unsigned int bank)
|
static bool stm32mp_gpio_bank_is_non_secure(unsigned int bank)
|
||||||
{
|
{
|
||||||
unsigned int non_secure = 0U;
|
unsigned int non_secure = 0U;
|
||||||
|
|
Loading…
Reference in New Issue