xref: /rk3399_ARM-atf/plat/ti/k3low/common/am62l_bl31_setup.c (revision 987c9b042c2c3b6c92c4401a4cbeb423be7920d4)
121b14fd2SDhruva Gole /*
221b14fd2SDhruva Gole  * Copyright (C) 2025 Texas Instruments Incorporated - http://www.ti.com/
38853eba6SDhruva Gole  * k3low SoC specific bl31_setup
421b14fd2SDhruva Gole  *
521b14fd2SDhruva Gole  * SPDX-License-Identifier: BSD-3-Clause
621b14fd2SDhruva Gole  */
721b14fd2SDhruva Gole 
821b14fd2SDhruva Gole #include <common/debug.h>
921b14fd2SDhruva Gole #include <ti_sci.h>
1021b14fd2SDhruva Gole #include <ti_sci_transport.h>
1121b14fd2SDhruva Gole 
1221b14fd2SDhruva Gole #include <plat_private.h>
1321b14fd2SDhruva Gole 
1421b14fd2SDhruva Gole /* Table of regions to map using the MMU */
1521b14fd2SDhruva Gole const mmap_region_t plat_k3_mmap[] = {
168853eba6SDhruva Gole 	K3_MAP_REGION_FLAT(K3_USART_BASE,       K3_USART_SIZE,       MT_DEVICE | MT_RW | MT_SECURE),
178853eba6SDhruva Gole 	K3_MAP_REGION_FLAT(K3_GIC_BASE,         K3_GIC_SIZE,         MT_DEVICE | MT_RW | MT_SECURE),
188853eba6SDhruva Gole 	K3_MAP_REGION_FLAT(K3_GTC_BASE,         K3_GTC_SIZE,         MT_DEVICE | MT_RW | MT_SECURE),
198853eba6SDhruva Gole 	K3_MAP_REGION_FLAT(TI_MAILBOX_TX_BASE,  TI_MAILBOX_RX_TX_SIZE, MT_DEVICE | MT_RW | MT_SECURE),
208853eba6SDhruva Gole 	K3_MAP_REGION_FLAT(WKUP_CTRL_MMR0_BASE, WKUP_CTRL_MMR0_SIZE, MT_DEVICE | MT_RW | MT_SECURE),
218853eba6SDhruva Gole 	K3_MAP_REGION_FLAT(MAILBOX_SHMEM_REGION_BASE, MAILBOX_SHMEM_REGION_SIZE, MT_DEVICE | MT_RW | MT_SECURE),
2221b14fd2SDhruva Gole 	{ /* sentinel */ }
2321b14fd2SDhruva Gole };
2421b14fd2SDhruva Gole 
2521b14fd2SDhruva Gole int ti_soc_init(void)
2621b14fd2SDhruva Gole {
27*987c9b04SDhruva Gole 	struct ti_sci_msg_version version;
28*987c9b04SDhruva Gole 	int ret;
29*987c9b04SDhruva Gole 
30a5cf0ba4SDhruva Gole 	generic_delay_timer_init();
31*987c9b04SDhruva Gole 
32*987c9b04SDhruva Gole 	ret = ti_sci_boot_notification();
33*987c9b04SDhruva Gole 	if (ret != 0) {
34*987c9b04SDhruva Gole 		ERROR("%s: Failed to receive boot notification (%d)\n", __func__, ret);
35*987c9b04SDhruva Gole 		return ret;
36*987c9b04SDhruva Gole 	}
37*987c9b04SDhruva Gole 
38*987c9b04SDhruva Gole 	ret = ti_sci_get_revision(&version);
39*987c9b04SDhruva Gole 	if (ret != 0) {
40*987c9b04SDhruva Gole 		ERROR("%s: Failed to get revision (%d)\n", __func__, ret);
41*987c9b04SDhruva Gole 		return ret;
42*987c9b04SDhruva Gole 	}
43*987c9b04SDhruva Gole 
44*987c9b04SDhruva Gole 	NOTICE("SYSFW ABI: %d.%d (firmware rev 0x%04x '%s')\n",
45*987c9b04SDhruva Gole 	       version.abi_major, version.abi_minor,
46*987c9b04SDhruva Gole 	       version.firmware_revision,
47*987c9b04SDhruva Gole 	       version.firmware_description);
48*987c9b04SDhruva Gole 
4921b14fd2SDhruva Gole 	return 0;
5021b14fd2SDhruva Gole }
51