xref: /rk3399_ARM-atf/plat/ti/k3low/common/am62l_bl31_setup.c (revision d1a1abeca9bcd40d313ead4ae6ad0ee87d5e1f96)
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 
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