xref: /rk3399_ARM-atf/plat/rpi/common/rpi3_console_dual.c (revision 5318255f12f88c91846b7261ce12254fb8395557)
1*b5029782SMario Bălănică /*
2*b5029782SMario Bălănică  * Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved.
3*b5029782SMario Bălănică  * Copyright (c) 2024, Mario Bălănică <mariobalanica02@gmail.com>
4*b5029782SMario Bălănică  *
5*b5029782SMario Bălănică  * SPDX-License-Identifier: BSD-3-Clause
6*b5029782SMario Bălănică  */
7*b5029782SMario Bălănică 
8*b5029782SMario Bălănică #include <drivers/arm/pl011.h>
9*b5029782SMario Bălănică #include <drivers/console.h>
10*b5029782SMario Bălănică #include <drivers/rpi3/gpio/rpi3_gpio.h>
11*b5029782SMario Bălănică #include <drivers/ti/uart/uart_16550.h>
12*b5029782SMario Bălănică #include <platform_def.h>
13*b5029782SMario Bălănică 
14*b5029782SMario Bălănică #include <rpi_shared.h>
15*b5029782SMario Bălănică 
rpi3_use_mini_uart(void)16*b5029782SMario Bălănică static bool rpi3_use_mini_uart(void)
17*b5029782SMario Bălănică {
18*b5029782SMario Bălănică 	return rpi3_gpio_get_select(14) == RPI3_GPIO_FUNC_ALT5;
19*b5029782SMario Bălănică }
20*b5029782SMario Bălănică 
rpi3_register_used_uart(console_t * console)21*b5029782SMario Bălănică int rpi3_register_used_uart(console_t *console)
22*b5029782SMario Bălănică {
23*b5029782SMario Bălănică 	rpi3_gpio_init();
24*b5029782SMario Bălănică 
25*b5029782SMario Bălănică 	if (rpi3_use_mini_uart())
26*b5029782SMario Bălănică 		return console_16550_register(PLAT_RPI_MINI_UART_BASE,
27*b5029782SMario Bălănică 					      0,
28*b5029782SMario Bălănică 					      PLAT_RPI_UART_BAUDRATE,
29*b5029782SMario Bălănică 					      console);
30*b5029782SMario Bălănică 	else
31*b5029782SMario Bălănică 		return console_pl011_register(PLAT_RPI_PL011_UART_BASE,
32*b5029782SMario Bălănică 					      PLAT_RPI_PL011_UART_CLOCK,
33*b5029782SMario Bălănică 					      PLAT_RPI_UART_BAUDRATE,
34*b5029782SMario Bălănică 					      console);
35*b5029782SMario Bălănică }
36