diff --git a/plat/st/stm32mp1/include/stm32mp1_private.h b/plat/st/stm32mp1/include/stm32mp1_private.h index c76240d3308f7d6b60bbb819549b0c106bf3f21d..91ecc21d58d7d21b94344e6dffbf3cca2efc810f 100644 --- a/plat/st/stm32mp1/include/stm32mp1_private.h +++ b/plat/st/stm32mp1/include/stm32mp1_private.h @@ -18,6 +18,9 @@ void configure_mmu(void); void stm32mp1_arch_security_setup(void); void stm32mp1_security_setup(void); +#if STM32MP_UART_PROGRAMMER +uintptr_t get_uart_address(uint32_t instance_nb); +#endif enum boot_device_e get_boot_device(void); diff --git a/plat/st/stm32mp1/stm32mp1_private.c b/plat/st/stm32mp1/stm32mp1_private.c index 58631bdf105c813db4f704a38deece5275d9e5b4..4697d67e7b09eb83b0ae521d31d1e34af16ade70 100644 --- a/plat/st/stm32mp1/stm32mp1_private.c +++ b/plat/st/stm32mp1/stm32mp1_private.c @@ -120,6 +120,32 @@ uint32_t stm32_get_gpio_bank_offset(unsigned int bank) return bank * GPIO_BANK_OFFSET; } +#if STM32MP_UART_PROGRAMMER +/* + * UART Management + */ +static const uintptr_t stm32mp1_uart_addresses[8] = { + USART1_BASE, + USART2_BASE, + USART3_BASE, + UART4_BASE, + UART5_BASE, + USART6_BASE, + UART7_BASE, + UART8_BASE, +}; + +uintptr_t get_uart_address(uint32_t instance_nb) +{ + if ((instance_nb == 0U) || + (instance_nb > ARRAY_SIZE(stm32mp1_uart_addresses))) { + return 0U; + } + + return stm32mp1_uart_addresses[instance_nb - 1U]; +} +#endif + unsigned long stm32_get_gpio_bank_clock(unsigned int bank) { if (bank == GPIO_BANK_Z) {