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ă 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ă 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