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