1 /*
2 * Copyright (C) 2025 Texas Instruments Incorporated - http://www.ti.com/
3 * k3low SoC specific bl31_setup
4 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8 #include <common/debug.h>
9 #include <ti_sci.h>
10 #include <ti_sci_protocol.h>
11 #include <ti_sci_transport.h>
12
13 #include <board_def.h>
14 #include <plat_private.h>
15
16 /* Table of regions to map using the MMU */
17 const mmap_region_t plat_k3_mmap[] = {
18 K3_MAP_REGION_FLAT(K3_USART_BASE, K3_USART_SIZE, MT_DEVICE | MT_RW | MT_SECURE),
19 K3_MAP_REGION_FLAT(K3_GIC_BASE, K3_GIC_SIZE, MT_DEVICE | MT_RW | MT_SECURE),
20 K3_MAP_REGION_FLAT(K3_GTC_BASE, K3_GTC_SIZE, MT_DEVICE | MT_RW | MT_SECURE),
21 K3_MAP_REGION_FLAT(TI_MAILBOX_TX_BASE, TI_MAILBOX_RX_TX_SIZE, MT_DEVICE | MT_RW | MT_SECURE),
22 K3_MAP_REGION_FLAT(WKUP_CTRL_MMR0_BASE, WKUP_CTRL_MMR0_SIZE, MT_DEVICE | MT_RW | MT_SECURE),
23 K3_MAP_REGION_FLAT(MAILBOX_SHMEM_REGION_BASE, MAILBOX_SHMEM_REGION_SIZE, MT_DEVICE | MT_RW | MT_SECURE),
24 { /* sentinel */ }
25 };
26
ti_soc_init(void)27 int ti_soc_init(void)
28 {
29 struct ti_sci_msg_version version;
30 int ret;
31
32 generic_delay_timer_init();
33
34 ret = ti_sci_boot_notification();
35 if (ret != 0) {
36 ERROR("%s: Failed to receive boot notification (%d)\n", __func__, ret);
37 return ret;
38 }
39
40 ret = ti_sci_get_revision(&version);
41 if (ret != 0) {
42 ERROR("%s: Failed to get revision (%d)\n", __func__, ret);
43 return ret;
44 }
45
46 NOTICE("SYSFW ABI: %d.%d (firmware rev 0x%04x '%s')\n",
47 version.abi_major, version.abi_minor,
48 version.firmware_revision,
49 version.firmware_description);
50
51 ret = ti_sci_proc_request(PLAT_PROC_START_ID);
52 if (ret != 0) {
53 ERROR("Unable to request host (%d)\n", ret);
54 return ret;
55 }
56
57 /* Enable ACP interface */
58 ret = ti_sci_proc_set_boot_ctrl(PLAT_PROC_START_ID, 0,
59 PROC_BOOT_CTRL_FLAG_ARMV8_AINACTS);
60 if (ret != 0) {
61 ERROR("Unable to set boot control (%d)\n", ret);
62 return ret;
63 }
64
65 return 0;
66 }
67