11841c533SNishanth Menon /* 273d772d8SManorit Chawdhry * Copyright (c) 2017-2024, Arm Limited and Contributors. All rights reserved. 3*26605cddSDhruva Gole * Copyright (C) 2025 Texas Instruments Incorporated - https://www.ti.com/ 4*26605cddSDhruva Gole * K3 SOC specific bl31_setup 51841c533SNishanth Menon * 61841c533SNishanth Menon * SPDX-License-Identifier: BSD-3-Clause 71841c533SNishanth Menon */ 81841c533SNishanth Menon 909d40e0eSAntonio Nino Diaz #include <common/debug.h> 10b5c2e1c4SAndrew F. Davis #include <ti_sci.h> 11*26605cddSDhruva Gole #include <ti_sci_transport.h> 121841c533SNishanth Menon 13*26605cddSDhruva Gole #include <plat_private.h> 1453a868f6SAndrew Davis 15e67bfcf3SNishanth Menon /* Table of regions to map using the MMU */ 16ef202857SAndrew F. Davis const mmap_region_t plat_k3_mmap[] = { 1753a868f6SAndrew Davis K3_MAP_REGION_FLAT(K3_USART_BASE, K3_USART_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 1853a868f6SAndrew Davis K3_MAP_REGION_FLAT(K3_GIC_BASE, K3_GIC_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 1953a868f6SAndrew Davis K3_MAP_REGION_FLAT(K3_GTC_BASE, K3_GTC_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 2053a868f6SAndrew Davis K3_MAP_REGION_FLAT(SEC_PROXY_RT_BASE, SEC_PROXY_RT_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 2153a868f6SAndrew Davis K3_MAP_REGION_FLAT(SEC_PROXY_SCFG_BASE, SEC_PROXY_SCFG_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 2253a868f6SAndrew Davis K3_MAP_REGION_FLAT(SEC_PROXY_DATA_BASE, SEC_PROXY_DATA_SIZE, MT_DEVICE | MT_RW | MT_SECURE), 23e67bfcf3SNishanth Menon { /* sentinel */ } 24e67bfcf3SNishanth Menon }; 25e67bfcf3SNishanth Menon 26*26605cddSDhruva Gole int ti_soc_init(void) 271841c533SNishanth Menon { 2873d772d8SManorit Chawdhry struct ti_sci_msg_version version; 2973d772d8SManorit Chawdhry int ret; 3073d772d8SManorit Chawdhry 3173d772d8SManorit Chawdhry ret = ti_sci_get_revision(&version); 3273d772d8SManorit Chawdhry if (ret) { 3373d772d8SManorit Chawdhry ERROR("Unable to communicate with the control firmware (%d)\n", ret); 34*26605cddSDhruva Gole return ret; 3573d772d8SManorit Chawdhry } 3673d772d8SManorit Chawdhry 3773d772d8SManorit Chawdhry INFO("SYSFW ABI: %d.%d (firmware rev 0x%04x '%s')\n", 3873d772d8SManorit Chawdhry version.abi_major, version.abi_minor, 3973d772d8SManorit Chawdhry version.firmware_revision, 4073d772d8SManorit Chawdhry version.firmware_description); 4173d772d8SManorit Chawdhry 42a53d1377SManorit Chawdhry /* 43a53d1377SManorit Chawdhry * Older firmware have a timing issue with DM that crashes few TF-A 44a53d1377SManorit Chawdhry * lite devices while trying to make calls to DM. Since there is no way 45a53d1377SManorit Chawdhry * to detect what current DM version we are running - we rely on the 46a53d1377SManorit Chawdhry * corresponding TIFS versioning to handle this check and ensure that 47a53d1377SManorit Chawdhry * the platform boots up 48a53d1377SManorit Chawdhry * 49a53d1377SManorit Chawdhry * Upgrading to TIFS version 9.1.7 along with the corresponding DM from 50a53d1377SManorit Chawdhry * ti-linux-firmware will enable this functionality. 51a53d1377SManorit Chawdhry */ 52a53d1377SManorit Chawdhry if (version.firmware_revision > 9 || 53a53d1377SManorit Chawdhry (version.firmware_revision == 9 && version.sub_version > 1) || 54a53d1377SManorit Chawdhry (version.firmware_revision == 9 && version.sub_version == 1 && 55a53d1377SManorit Chawdhry version.patch_version >= 7) 56a53d1377SManorit Chawdhry ) { 57a53d1377SManorit Chawdhry if (ti_sci_device_get(PLAT_BOARD_DEVICE_ID)) { 58a53d1377SManorit Chawdhry WARN("Unable to take system power reference\n"); 59a53d1377SManorit Chawdhry } 60a53d1377SManorit Chawdhry } else { 61a53d1377SManorit Chawdhry NOTICE("Upgrade Firmwares for Power off functionality\n"); 62a53d1377SManorit Chawdhry } 63*26605cddSDhruva Gole return 0; 641841c533SNishanth Menon } 65