1a2847172SGrzegorz Jaszczyk /* 2831b0e98SJimmy 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> 17*5a91c439SPali Rohár #define PLAT_MARVELL_UART_CLK_IN_HZ (get_ref_clk() * 1000000) 18a2847172SGrzegorz Jaszczyk #define console_marvell_register console_a3700_register 19a2847172SGrzegorz Jaszczyk #else 20a2847172SGrzegorz Jaszczyk #include <drivers/ti/uart/uart_16550.h> 21a2847172SGrzegorz Jaszczyk #define console_marvell_register console_16550_register 22a2847172SGrzegorz Jaszczyk #endif 23a2847172SGrzegorz Jaszczyk 24a2847172SGrzegorz Jaszczyk static console_t marvell_boot_console; 25a2847172SGrzegorz Jaszczyk static console_t marvell_runtime_console; 26a2847172SGrzegorz Jaszczyk 27a2847172SGrzegorz Jaszczyk /******************************************************************************* 28a2847172SGrzegorz Jaszczyk * Functions that set up the console 29a2847172SGrzegorz Jaszczyk ******************************************************************************/ 30a2847172SGrzegorz Jaszczyk 31a2847172SGrzegorz Jaszczyk /* Initialize the console to provide early debug support */ 32a2847172SGrzegorz Jaszczyk void marvell_console_boot_init(void) 33a2847172SGrzegorz Jaszczyk { 34a2847172SGrzegorz Jaszczyk int rc = 3531336258SPali Rohár console_marvell_register(PLAT_MARVELL_UART_BASE, 3631336258SPali Rohár PLAT_MARVELL_UART_CLK_IN_HZ, 37a2847172SGrzegorz Jaszczyk MARVELL_CONSOLE_BAUDRATE, 38a2847172SGrzegorz Jaszczyk &marvell_boot_console); 39a2847172SGrzegorz Jaszczyk if (rc == 0) { 40a2847172SGrzegorz Jaszczyk /* 41a2847172SGrzegorz Jaszczyk * The crash console doesn't use the multi console API, it uses 42a2847172SGrzegorz Jaszczyk * the core console functions directly. It is safe to call panic 43a2847172SGrzegorz Jaszczyk * and let it print debug information. 44a2847172SGrzegorz Jaszczyk */ 45a2847172SGrzegorz Jaszczyk panic(); 46a2847172SGrzegorz Jaszczyk } 47a2847172SGrzegorz Jaszczyk 48a2847172SGrzegorz Jaszczyk console_set_scope(&marvell_boot_console, CONSOLE_FLAG_BOOT); 49a2847172SGrzegorz Jaszczyk } 50a2847172SGrzegorz Jaszczyk 51a2847172SGrzegorz Jaszczyk void marvell_console_boot_end(void) 52a2847172SGrzegorz Jaszczyk { 53831b0e98SJimmy Brisson console_flush(); 54a2847172SGrzegorz Jaszczyk 55a2847172SGrzegorz Jaszczyk (void)console_unregister(&marvell_boot_console); 56a2847172SGrzegorz Jaszczyk } 57a2847172SGrzegorz Jaszczyk 58a2847172SGrzegorz Jaszczyk /* Initialize the runtime console */ 59a2847172SGrzegorz Jaszczyk void marvell_console_runtime_init(void) 60a2847172SGrzegorz Jaszczyk { 61a2847172SGrzegorz Jaszczyk int rc = 6231336258SPali Rohár console_marvell_register(PLAT_MARVELL_UART_BASE, 6331336258SPali Rohár PLAT_MARVELL_UART_CLK_IN_HZ, 64a2847172SGrzegorz Jaszczyk MARVELL_CONSOLE_BAUDRATE, 65a2847172SGrzegorz Jaszczyk &marvell_runtime_console); 66a2847172SGrzegorz Jaszczyk if (rc == 0) 67a2847172SGrzegorz Jaszczyk panic(); 68a2847172SGrzegorz Jaszczyk 69a2847172SGrzegorz Jaszczyk console_set_scope(&marvell_runtime_console, CONSOLE_FLAG_RUNTIME); 70a2847172SGrzegorz Jaszczyk } 71a2847172SGrzegorz Jaszczyk 72a2847172SGrzegorz Jaszczyk void marvell_console_runtime_end(void) 73a2847172SGrzegorz Jaszczyk { 74831b0e98SJimmy Brisson console_flush(); 75a2847172SGrzegorz Jaszczyk 76a2847172SGrzegorz Jaszczyk (void)console_unregister(&marvell_runtime_console); 77a2847172SGrzegorz Jaszczyk } 78