xref: /rk3399_ARM-atf/plat/xilinx/common/plat_console.c (revision 238eb542bb746a776de82236dd25b7ae5876b743)
139234622SPrasad Kummari /*
239234622SPrasad Kummari  * Copyright (c) 2023, Advanced Micro Devices, Inc. All rights reserved.
339234622SPrasad Kummari  *
439234622SPrasad Kummari  * SPDX-License-Identifier: BSD-3-Clause
539234622SPrasad Kummari  */
639234622SPrasad Kummari 
739234622SPrasad Kummari #include <assert.h>
839234622SPrasad Kummari #include <errno.h>
939234622SPrasad Kummari #include <stdlib.h>
1039234622SPrasad Kummari #include <string.h>
1139234622SPrasad Kummari 
1239234622SPrasad Kummari #include <common/debug.h>
1339234622SPrasad Kummari #include <common/fdt_fixup.h>
1439234622SPrasad Kummari #include <common/fdt_wrappers.h>
1539234622SPrasad Kummari #include <drivers/arm/dcc.h>
1639234622SPrasad Kummari #include <drivers/arm/pl011.h>
1739234622SPrasad Kummari #include <drivers/cadence/cdns_uart.h>
1839234622SPrasad Kummari #include <drivers/console.h>
1939234622SPrasad Kummari #include <libfdt.h>
2039234622SPrasad Kummari #include <plat_console.h>
21e2d9dfe2SPrasad Kummari #include <plat_fdt.h>
2239234622SPrasad Kummari 
2339234622SPrasad Kummari #include <platform_def.h>
2439234622SPrasad Kummari #include <plat_private.h>
2539234622SPrasad Kummari 
26a542b9c1SPrasad Kummari static console_t boot_console;
2739234622SPrasad Kummari 
2839234622SPrasad Kummari #if (defined(XILINX_OF_BOARD_DTB_ADDR) && !IS_TFA_IN_OCM(BL31_BASE))
2939234622SPrasad Kummari /**
3039234622SPrasad Kummari  * get_baudrate() - Get the baudrate form DTB.
3139234622SPrasad Kummari  * @dtb: Address of the Device Tree Blob (DTB).
3239234622SPrasad Kummari  *
3339234622SPrasad Kummari  * Return: On success returns the baudrate; on failure returns an error.
3439234622SPrasad Kummari  */
3539234622SPrasad Kummari static int32_t get_baudrate(void *dtb)
3639234622SPrasad Kummari {
3739234622SPrasad Kummari 	int node;
3839234622SPrasad Kummari 	int32_t ret = 0;
3939234622SPrasad Kummari 	const char *prop, *path;
4039234622SPrasad Kummari 	char *end;
4139234622SPrasad Kummari 	int32_t baud_rate = 0;
4239234622SPrasad Kummari 
4339234622SPrasad Kummari 	node = fdt_path_offset(dtb, "/secure-chosen");
4439234622SPrasad Kummari 	if (node < 0) {
4539234622SPrasad Kummari 		node = fdt_path_offset(dtb, "/chosen");
4639234622SPrasad Kummari 		if (node < 0) {
4739234622SPrasad Kummari 			ret = -FDT_ERR_NOTFOUND;
4839234622SPrasad Kummari 			goto error;
4939234622SPrasad Kummari 		}
5039234622SPrasad Kummari 	}
5139234622SPrasad Kummari 
5239234622SPrasad Kummari 	prop = fdt_getprop(dtb, node, "stdout-path", NULL);
5339234622SPrasad Kummari 	if (prop == NULL) {
5439234622SPrasad Kummari 		ret = -FDT_ERR_NOTFOUND;
5539234622SPrasad Kummari 		goto error;
5639234622SPrasad Kummari 	}
5739234622SPrasad Kummari 
5839234622SPrasad Kummari 	/* Parse string serial0:115200n8 */
5939234622SPrasad Kummari 	path = strchr(prop, ':');
6039234622SPrasad Kummari 	if (!path) {
6139234622SPrasad Kummari 		ret = -FDT_ERR_NOTFOUND;
6239234622SPrasad Kummari 		goto error;
6339234622SPrasad Kummari 	} else {
6439234622SPrasad Kummari 
6539234622SPrasad Kummari 		baud_rate = strtoul(path + 1, &end, 10);
6639234622SPrasad Kummari 		if (baud_rate == 0 && end == path) {
6739234622SPrasad Kummari 			ERROR("Conversion error occurred: %d\n", baud_rate);
6839234622SPrasad Kummari 			ret = -FDT_ERR_NOTFOUND;
6939234622SPrasad Kummari 			goto error;
7039234622SPrasad Kummari 		}
7139234622SPrasad Kummari 		ret = baud_rate;
7239234622SPrasad Kummari 	}
7339234622SPrasad Kummari 
7439234622SPrasad Kummari error:
7539234622SPrasad Kummari 	return ret;
7639234622SPrasad Kummari }
7739234622SPrasad Kummari 
7839234622SPrasad Kummari /**
7939234622SPrasad Kummari  * get_node_status() - Get the DTB node status.
8039234622SPrasad Kummari  * @dtb: Address of the Device Tree Blob (DTB).
8139234622SPrasad Kummari  * @node: Node address in the device tree.
8239234622SPrasad Kummari  *
8339234622SPrasad Kummari  * Return: On success, it returns 1; on failure, it returns an 0.
8439234622SPrasad Kummari  */
8539234622SPrasad Kummari static uint32_t get_node_status(void *dtb, int node)
8639234622SPrasad Kummari {
8739234622SPrasad Kummari 	const char *status_cell;
8839234622SPrasad Kummari 	uint32_t status = 0;
8939234622SPrasad Kummari 
9039234622SPrasad Kummari 	status_cell = fdt_getprop(dtb, node, "status", NULL);
9139234622SPrasad Kummari 	if (!status_cell || strcmp(status_cell, "okay") == 0) {
9239234622SPrasad Kummari 		status = 1;
9339234622SPrasad Kummari 	} else {
9439234622SPrasad Kummari 		status = 0;
9539234622SPrasad Kummari 	}
9639234622SPrasad Kummari 
9739234622SPrasad Kummari 	return status;
9839234622SPrasad Kummari }
9939234622SPrasad Kummari 
10039234622SPrasad Kummari /**
10139234622SPrasad Kummari  * fdt_add_uart_info() - Add DTB information to a UART structure.
10239234622SPrasad Kummari  * @info: Pointer to the UART information structure.
10339234622SPrasad Kummari  * @node: Node address in the device tree.
10439234622SPrasad Kummari  * @dtb: Address of the Device Tree Blob(DTB).
10539234622SPrasad Kummari  *
10639234622SPrasad Kummari  * Return: On success, it returns 1; on failure, it returns an 0.
10739234622SPrasad Kummari  */
10839234622SPrasad Kummari static uint32_t fdt_add_uart_info(dt_uart_info_t *info, int node, void *dtb)
10939234622SPrasad Kummari {
11039234622SPrasad Kummari 	uintptr_t base_addr;
11139234622SPrasad Kummari 	const char *com;
1128eb6a1daSPrasad Kummari 	int32_t ret = 0;
11339234622SPrasad Kummari 
11439234622SPrasad Kummari 	com = fdt_getprop(dtb, node, "compatible", NULL);
11539234622SPrasad Kummari 	if (com != NULL) {
11639234622SPrasad Kummari 		strlcpy(info->compatible, com, sizeof(info->compatible));
11739234622SPrasad Kummari 	} else {
11839234622SPrasad Kummari 		ERROR("Compatible property not found in DTB node\n");
11939234622SPrasad Kummari 		ret  = -FDT_ERR_NOTFOUND;
12039234622SPrasad Kummari 		goto error;
12139234622SPrasad Kummari 	}
12239234622SPrasad Kummari 
123d989229bSPrasad Kummari 	info->status = get_node_status(dtb, node);
124d989229bSPrasad Kummari 	if (info->status == 0) {
125d989229bSPrasad Kummari 		ERROR("Uart node is disabled in DTB\n");
126d989229bSPrasad Kummari 		ret  = -FDT_ERR_NOTFOUND;
127d989229bSPrasad Kummari 		goto error;
128d989229bSPrasad Kummari 	}
129d989229bSPrasad Kummari 
130d989229bSPrasad Kummari 	if (strncmp(info->compatible, DT_UART_DCC_COMPAT, strlen(DT_UART_DCC_COMPAT)) != 0) {
13139234622SPrasad Kummari 		ret = fdt_get_reg_props_by_index(dtb, node, 0, &base_addr, NULL);
13239234622SPrasad Kummari 		if (ret >= 0) {
13339234622SPrasad Kummari 			info->base = base_addr;
13439234622SPrasad Kummari 		} else {
13539234622SPrasad Kummari 			ERROR("Failed to retrieve base address. Error code: %d\n", ret);
13639234622SPrasad Kummari 			ret  = -FDT_ERR_NOTFOUND;
13739234622SPrasad Kummari 			goto error;
13839234622SPrasad Kummari 		}
13939234622SPrasad Kummari 
14039234622SPrasad Kummari 		info->baud_rate = get_baudrate(dtb);
141d989229bSPrasad Kummari 	}
14239234622SPrasad Kummari 
14339234622SPrasad Kummari error:
14439234622SPrasad Kummari 	return ret;
14539234622SPrasad Kummari }
14639234622SPrasad Kummari 
14739234622SPrasad Kummari /**
14839234622SPrasad Kummari  * fdt_get_uart_info() - Get the uart information form DTB.
14939234622SPrasad Kummari  * @info: Pointer to the UART information structure.
15039234622SPrasad Kummari  *
15139234622SPrasad Kummari  * Return: On success, it returns 0; on failure, it returns an error+reason.
15239234622SPrasad Kummari  */
15339234622SPrasad Kummari static int fdt_get_uart_info(dt_uart_info_t *info)
15439234622SPrasad Kummari {
1558eb6a1daSPrasad Kummari 	int node = 0, ret = 0;
15639234622SPrasad Kummari 	void *dtb = (void *)XILINX_OF_BOARD_DTB_ADDR;
15739234622SPrasad Kummari 
158e2d9dfe2SPrasad Kummari 	ret = is_valid_dtb(dtb);
15939234622SPrasad Kummari 	if (ret < 0) {
16039234622SPrasad Kummari 		ERROR("Invalid Device Tree at %p: error %d\n", dtb, ret);
16139234622SPrasad Kummari 		ret  = -FDT_ERR_NOTFOUND;
16239234622SPrasad Kummari 		goto error;
16339234622SPrasad Kummari 	}
16439234622SPrasad Kummari 
16539234622SPrasad Kummari 	node = fdt_get_stdout_node_offset(dtb);
16639234622SPrasad Kummari 	if (node < 0) {
16739234622SPrasad Kummari 		ERROR("DT get stdout node failed : %d\n", node);
16839234622SPrasad Kummari 		ret  = -FDT_ERR_NOTFOUND;
16939234622SPrasad Kummari 		goto error;
17039234622SPrasad Kummari 	}
17139234622SPrasad Kummari 
17239234622SPrasad Kummari 	ret = fdt_add_uart_info(info, node, dtb);
17339234622SPrasad Kummari 	if (ret < 0) {
17439234622SPrasad Kummari 		ERROR("Failed to add DT UART info: %d\n", ret);
17539234622SPrasad Kummari 		ret  = -FDT_ERR_NOTFOUND;
17639234622SPrasad Kummari 		goto error;
17739234622SPrasad Kummari 	}
17839234622SPrasad Kummari 
17939234622SPrasad Kummari error:
18039234622SPrasad Kummari 	return ret;
18139234622SPrasad Kummari }
18239234622SPrasad Kummari 
18339234622SPrasad Kummari /**
18439234622SPrasad Kummari  * check_fdt_uart_info() - Check early uart info with DTB uart info.
18539234622SPrasad Kummari  * @info: Pointer to the UART information structure.
18639234622SPrasad Kummari  *
18739234622SPrasad Kummari  * Return: On success, it returns 0; on failure, it returns an error+reason.
18839234622SPrasad Kummari  */
1898eb6a1daSPrasad Kummari static int32_t check_fdt_uart_info(dt_uart_info_t *info)
19039234622SPrasad Kummari {
1918eb6a1daSPrasad Kummari 	int32_t ret = 0;
19239234622SPrasad Kummari 
19339234622SPrasad Kummari 	if (info->status == 0) {
19439234622SPrasad Kummari 		ret = -ENODEV;
19539234622SPrasad Kummari 		goto error;
19639234622SPrasad Kummari 	}
19739234622SPrasad Kummari 
198a542b9c1SPrasad Kummari 	if ((info->base == boot_console.base) &&
19939234622SPrasad Kummari 	   (info->baud_rate == UART_BAUDRATE) && !CONSOLE_IS(dcc)) {
20039234622SPrasad Kummari 		ret = -ENODEV;
20139234622SPrasad Kummari 		goto error;
20239234622SPrasad Kummari 	}
20339234622SPrasad Kummari 
20439234622SPrasad Kummari error:
20539234622SPrasad Kummari 	return ret;
20639234622SPrasad Kummari }
20739234622SPrasad Kummari 
20839234622SPrasad Kummari /**
209a542b9c1SPrasad Kummari  * console_end() - Unregister the console_t instance form the console list.
210a542b9c1SPrasad Kummari  * @console: Pointer to the console information structure.
21139234622SPrasad Kummari  */
212a542b9c1SPrasad Kummari static void console_end(console_t *console)
21339234622SPrasad Kummari {
21439234622SPrasad Kummari 	if (CONSOLE_IS(dcc)) {
215*238eb542SMaheedhar Bollapalli 		console_dcc_unregister(console);
21639234622SPrasad Kummari 	} else {
217a542b9c1SPrasad Kummari 		if (console != NULL) {
21839234622SPrasad Kummari 			console_flush();
219a542b9c1SPrasad Kummari 			(void)console_unregister(console);
220a542b9c1SPrasad Kummari 		}
22139234622SPrasad Kummari 	}
22239234622SPrasad Kummari }
22339234622SPrasad Kummari 
22439234622SPrasad Kummari /**
225f84a4c5cSPrasad Kummari  * register_console() - Registers the runtime uart with console list.
226f84a4c5cSPrasad Kummari  * @uart_base: UART base address
22739234622SPrasad Kummari  * @clock: UART clock.
228f84a4c5cSPrasad Kummari  * @baud_rate: UART buad rate
229f84a4c5cSPrasad Kummari  * @console: Pointer to the console information structure.
230f84a4c5cSPrasad Kummari  * @flags: console flags.
23139234622SPrasad Kummari  */
232f84a4c5cSPrasad Kummari static void register_console(uintptr_t uart_base, uint32_t clock,
233f84a4c5cSPrasad Kummari 			     uint32_t baud_rate, console_t *console,
234f84a4c5cSPrasad Kummari 			     uint32_t flags)
23539234622SPrasad Kummari {
2368eb6a1daSPrasad Kummari 	int32_t rc;
23739234622SPrasad Kummari 
23839234622SPrasad Kummari #if defined(PLAT_zynqmp)
239f84a4c5cSPrasad Kummari 	rc = console_cdns_register(uart_base,
24039234622SPrasad Kummari 				   clock,
241f84a4c5cSPrasad Kummari 				   baud_rate,
242f84a4c5cSPrasad Kummari 				   console);
24339234622SPrasad Kummari #else
244f84a4c5cSPrasad Kummari 	rc = console_pl011_register(uart_base,
24539234622SPrasad Kummari 				    clock,
246f84a4c5cSPrasad Kummari 				    baud_rate,
247f84a4c5cSPrasad Kummari 				    console);
24839234622SPrasad Kummari #endif
24939234622SPrasad Kummari 	if (rc == 0) {
25039234622SPrasad Kummari 		panic();
25139234622SPrasad Kummari 	}
25239234622SPrasad Kummari 
253f84a4c5cSPrasad Kummari 	console_set_scope(console, flags);
25439234622SPrasad Kummari }
25539234622SPrasad Kummari 
25639234622SPrasad Kummari /**
257d989229bSPrasad Kummari  * parse_uart_info() - Parse UART information from Device Tree Blob.
258d989229bSPrasad Kummari  * @uart_info: Pointer to the UART information structure.
259d989229bSPrasad Kummari  *
260d989229bSPrasad Kummari  * Return: On success, it returns 0; on failure, it returns an error+reason;
261d989229bSPrasad Kummari  */
262d989229bSPrasad Kummari static int32_t parse_uart_info(dt_uart_info_t *uart_info)
263d989229bSPrasad Kummari {
264d989229bSPrasad Kummari 	int32_t rc = fdt_get_uart_info(uart_info);
265d989229bSPrasad Kummari 
266d989229bSPrasad Kummari 	if (rc < 0) {
267d989229bSPrasad Kummari 		rc = -FDT_ERR_NOTFOUND;
268d989229bSPrasad Kummari 	}
269d989229bSPrasad Kummari 	return rc;
270d989229bSPrasad Kummari }
271d989229bSPrasad Kummari 
272d989229bSPrasad Kummari /**
273d989229bSPrasad Kummari  * handle_dt_console() - Registers the DT console
274d989229bSPrasad Kummari  * @uart_info: Pointer to the UART information structure.
275d989229bSPrasad Kummari  * @console: Pointer to the console information structure.
276d989229bSPrasad Kummari  * @clock: UART clock.
277d989229bSPrasad Kummari  * @end_console: Pointer to the console information structure.
278d989229bSPrasad Kummari  */
279d989229bSPrasad Kummari static void handle_dt_console(dt_uart_info_t *uart_info, console_t *console,
280d989229bSPrasad Kummari 		uint32_t clock, console_t *end_console)
281d989229bSPrasad Kummari {
282d989229bSPrasad Kummari 	register_console(uart_info->base, clock, uart_info->baud_rate,
283d989229bSPrasad Kummari 			console,  CONSOLE_FLAG_BOOT |
284d989229bSPrasad Kummari 			CONSOLE_FLAG_RUNTIME | CONSOLE_FLAG_CRASH);
285d989229bSPrasad Kummari 	console_end(end_console);
286d989229bSPrasad Kummari 	INFO("DTB console setup\n");
287d989229bSPrasad Kummari }
288d989229bSPrasad Kummari 
289d989229bSPrasad Kummari 
290d989229bSPrasad Kummari /**
291d989229bSPrasad Kummari  * handle_dcc_console() - Registers the DCC console
292d989229bSPrasad Kummari  * @console: Pointer to the console information structure.
293d989229bSPrasad Kummari  */
294d989229bSPrasad Kummari static void handle_dcc_console(console_t *console)
295d989229bSPrasad Kummari {
296*238eb542SMaheedhar Bollapalli 	int32_t rc = console_dcc_register(console);
297d989229bSPrasad Kummari 
298d989229bSPrasad Kummari 	if (rc == 0) {
299d989229bSPrasad Kummari 		panic();
300d989229bSPrasad Kummari 	}
301d989229bSPrasad Kummari 	console_end(console);
302d989229bSPrasad Kummari }
303d989229bSPrasad Kummari 
304d989229bSPrasad Kummari /**
30500a68427SPrasad Kummari  * dt_console_init() - Initializes the DT console information.
30639234622SPrasad Kummari  * @uart_info: Pointer to the UART information structure.
307a542b9c1SPrasad Kummari  * @console: Pointer to the console information structure.
30839234622SPrasad Kummari  * @clock: UART clock.
30939234622SPrasad Kummari  *
31039234622SPrasad Kummari  * Return: On success, it returns 0; on failure, it returns an error+reason;
31139234622SPrasad Kummari  */
31200a68427SPrasad Kummari static int32_t dt_console_init(dt_uart_info_t *uart_info,
313a542b9c1SPrasad Kummari 			  console_t *console,
31439234622SPrasad Kummari 			  uint32_t clock)
31539234622SPrasad Kummari {
31639234622SPrasad Kummari 	int32_t rc = 0;
317f84a4c5cSPrasad Kummari 	static console_t dt_console;
31839234622SPrasad Kummari 
31939234622SPrasad Kummari 	/* Parse UART information from Device Tree Blob (DTB) */
320d989229bSPrasad Kummari 	rc = parse_uart_info(uart_info);
32139234622SPrasad Kummari 	if (rc < 0) {
322d989229bSPrasad Kummari 		goto error;
323d989229bSPrasad Kummari 	}
324d989229bSPrasad Kummari 
325d989229bSPrasad Kummari 	rc = check_fdt_uart_info(uart_info);
326d989229bSPrasad Kummari 	if (rc < 0) {
3278eb6a1daSPrasad Kummari 		goto error;
32839234622SPrasad Kummari 	}
32939234622SPrasad Kummari 
33039234622SPrasad Kummari 	if (strncmp(uart_info->compatible, DT_UART_COMPAT,
33139234622SPrasad Kummari 		    strlen(DT_UART_COMPAT)) == 0) {
332d989229bSPrasad Kummari 		handle_dt_console(uart_info, &dt_console, clock, console);
33339234622SPrasad Kummari 	} else if (strncmp(uart_info->compatible, DT_UART_DCC_COMPAT,
33439234622SPrasad Kummari 			strlen(DT_UART_DCC_COMPAT)) == 0) {
335d989229bSPrasad Kummari 		handle_dcc_console(console);
33639234622SPrasad Kummari 	} else {
33739234622SPrasad Kummari 		WARN("BL31: No console device found in DT.\n");
33839234622SPrasad Kummari 	}
33939234622SPrasad Kummari 
3408eb6a1daSPrasad Kummari error:
34139234622SPrasad Kummari 	return rc;
34239234622SPrasad Kummari }
34339234622SPrasad Kummari #endif
34439234622SPrasad Kummari 
34539234622SPrasad Kummari void setup_console(void)
34639234622SPrasad Kummari {
3478eb6a1daSPrasad Kummari 	int32_t rc;
34839234622SPrasad Kummari 	uint32_t uart_clk = get_uart_clk();
34939234622SPrasad Kummari 
35039234622SPrasad Kummari #if defined(PLAT_zynqmp)
35139234622SPrasad Kummari 	if (CONSOLE_IS(cadence) || (CONSOLE_IS(cadence1))) {
35239234622SPrasad Kummari 		rc = console_cdns_register(UART_BASE,
35339234622SPrasad Kummari 					   uart_clk,
35439234622SPrasad Kummari 					   UART_BAUDRATE,
355a542b9c1SPrasad Kummari 					   &boot_console);
35639234622SPrasad Kummari 		if (rc == 0) {
35739234622SPrasad Kummari 			panic();
35839234622SPrasad Kummari 		}
35939234622SPrasad Kummari 
360a542b9c1SPrasad Kummari 		console_set_scope(&boot_console, CONSOLE_FLAG_BOOT |
36139234622SPrasad Kummari 				  CONSOLE_FLAG_RUNTIME | CONSOLE_FLAG_CRASH);
36239234622SPrasad Kummari 	}
36339234622SPrasad Kummari #else
36439234622SPrasad Kummari 	if (CONSOLE_IS(pl011) || (CONSOLE_IS(pl011_1))) {
36539234622SPrasad Kummari 		/* Initialize the console to provide early debug support */
36639234622SPrasad Kummari 		rc = console_pl011_register((uint32_t)UART_BASE,
36739234622SPrasad Kummari 					   uart_clk,
36839234622SPrasad Kummari 					   (uint32_t)UART_BAUDRATE,
369a542b9c1SPrasad Kummari 					   &boot_console);
37039234622SPrasad Kummari 		if (rc == 0) {
37139234622SPrasad Kummari 			panic();
37239234622SPrasad Kummari 		}
37339234622SPrasad Kummari 
374a542b9c1SPrasad Kummari 		console_set_scope(&boot_console, CONSOLE_FLAG_BOOT |
37539234622SPrasad Kummari 				  CONSOLE_FLAG_RUNTIME | CONSOLE_FLAG_CRASH);
37639234622SPrasad Kummari 	}
37739234622SPrasad Kummari #endif
37839234622SPrasad Kummari 	if (CONSOLE_IS(dcc)) {
37939234622SPrasad Kummari 		/* Initialize the dcc console for debug */
380*238eb542SMaheedhar Bollapalli 		rc = console_dcc_register(&boot_console);
38139234622SPrasad Kummari 		if (rc == 0) {
38239234622SPrasad Kummari 			panic();
38339234622SPrasad Kummari 		}
38439234622SPrasad Kummari 	}
38539234622SPrasad Kummari 	INFO("BL31: Early console setup\n");
38639234622SPrasad Kummari 
38739234622SPrasad Kummari #if (defined(XILINX_OF_BOARD_DTB_ADDR) && !IS_TFA_IN_OCM(BL31_BASE))
38839234622SPrasad Kummari 	static dt_uart_info_t uart_info = {0};
38939234622SPrasad Kummari 
39000a68427SPrasad Kummari 	/* Initialize the DTB console using UART information from the DTB */
391a542b9c1SPrasad Kummari 	rc = dt_console_init(&uart_info, &boot_console, uart_clk);
39239234622SPrasad Kummari 	if (rc < 0) {
39300a68427SPrasad Kummari 		ERROR("Failed to initialize DT console: %d\n", rc);
39439234622SPrasad Kummari 	}
39539234622SPrasad Kummari #endif
39639234622SPrasad Kummari }
397