Merge changes from topic "st-uart-baudrate" into integration

* changes:
  refactor(st): configure UART baudrate
  docs(stm32mp1): document some compilation flags
  feat(st-uart): manage oversampling by 8
  fix(st-uart): correctly fill BRR register
This commit is contained in:
Madhukar Pappireddy 2022-03-06 01:23:23 +01:00 committed by TrustedFirmware Code Review
commit 8dec6481c3
5 changed files with 39 additions and 4 deletions

View File

@ -115,6 +115,24 @@ Available storage medias are:
- ``STM32MP_SPI_NAND`` - ``STM32MP_SPI_NAND``
- ``STM32MP_SPI_NOR`` - ``STM32MP_SPI_NOR``
Serial boot devices:
- ``STM32MP_UART_PROGRAMMER``
- ``STM32MP_USB_PROGRAMMER``
Other configuration flags:
- | ``DTB_FILE_NAME``: to precise board device-tree blob to be used.
| Default: stm32mp157c-ev1.dtb
- | ``STM32MP_EARLY_CONSOLE``: to enable early traces before clock driver is setup.
| Default: 0 (disabled)
- | ``STM32MP_UART_BAUDRATE``: to select UART baud rate.
| Default: 115200
- | ``STM32_TF_VERSION``: to manage BL2 monotonic counter.
| Default: 0
Boot with FIP Boot with FIP
~~~~~~~~~~~~~ ~~~~~~~~~~~~~
You need to build BL2, BL32 (SP_min or OP-TEE) and BL33 (U-Boot) before building FIP binary. You need to build BL2, BL32 (SP_min or OP-TEE) and BL33 (U-Boot) before building FIP binary.

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018-2021, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2018-2022, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
@ -67,9 +67,24 @@ func console_stm32_core_init
bic r3, r3, #USART_CR2_STOP bic r3, r3, #USART_CR2_STOP
str r3, [r0, #USART_CR2] str r3, [r0, #USART_CR2]
/* Divisor = (Uart clock + (baudrate / 2)) / baudrate */ /* Divisor = (Uart clock + (baudrate / 2)) / baudrate */
lsl r3, r2, #1 lsr r3, r2, #1
add r3, r1, r3 add r3, r1, r3
udiv r3, r3, r2 udiv r3, r3, r2
cmp r3, #16
bhi 2f
/* Oversampling 8 */
/* Divisor = (2 * Uart clock + (baudrate / 2)) / baudrate */
lsr r3, r2, #1
add r3, r3, r1, lsl #1
udiv r3, r3, r2
and r1, r3, #USART_BRR_DIV_FRACTION
lsr r1, r1, #1
bic r3, r3, #USART_BRR_DIV_FRACTION
orr r3, r3, r1
ldr r1, [r0, #USART_CR1]
orr r1, r1, #USART_CR1_OVER8
str r1, [r0, #USART_CR1]
2:
str r3, [r0, #USART_BRR] str r3, [r0, #USART_BRR]
/* Enable UART */ /* Enable UART */
ldr r3, [r0, #USART_CR1] ldr r3, [r0, #USART_CR1]

View File

@ -210,7 +210,7 @@ static void set_console(uintptr_t base, uint32_t clk_rate)
unsigned int console_flags; unsigned int console_flags;
if (console_stm32_register(base, clk_rate, if (console_stm32_register(base, clk_rate,
STM32MP_UART_BAUDRATE, &console) == 0) { (uint32_t)STM32MP_UART_BAUDRATE, &console) == 0) {
panic(); panic();
} }

View File

@ -10,6 +10,7 @@ BL2_AT_EL3 := 1
USE_COHERENT_MEM := 0 USE_COHERENT_MEM := 0
STM32MP_EARLY_CONSOLE ?= 0 STM32MP_EARLY_CONSOLE ?= 0
STM32MP_UART_BAUDRATE ?= 115200
# Allow TF-A to concatenate BL2 & BL32 binaries in a single file, # Allow TF-A to concatenate BL2 & BL32 binaries in a single file,
# share DTB file between BL2 and BL32 # share DTB file between BL2 and BL32
@ -172,6 +173,7 @@ $(eval $(call assert_numerics,\
PLAT_PARTITION_MAX_ENTRIES \ PLAT_PARTITION_MAX_ENTRIES \
STM32_TF_A_COPIES \ STM32_TF_A_COPIES \
STM32_TF_VERSION \ STM32_TF_VERSION \
STM32MP_UART_BAUDRATE \
))) )))
$(eval $(call add_defines,\ $(eval $(call add_defines,\
@ -189,6 +191,7 @@ $(eval $(call add_defines,\
STM32MP_SDMMC \ STM32MP_SDMMC \
STM32MP_SPI_NAND \ STM32MP_SPI_NAND \
STM32MP_SPI_NOR \ STM32MP_SPI_NOR \
STM32MP_UART_BAUDRATE \
STM32MP_UART_PROGRAMMER \ STM32MP_UART_PROGRAMMER \
STM32MP_USB_PROGRAMMER \ STM32MP_USB_PROGRAMMER \
STM32MP_USE_STM32IMAGE \ STM32MP_USE_STM32IMAGE \

View File

@ -202,7 +202,6 @@ enum ddr_type {
#define USART6_BASE U(0x44003000) #define USART6_BASE U(0x44003000)
#define UART7_BASE U(0x40018000) #define UART7_BASE U(0x40018000)
#define UART8_BASE U(0x40019000) #define UART8_BASE U(0x40019000)
#define STM32MP_UART_BAUDRATE U(115200)
/* For UART crash console */ /* For UART crash console */
#define STM32MP_DEBUG_USART_BASE UART4_BASE #define STM32MP_DEBUG_USART_BASE UART4_BASE