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> 10*879fdd07SVignesh Raghavendra #include <ti_sci_protocol.h> 1121b14fd2SDhruva Gole #include <ti_sci_transport.h> 1221b14fd2SDhruva Gole 13*879fdd07SVignesh Raghavendra #include <board_def.h> 1421b14fd2SDhruva Gole #include <plat_private.h> 1521b14fd2SDhruva Gole 1621b14fd2SDhruva Gole /* Table of regions to map using the MMU */ 1721b14fd2SDhruva Gole const mmap_region_t plat_k3_mmap[] = { 188853eba6SDhruva Gole K3_MAP_REGION_FLAT(K3_USART_BASE, K3_USART_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 198853eba6SDhruva Gole K3_MAP_REGION_FLAT(K3_GIC_BASE, K3_GIC_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 208853eba6SDhruva Gole K3_MAP_REGION_FLAT(K3_GTC_BASE, K3_GTC_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 218853eba6SDhruva Gole K3_MAP_REGION_FLAT(TI_MAILBOX_TX_BASE, TI_MAILBOX_RX_TX_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 228853eba6SDhruva Gole K3_MAP_REGION_FLAT(WKUP_CTRL_MMR0_BASE, WKUP_CTRL_MMR0_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 238853eba6SDhruva Gole K3_MAP_REGION_FLAT(MAILBOX_SHMEM_REGION_BASE, MAILBOX_SHMEM_REGION_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 2421b14fd2SDhruva Gole { /* sentinel */ } 2521b14fd2SDhruva Gole }; 2621b14fd2SDhruva Gole 2721b14fd2SDhruva Gole int ti_soc_init(void) 2821b14fd2SDhruva Gole { 29987c9b04SDhruva Gole struct ti_sci_msg_version version; 30987c9b04SDhruva Gole int ret; 31987c9b04SDhruva Gole 32a5cf0ba4SDhruva Gole generic_delay_timer_init(); 33987c9b04SDhruva Gole 34987c9b04SDhruva Gole ret = ti_sci_boot_notification(); 35987c9b04SDhruva Gole if (ret != 0) { 36987c9b04SDhruva Gole ERROR("%s: Failed to receive boot notification (%d)\n", __func__, ret); 37987c9b04SDhruva Gole return ret; 38987c9b04SDhruva Gole } 39987c9b04SDhruva Gole 40987c9b04SDhruva Gole ret = ti_sci_get_revision(&version); 41987c9b04SDhruva Gole if (ret != 0) { 42987c9b04SDhruva Gole ERROR("%s: Failed to get revision (%d)\n", __func__, ret); 43987c9b04SDhruva Gole return ret; 44987c9b04SDhruva Gole } 45987c9b04SDhruva Gole 46987c9b04SDhruva Gole NOTICE("SYSFW ABI: %d.%d (firmware rev 0x%04x '%s')\n", 47987c9b04SDhruva Gole version.abi_major, version.abi_minor, 48987c9b04SDhruva Gole version.firmware_revision, 49987c9b04SDhruva Gole version.firmware_description); 50987c9b04SDhruva Gole 51*879fdd07SVignesh Raghavendra ret = ti_sci_proc_request(PLAT_PROC_START_ID); 52*879fdd07SVignesh Raghavendra if (ret != 0) { 53*879fdd07SVignesh Raghavendra ERROR("Unable to request host (%d)\n", ret); 54*879fdd07SVignesh Raghavendra return ret; 55*879fdd07SVignesh Raghavendra } 56*879fdd07SVignesh Raghavendra 57*879fdd07SVignesh Raghavendra /* Enable ACP interface */ 58*879fdd07SVignesh Raghavendra ret = ti_sci_proc_set_boot_ctrl(PLAT_PROC_START_ID, 0, 59*879fdd07SVignesh Raghavendra PROC_BOOT_CTRL_FLAG_ARMV8_AINACTS); 60*879fdd07SVignesh Raghavendra if (ret != 0) { 61*879fdd07SVignesh Raghavendra ERROR("Unable to set boot control (%d)\n", ret); 62*879fdd07SVignesh Raghavendra return ret; 63*879fdd07SVignesh Raghavendra } 64*879fdd07SVignesh Raghavendra 6521b14fd2SDhruva Gole return 0; 6621b14fd2SDhruva Gole } 67