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