18b81a39eSGhennadi Procopciuc /* 2d82c211dSGhennadi Procopciuc * Copyright 2024-2025 NXP 38b81a39eSGhennadi Procopciuc * 48b81a39eSGhennadi Procopciuc * SPDX-License-Identifier: BSD-3-Clause 58b81a39eSGhennadi Procopciuc */ 68b81a39eSGhennadi Procopciuc 78b81a39eSGhennadi Procopciuc #ifndef PLATFORM_DEF_H 88b81a39eSGhennadi Procopciuc #define PLATFORM_DEF_H 98b81a39eSGhennadi Procopciuc 108b81a39eSGhennadi Procopciuc #include <plat/common/common_def.h> 118b81a39eSGhennadi Procopciuc 128b81a39eSGhennadi Procopciuc #define PLATFORM_STACK_SIZE U(0x1000) 138b81a39eSGhennadi Procopciuc 148b81a39eSGhennadi Procopciuc /* Caches */ 158b81a39eSGhennadi Procopciuc #define CACHE_WRITEBACK_SHIFT U(6) 168b81a39eSGhennadi Procopciuc #define CACHE_WRITEBACK_GRANULE (U(1) << CACHE_WRITEBACK_SHIFT) 178b81a39eSGhennadi Procopciuc 188b81a39eSGhennadi Procopciuc /* CPU Topology */ 198b81a39eSGhennadi Procopciuc #define PLATFORM_CORE_COUNT U(4) 208b81a39eSGhennadi Procopciuc #define PLATFORM_SYSTEM_COUNT U(1) 21e73c3c3aSGhennadi Procopciuc #define PLATFORM_CLUSTER_COUNT U(2) 228b81a39eSGhennadi Procopciuc #define PLATFORM_PRIMARY_CPU U(0) 238b81a39eSGhennadi Procopciuc #define PLATFORM_MPIDR_CPU_MASK_BITS U(1) 24e73c3c3aSGhennadi Procopciuc #define PLATFORM_MAX_CPUS_PER_CLUSTER U(2) 258b81a39eSGhennadi Procopciuc 268b81a39eSGhennadi Procopciuc /* Power Domains */ 27e73c3c3aSGhennadi Procopciuc #define PLAT_NUM_PWR_DOMAINS (PLATFORM_SYSTEM_COUNT + \ 28e73c3c3aSGhennadi Procopciuc PLATFORM_CLUSTER_COUNT + \ 29e73c3c3aSGhennadi Procopciuc PLATFORM_CORE_COUNT) 308b81a39eSGhennadi Procopciuc #define PLAT_MAX_PWR_LVL MPIDR_AFFLVL2 318b81a39eSGhennadi Procopciuc #define PLAT_MAX_OFF_STATE U(2) 328b81a39eSGhennadi Procopciuc #define PLAT_MAX_RET_STATE U(1) 338b81a39eSGhennadi Procopciuc #define PLAT_MAX_PWR_LVL_STATES U(2) 348b81a39eSGhennadi Procopciuc 358b81a39eSGhennadi Procopciuc /* BL2 stage */ 368b81a39eSGhennadi Procopciuc #define BL2_BASE UL(0x34078000) 378b81a39eSGhennadi Procopciuc #define BL2_LIMIT UL(0x34100000) 388b81a39eSGhennadi Procopciuc 398b81a39eSGhennadi Procopciuc /* BL31 stage */ 408b81a39eSGhennadi Procopciuc #define BL31_BASE UL(0x34200000) 418b81a39eSGhennadi Procopciuc #define BL31_LIMIT UL(0x34300000) 428b81a39eSGhennadi Procopciuc 438b81a39eSGhennadi Procopciuc /* It is a dummy value for now, given the missing DDR */ 448b81a39eSGhennadi Procopciuc #define BL33_BASE UL(0x34500000) 458b81a39eSGhennadi Procopciuc #define BL33_LIMIT UL(0x345FF000) 468b81a39eSGhennadi Procopciuc 47dbf400d0SGhennadi Procopciuc /* IO buffer used to copy images from storage */ 48dbf400d0SGhennadi Procopciuc #define IO_BUFFER_BASE BL33_LIMIT 49dbf400d0SGhennadi Procopciuc #define IO_BUFFER_SIZE U(0x13000) 50dbf400d0SGhennadi Procopciuc 51e73c3c3aSGhennadi Procopciuc #define PLAT_PHY_ADDR_SPACE_SIZE (ULL(1) << 36) 52e73c3c3aSGhennadi Procopciuc /* We'll be doing a 1:1 mapping anyway */ 53e73c3c3aSGhennadi Procopciuc #define PLAT_VIRT_ADDR_SPACE_SIZE (ULL(1) << 36) 54e73c3c3aSGhennadi Procopciuc 55*88b8aa97SGhennadi Procopciuc #define MAX_MMAP_REGIONS U(21) 56*88b8aa97SGhennadi Procopciuc #define MAX_XLAT_TABLES U(33) 57e73c3c3aSGhennadi Procopciuc 588b81a39eSGhennadi Procopciuc /* Console settings */ 598b81a39eSGhennadi Procopciuc #define UART_BASE UL(0x401C8000) 608b81a39eSGhennadi Procopciuc #define UART_BAUDRATE U(115200) 61e4462daeSGhennadi Procopciuc #define UART_CLOCK_HZ U(125000000) 628b81a39eSGhennadi Procopciuc 63d82c211dSGhennadi Procopciuc /* uSDHC */ 64d82c211dSGhennadi Procopciuc #define S32G_USDHC_BASE UL(0x402F0000) 65d82c211dSGhennadi Procopciuc 668b81a39eSGhennadi Procopciuc #define S32G_FIP_BASE UL(0x34100000) 678b81a39eSGhennadi Procopciuc #define S32G_FIP_SIZE UL(0x100000) 688b81a39eSGhennadi Procopciuc 698b81a39eSGhennadi Procopciuc #define MAX_IO_HANDLES U(2) 708b81a39eSGhennadi Procopciuc #define MAX_IO_DEVICES U(2) 718b81a39eSGhennadi Procopciuc 72*88b8aa97SGhennadi Procopciuc /* uSDHC as block device */ 73*88b8aa97SGhennadi Procopciuc #define MAX_IO_BLOCK_DEVICES U(1) 74*88b8aa97SGhennadi Procopciuc 75e73c3c3aSGhennadi Procopciuc /* GIC settings */ 76e73c3c3aSGhennadi Procopciuc #define S32G_GIC_BASE UL(0x50800000) 77e73c3c3aSGhennadi Procopciuc #define PLAT_GICD_BASE S32G_GIC_BASE 78e73c3c3aSGhennadi Procopciuc #define PLAT_GICR_BASE (S32G_GIC_BASE + UL(0x80000)) 79e73c3c3aSGhennadi Procopciuc 80e73c3c3aSGhennadi Procopciuc /* Generic timer frequency; this goes directly into CNTFRQ_EL0. 81e73c3c3aSGhennadi Procopciuc * Its end-value is 5MHz; this is based on the assumption that 82e73c3c3aSGhennadi Procopciuc * GPR00[CA53_COUNTER_CLK_DIV_VAL] contains the reset value of 0x7, hence 83e73c3c3aSGhennadi Procopciuc * producing a divider value of 8, applied to the FXOSC frequency of 40MHz. 84e73c3c3aSGhennadi Procopciuc */ 85e73c3c3aSGhennadi Procopciuc #define COUNTER_FREQUENCY U(5000000) 86e73c3c3aSGhennadi Procopciuc 878b81a39eSGhennadi Procopciuc #endif /* PLATFORM_DEF_H */ 88