xref: /rk3399_ARM-atf/drivers/nxp/console/console_pl011.c (revision 9719e19a977df3e8bf7567b3c0e1d6b2ebc5b46f)
1*0499215eSPankaj Gupta /*
2*0499215eSPankaj Gupta  * Copyright 2021 NXP
3*0499215eSPankaj Gupta  *
4*0499215eSPankaj Gupta  * SPDX-License-Identifier: BSD-3-Clause
5*0499215eSPankaj Gupta  *
6*0499215eSPankaj Gupta  */
7*0499215eSPankaj Gupta 
8*0499215eSPankaj Gupta #include <assert.h>
9*0499215eSPankaj Gupta 
10*0499215eSPankaj Gupta #include <common/debug.h>
11*0499215eSPankaj Gupta #include <dcfg.h>
12*0499215eSPankaj Gupta #include <drivers/arm/pl011.h>
13*0499215eSPankaj Gupta #include <drivers/console.h>
14*0499215eSPankaj Gupta #include <lib/utils.h>
15*0499215eSPankaj Gupta 
16*0499215eSPankaj Gupta /*
17*0499215eSPankaj Gupta  * Perform Arm specific early platform setup. At this moment we only initialize
18*0499215eSPankaj Gupta  * the console and the memory layout.
19*0499215eSPankaj Gupta  */
plat_console_init(uintptr_t nxp_console_addr,uint32_t uart_clk_div,uint32_t baud)20*0499215eSPankaj Gupta void plat_console_init(uintptr_t nxp_console_addr, uint32_t uart_clk_div,
21*0499215eSPankaj Gupta 			uint32_t baud)
22*0499215eSPankaj Gupta {
23*0499215eSPankaj Gupta 	struct sysinfo sys;
24*0499215eSPankaj Gupta 	static console_t nxp_console;
25*0499215eSPankaj Gupta 
26*0499215eSPankaj Gupta 	zeromem(&sys, sizeof(sys));
27*0499215eSPankaj Gupta 	if (get_clocks(&sys)) {
28*0499215eSPankaj Gupta 		ERROR("System clocks are not set\n");
29*0499215eSPankaj Gupta 		panic();
30*0499215eSPankaj Gupta 	}
31*0499215eSPankaj Gupta 
32*0499215eSPankaj Gupta 	console_pl011_register(nxp_console_addr,
33*0499215eSPankaj Gupta 			      (sys.freq_platform/uart_clk_div),
34*0499215eSPankaj Gupta 			       baud, &nxp_console);
35*0499215eSPankaj Gupta }
36