1717448d6SSheetal Tigadoli /* 2717448d6SSheetal Tigadoli * Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved. 3717448d6SSheetal Tigadoli * 4717448d6SSheetal Tigadoli * SPDX-License-Identifier: BSD-3-Clause 5717448d6SSheetal Tigadoli */ 6717448d6SSheetal Tigadoli 7717448d6SSheetal Tigadoli #include <assert.h> 8717448d6SSheetal Tigadoli 9717448d6SSheetal Tigadoli #include <common/debug.h> 10717448d6SSheetal Tigadoli #include <drivers/console.h> 11717448d6SSheetal Tigadoli #include <drivers/ti/uart/uart_16550.h> 12717448d6SSheetal Tigadoli 13717448d6SSheetal Tigadoli #include <platform_def.h> 14717448d6SSheetal Tigadoli 15717448d6SSheetal Tigadoli /******************************************************************************* 16717448d6SSheetal Tigadoli * Functions that set up the console 17717448d6SSheetal Tigadoli ******************************************************************************/ 18717448d6SSheetal Tigadoli static console_t bcm_boot_console; 19717448d6SSheetal Tigadoli static console_t bcm_runtime_console; 20717448d6SSheetal Tigadoli 21717448d6SSheetal Tigadoli /* Initialize the console to provide early debug support */ 22717448d6SSheetal Tigadoli void bcm_console_boot_init(void) 23717448d6SSheetal Tigadoli { 24717448d6SSheetal Tigadoli int rc = console_16550_register(PLAT_BRCM_BOOT_UART_BASE, 25717448d6SSheetal Tigadoli PLAT_BRCM_BOOT_UART_CLK_IN_HZ, 26717448d6SSheetal Tigadoli BRCM_CONSOLE_BAUDRATE, 27717448d6SSheetal Tigadoli &bcm_boot_console); 28717448d6SSheetal Tigadoli if (rc == 0) { 29717448d6SSheetal Tigadoli /* 30717448d6SSheetal Tigadoli * The crash console doesn't use the multi console API, it uses 31717448d6SSheetal Tigadoli * the core console functions directly. It is safe to call panic 32717448d6SSheetal Tigadoli * and let it print debug information. 33717448d6SSheetal Tigadoli */ 34717448d6SSheetal Tigadoli panic(); 35717448d6SSheetal Tigadoli } 36717448d6SSheetal Tigadoli 37717448d6SSheetal Tigadoli console_set_scope(&bcm_boot_console, CONSOLE_FLAG_BOOT); 38717448d6SSheetal Tigadoli } 39717448d6SSheetal Tigadoli 40717448d6SSheetal Tigadoli void bcm_console_boot_end(void) 41717448d6SSheetal Tigadoli { 42*831b0e98SJimmy Brisson console_flush(); 43717448d6SSheetal Tigadoli 44717448d6SSheetal Tigadoli (void)console_unregister(&bcm_boot_console); 45717448d6SSheetal Tigadoli } 46717448d6SSheetal Tigadoli 47717448d6SSheetal Tigadoli /* Initialize the runtime console */ 48717448d6SSheetal Tigadoli void bcm_console_runtime_init(void) 49717448d6SSheetal Tigadoli { 50717448d6SSheetal Tigadoli int rc = console_16550_register(PLAT_BRCM_BL31_RUN_UART_BASE, 51717448d6SSheetal Tigadoli PLAT_BRCM_BL31_RUN_UART_CLK_IN_HZ, 52717448d6SSheetal Tigadoli BRCM_CONSOLE_BAUDRATE, 53717448d6SSheetal Tigadoli &bcm_runtime_console); 54717448d6SSheetal Tigadoli if (rc == 0) 55717448d6SSheetal Tigadoli panic(); 56717448d6SSheetal Tigadoli 57717448d6SSheetal Tigadoli console_set_scope(&bcm_runtime_console, CONSOLE_FLAG_RUNTIME); 58717448d6SSheetal Tigadoli } 59717448d6SSheetal Tigadoli 60717448d6SSheetal Tigadoli void bcm_console_runtime_end(void) 61717448d6SSheetal Tigadoli { 62*831b0e98SJimmy Brisson console_flush(); 63717448d6SSheetal Tigadoli 64717448d6SSheetal Tigadoli (void)console_unregister(&bcm_runtime_console); 65717448d6SSheetal Tigadoli } 66