xref: /rk3399_ARM-atf/plat/ti/k3low/board/am62lx-evm/board_config.c (revision 6c0c3a74dda68e7ffc8bd6c156918ddbfea7e03a)
1 /*
2  * Copyright (c) 2026, Texas Instruments Inc. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #include <arch.h>
8 #include <arch_helpers.h>
9 #include <common/bl_common.h>
10 #include <common/debug.h>
11 #include <drivers/cadence/cdns_nand.h>
12 #include <lib/mmio.h>
13 
14 #include <k3_console.h>
15 #include <plat_private.h>
16 #include <platform_def.h>
17 
18 #define PADCONF_ADDR (0x4084000)
19 #define PAD_MUXMODE_MASK GENMASK(3, 0)
20 #define PAD_PULLUPDOWN_MASK GENMASK(16, 16)
21 #define PAD_INPUTACTIVE_MASK GENMASK(18, 18)
22 #define PAD_DRVDISABLE_MASK GENMASK(21, 21)
23 
24 #define PIN_MAIN_UART0_RXD (0x01B4)
25 #define PIN_MAIN_UART0_TXD (0x01B8)
26 #define PIN_WKUP_UART0_RXD (0x0000)
27 #define PIN_WKUP_UART0_TXD (0x0004)
28 
board_init(void)29 void board_init(void)
30 {
31 	uint32_t pad_conf;
32 
33 	/* Set main UART0 pins */
34 	pad_conf = mmio_read_32(PADCONF_ADDR + PIN_MAIN_UART0_RXD);
35 	pad_conf &= ~(PAD_MUXMODE_MASK | PAD_DRVDISABLE_MASK);
36 	pad_conf |= (FIELD_PREP(PAD_PULLUPDOWN_MASK, 1) | FIELD_PREP(PAD_INPUTACTIVE_MASK, 1));
37 	mmio_write_32(PADCONF_ADDR + PIN_MAIN_UART0_RXD, pad_conf);
38 
39 	pad_conf = mmio_read_32(PADCONF_ADDR + PIN_MAIN_UART0_TXD);
40 	pad_conf &= ~(PAD_MUXMODE_MASK | PAD_DRVDISABLE_MASK | PAD_INPUTACTIVE_MASK);
41 	pad_conf |= FIELD_PREP(PAD_PULLUPDOWN_MASK, 1);
42 	mmio_write_32(PADCONF_ADDR + PIN_MAIN_UART0_TXD, pad_conf);
43 
44 	/* Set WKUP UART pins */
45 	pad_conf = mmio_read_32(PADCONF_ADDR + PIN_WKUP_UART0_RXD);
46 	pad_conf &= ~(PAD_MUXMODE_MASK | PAD_DRVDISABLE_MASK);
47 	pad_conf |= (FIELD_PREP(PAD_PULLUPDOWN_MASK, 1) | FIELD_PREP(PAD_INPUTACTIVE_MASK, 1));
48 	mmio_write_32(PADCONF_ADDR + PIN_WKUP_UART0_RXD, pad_conf);
49 
50 	pad_conf = mmio_read_32(PADCONF_ADDR + PIN_WKUP_UART0_TXD);
51 	pad_conf &= ~(PAD_MUXMODE_MASK | PAD_DRVDISABLE_MASK | PAD_INPUTACTIVE_MASK);
52 	pad_conf |= FIELD_PREP(PAD_PULLUPDOWN_MASK, 1);
53 	mmio_write_32(PADCONF_ADDR + PIN_WKUP_UART0_TXD, pad_conf);
54 
55 	/* Initialize the console to provide early debug support */
56 	k3_console_setup();
57 }
58