1a2847172SGrzegorz Jaszczyk /* 2*831b0e98SJimmy Brisson * Copyright (c) 2018-2020, ARM Limited and Contributors. All rights reserved. 3a2847172SGrzegorz Jaszczyk * 4a2847172SGrzegorz Jaszczyk * SPDX-License-Identifier: BSD-3-Clause 5a2847172SGrzegorz Jaszczyk */ 6a2847172SGrzegorz Jaszczyk #include <assert.h> 7a2847172SGrzegorz Jaszczyk 8a2847172SGrzegorz Jaszczyk #include <platform_def.h> 9a2847172SGrzegorz Jaszczyk 10a2847172SGrzegorz Jaszczyk #include <common/debug.h> 11a2847172SGrzegorz Jaszczyk #include <drivers/console.h> 12a2847172SGrzegorz Jaszczyk 13a2847172SGrzegorz Jaszczyk #include <plat_marvell.h> 14a2847172SGrzegorz Jaszczyk 15a2847172SGrzegorz Jaszczyk #ifdef PLAT_a3700 16a2847172SGrzegorz Jaszczyk #include <drivers/marvell/uart/a3700_console.h> 17a2847172SGrzegorz Jaszczyk #define console_marvell_register console_a3700_register 18a2847172SGrzegorz Jaszczyk #else 19a2847172SGrzegorz Jaszczyk #include <drivers/ti/uart/uart_16550.h> 20a2847172SGrzegorz Jaszczyk #define console_marvell_register console_16550_register 21a2847172SGrzegorz Jaszczyk #endif 22a2847172SGrzegorz Jaszczyk 23a2847172SGrzegorz Jaszczyk static console_t marvell_boot_console; 24a2847172SGrzegorz Jaszczyk static console_t marvell_runtime_console; 25a2847172SGrzegorz Jaszczyk 26a2847172SGrzegorz Jaszczyk /******************************************************************************* 27a2847172SGrzegorz Jaszczyk * Functions that set up the console 28a2847172SGrzegorz Jaszczyk ******************************************************************************/ 29a2847172SGrzegorz Jaszczyk 30a2847172SGrzegorz Jaszczyk /* Initialize the console to provide early debug support */ 31a2847172SGrzegorz Jaszczyk void marvell_console_boot_init(void) 32a2847172SGrzegorz Jaszczyk { 33a2847172SGrzegorz Jaszczyk int rc = 34a2847172SGrzegorz Jaszczyk console_marvell_register(PLAT_MARVELL_BOOT_UART_BASE, 35a2847172SGrzegorz Jaszczyk PLAT_MARVELL_BOOT_UART_CLK_IN_HZ, 36a2847172SGrzegorz Jaszczyk MARVELL_CONSOLE_BAUDRATE, 37a2847172SGrzegorz Jaszczyk &marvell_boot_console); 38a2847172SGrzegorz Jaszczyk if (rc == 0) { 39a2847172SGrzegorz Jaszczyk /* 40a2847172SGrzegorz Jaszczyk * The crash console doesn't use the multi console API, it uses 41a2847172SGrzegorz Jaszczyk * the core console functions directly. It is safe to call panic 42a2847172SGrzegorz Jaszczyk * and let it print debug information. 43a2847172SGrzegorz Jaszczyk */ 44a2847172SGrzegorz Jaszczyk panic(); 45a2847172SGrzegorz Jaszczyk } 46a2847172SGrzegorz Jaszczyk 47a2847172SGrzegorz Jaszczyk console_set_scope(&marvell_boot_console, CONSOLE_FLAG_BOOT); 48a2847172SGrzegorz Jaszczyk } 49a2847172SGrzegorz Jaszczyk 50a2847172SGrzegorz Jaszczyk void marvell_console_boot_end(void) 51a2847172SGrzegorz Jaszczyk { 52*831b0e98SJimmy Brisson console_flush(); 53a2847172SGrzegorz Jaszczyk 54a2847172SGrzegorz Jaszczyk (void)console_unregister(&marvell_boot_console); 55a2847172SGrzegorz Jaszczyk } 56a2847172SGrzegorz Jaszczyk 57a2847172SGrzegorz Jaszczyk /* Initialize the runtime console */ 58a2847172SGrzegorz Jaszczyk void marvell_console_runtime_init(void) 59a2847172SGrzegorz Jaszczyk { 60a2847172SGrzegorz Jaszczyk int rc = 61a2847172SGrzegorz Jaszczyk console_marvell_register(PLAT_MARVELL_BOOT_UART_BASE, 62a2847172SGrzegorz Jaszczyk PLAT_MARVELL_BOOT_UART_CLK_IN_HZ, 63a2847172SGrzegorz Jaszczyk MARVELL_CONSOLE_BAUDRATE, 64a2847172SGrzegorz Jaszczyk &marvell_runtime_console); 65a2847172SGrzegorz Jaszczyk if (rc == 0) 66a2847172SGrzegorz Jaszczyk panic(); 67a2847172SGrzegorz Jaszczyk 68a2847172SGrzegorz Jaszczyk console_set_scope(&marvell_runtime_console, CONSOLE_FLAG_RUNTIME); 69a2847172SGrzegorz Jaszczyk } 70a2847172SGrzegorz Jaszczyk 71a2847172SGrzegorz Jaszczyk void marvell_console_runtime_end(void) 72a2847172SGrzegorz Jaszczyk { 73*831b0e98SJimmy Brisson console_flush(); 74a2847172SGrzegorz Jaszczyk 75a2847172SGrzegorz Jaszczyk (void)console_unregister(&marvell_runtime_console); 76a2847172SGrzegorz Jaszczyk } 77