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 */
bcm_console_boot_init(void)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
bcm_console_boot_end(void)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 */
bcm_console_runtime_init(void)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
bcm_console_runtime_end(void)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