mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 17:44:19 +00:00
rpi: console: Autodetect Mini-UART vs. PL011 configuration
The Raspberry Pi has two different UART devices pin-muxed to GPIO 14&15: One ARM PL011 one and the 8250 compatible "Mini-UART". A dtoverlay parameter in config.txt will tell the firmware to switch between the two: it will setup the right clocks and will configure the pinmuxes accordingly. To autodetect the user's choice, we read the pinmux register and check its setting: ALT5 (0x2) means the Mini-UART is used, ALT0 (0x4) points to the PL011. Based on that we select the UART driver to initialise. This will allow console output in any case. Change-Id: I620d3ce68de6c6576599f2a405636020e1fd1376 Signed-off-by: Andre Przywara <andre.przywara@arm.com>
This commit is contained in:
parent
29e8c46066
commit
9cc3fa1b8a
2 changed files with 8 additions and 1 deletions
|
@ -13,6 +13,7 @@
|
|||
#include <common/debug.h>
|
||||
#include <bl31/interrupt_mgmt.h>
|
||||
#include <drivers/console.h>
|
||||
#include <drivers/rpi3/gpio/rpi3_gpio.h>
|
||||
#include <drivers/ti/uart/uart_16550.h>
|
||||
#include <drivers/arm/pl011.h>
|
||||
#include <lib/xlat_tables/xlat_tables_v2.h>
|
||||
|
@ -105,9 +106,10 @@ static const mmap_region_t plat_rpi3_mmap[] = {
|
|||
******************************************************************************/
|
||||
static console_t rpi3_console;
|
||||
|
||||
|
||||
static bool rpi3_use_mini_uart(void)
|
||||
{
|
||||
return true;
|
||||
return rpi3_gpio_get_select(14) == RPI3_GPIO_FUNC_ALT5;
|
||||
}
|
||||
|
||||
void rpi3_console_init(void)
|
||||
|
@ -118,6 +120,8 @@ void rpi3_console_init(void)
|
|||
if (RPI3_RUNTIME_UART != -1)
|
||||
console_scope |= CONSOLE_FLAG_RUNTIME;
|
||||
|
||||
rpi3_gpio_init();
|
||||
|
||||
if (rpi3_use_mini_uart())
|
||||
rc = console_16550_register(PLAT_RPI_MINI_UART_BASE,
|
||||
0,
|
||||
|
|
|
@ -21,6 +21,9 @@ BL31_SOURCES += lib/cpus/aarch64/cortex_a72.S \
|
|||
drivers/arm/gic/common/gic_common.c \
|
||||
drivers/arm/gic/v2/gicv2_helpers.c \
|
||||
drivers/arm/gic/v2/gicv2_main.c \
|
||||
drivers/delay_timer/delay_timer.c \
|
||||
drivers/gpio/gpio.c \
|
||||
drivers/rpi3/gpio/rpi3_gpio.c \
|
||||
plat/common/plat_gicv2.c \
|
||||
plat/rpi/rpi4/rpi4_bl31_setup.c \
|
||||
plat/rpi/common/rpi3_pm.c \
|
||||
|
|
Loading…
Add table
Reference in a new issue