1*717448d6SSheetal Tigadoli /* 2*717448d6SSheetal Tigadoli * Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved. 3*717448d6SSheetal Tigadoli * 4*717448d6SSheetal Tigadoli * SPDX-License-Identifier: BSD-3-Clause 5*717448d6SSheetal Tigadoli */ 6*717448d6SSheetal Tigadoli 7*717448d6SSheetal Tigadoli #include <assert.h> 8*717448d6SSheetal Tigadoli 9*717448d6SSheetal Tigadoli #include <common/debug.h> 10*717448d6SSheetal Tigadoli #include <drivers/console.h> 11*717448d6SSheetal Tigadoli #include <drivers/ti/uart/uart_16550.h> 12*717448d6SSheetal Tigadoli 13*717448d6SSheetal Tigadoli #include <platform_def.h> 14*717448d6SSheetal Tigadoli 15*717448d6SSheetal Tigadoli /******************************************************************************* 16*717448d6SSheetal Tigadoli * Functions that set up the console 17*717448d6SSheetal Tigadoli ******************************************************************************/ 18*717448d6SSheetal Tigadoli static console_t bcm_boot_console; 19*717448d6SSheetal Tigadoli static console_t bcm_runtime_console; 20*717448d6SSheetal Tigadoli 21*717448d6SSheetal Tigadoli /* Initialize the console to provide early debug support */ 22*717448d6SSheetal Tigadoli void bcm_console_boot_init(void) 23*717448d6SSheetal Tigadoli { 24*717448d6SSheetal Tigadoli int rc = console_16550_register(PLAT_BRCM_BOOT_UART_BASE, 25*717448d6SSheetal Tigadoli PLAT_BRCM_BOOT_UART_CLK_IN_HZ, 26*717448d6SSheetal Tigadoli BRCM_CONSOLE_BAUDRATE, 27*717448d6SSheetal Tigadoli &bcm_boot_console); 28*717448d6SSheetal Tigadoli if (rc == 0) { 29*717448d6SSheetal Tigadoli /* 30*717448d6SSheetal Tigadoli * The crash console doesn't use the multi console API, it uses 31*717448d6SSheetal Tigadoli * the core console functions directly. It is safe to call panic 32*717448d6SSheetal Tigadoli * and let it print debug information. 33*717448d6SSheetal Tigadoli */ 34*717448d6SSheetal Tigadoli panic(); 35*717448d6SSheetal Tigadoli } 36*717448d6SSheetal Tigadoli 37*717448d6SSheetal Tigadoli console_set_scope(&bcm_boot_console, CONSOLE_FLAG_BOOT); 38*717448d6SSheetal Tigadoli } 39*717448d6SSheetal Tigadoli 40*717448d6SSheetal Tigadoli void bcm_console_boot_end(void) 41*717448d6SSheetal Tigadoli { 42*717448d6SSheetal Tigadoli (void)console_flush(); 43*717448d6SSheetal Tigadoli 44*717448d6SSheetal Tigadoli (void)console_unregister(&bcm_boot_console); 45*717448d6SSheetal Tigadoli } 46*717448d6SSheetal Tigadoli 47*717448d6SSheetal Tigadoli /* Initialize the runtime console */ 48*717448d6SSheetal Tigadoli void bcm_console_runtime_init(void) 49*717448d6SSheetal Tigadoli { 50*717448d6SSheetal Tigadoli int rc = console_16550_register(PLAT_BRCM_BL31_RUN_UART_BASE, 51*717448d6SSheetal Tigadoli PLAT_BRCM_BL31_RUN_UART_CLK_IN_HZ, 52*717448d6SSheetal Tigadoli BRCM_CONSOLE_BAUDRATE, 53*717448d6SSheetal Tigadoli &bcm_runtime_console); 54*717448d6SSheetal Tigadoli if (rc == 0) 55*717448d6SSheetal Tigadoli panic(); 56*717448d6SSheetal Tigadoli 57*717448d6SSheetal Tigadoli console_set_scope(&bcm_runtime_console, CONSOLE_FLAG_RUNTIME); 58*717448d6SSheetal Tigadoli } 59*717448d6SSheetal Tigadoli 60*717448d6SSheetal Tigadoli void bcm_console_runtime_end(void) 61*717448d6SSheetal Tigadoli { 62*717448d6SSheetal Tigadoli (void)console_flush(); 63*717448d6SSheetal Tigadoli 64*717448d6SSheetal Tigadoli (void)console_unregister(&bcm_runtime_console); 65*717448d6SSheetal Tigadoli } 66