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_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
~~~~~~~~~~~~~
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
*/
@ -67,9 +67,24 @@ func console_stm32_core_init
bic r3, r3, #USART_CR2_STOP
str r3, [r0, #USART_CR2]
/* Divisor = (Uart clock + (baudrate / 2)) / baudrate */
lsl r3, r2, #1
lsr r3, r2, #1
add r3, r1, r3
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]
/* Enable UART */
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;
if (console_stm32_register(base, clk_rate,
STM32MP_UART_BAUDRATE, &console) == 0) {
(uint32_t)STM32MP_UART_BAUDRATE, &console) == 0) {
panic();
}

View File

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

View File

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