1*f180a3b7SHieu Nguyen /* 2*f180a3b7SHieu Nguyen * Copyright (c) 2025, Renesas Electronics Corporation. All rights reserved. 3*f180a3b7SHieu Nguyen * 4*f180a3b7SHieu Nguyen * SPDX-License-Identifier: BSD-3-Clause 5*f180a3b7SHieu Nguyen */ 6*f180a3b7SHieu Nguyen 7*f180a3b7SHieu Nguyen #ifndef RCAR_DEF_H 8*f180a3b7SHieu Nguyen #define RCAR_DEF_H 9*f180a3b7SHieu Nguyen 10*f180a3b7SHieu Nguyen #include <common/tbbr/tbbr_img_def.h> 11*f180a3b7SHieu Nguyen #include <lib/utils_def.h> 12*f180a3b7SHieu Nguyen 13*f180a3b7SHieu Nguyen #define RCAR_DOMAIN UL(0x0) 14*f180a3b7SHieu Nguyen 15*f180a3b7SHieu Nguyen #define RCAR_TRUSTED_SRAM_BASE UL(0x8C200000) /* DRAM */ 16*f180a3b7SHieu Nguyen #define RCAR_TRUSTED_SRAM_SIZE UL(0x00040000) /* 256kB */ 17*f180a3b7SHieu Nguyen #define RCAR_SHARED_MEM_BASE (RCAR_TRUSTED_SRAM_BASE + \ 18*f180a3b7SHieu Nguyen RCAR_TRUSTED_SRAM_SIZE) 19*f180a3b7SHieu Nguyen #define RCAR_SHARED_MEM_SIZE UL(0x00002000) /* 8kB */ 20*f180a3b7SHieu Nguyen #define RCAR_BL31_CRASH_BASE (RCAR_SHARED_MEM_BASE + RCAR_SHARED_MEM_SIZE) 21*f180a3b7SHieu Nguyen #define RCAR_BL31_CRASH_SIZE UL(0x00001000) 22*f180a3b7SHieu Nguyen #define DEVICE_RCAR_BASE1 UL(0x10000000) 23*f180a3b7SHieu Nguyen #define DEVICE_RCAR_SIZE1 UL(0x30000000) 24*f180a3b7SHieu Nguyen #define DEVICE_RCAR_BASE2 UL(0xC0000000) 25*f180a3b7SHieu Nguyen #define DEVICE_RCAR_SIZE2 UL(0x00C00000) 26*f180a3b7SHieu Nguyen #define DEVICE_SRAM_BASE UL(0xE9042000) 27*f180a3b7SHieu Nguyen #define DEVICE_SRAM_SIZE UL(0x00002000) 28*f180a3b7SHieu Nguyen #define DEVICE_SRAM_DATA_BASE (DEVICE_SRAM_BASE + DEVICE_SRAM_SIZE) 29*f180a3b7SHieu Nguyen #define DEVICE_SRAM_DATA_SIZE UL(0x00000100) 30*f180a3b7SHieu Nguyen #define DEVICE_SRAM_STACK_BASE (DEVICE_SRAM_DATA_BASE + DEVICE_SRAM_DATA_SIZE) 31*f180a3b7SHieu Nguyen #define DEVICE_SRAM_STACK_SIZE (UL(0x00001000) - DEVICE_SRAM_DATA_SIZE) 32*f180a3b7SHieu Nguyen #define DEVICE_RCAR_BASE3 UL(0xE5000000) 33*f180a3b7SHieu Nguyen #define DEVICE_RCAR_SIZE3 UL(0x1B000000) 34*f180a3b7SHieu Nguyen /* Entrypoint mailboxes */ 35*f180a3b7SHieu Nguyen #define MBOX_BASE RCAR_SHARED_MEM_BASE 36*f180a3b7SHieu Nguyen #define MBOX_SIZE UL(0x800) /* 2kB: 32 cores */ 37*f180a3b7SHieu Nguyen /* Base address where parameters to BL31 are stored */ 38*f180a3b7SHieu Nguyen #define PARAMS_BASE (RCAR_TRUSTED_SRAM_BASE - UL(0x100000)) 39*f180a3b7SHieu Nguyen #define PARAMS_SIZE UL(0x8000) /* 32kB */ 40*f180a3b7SHieu Nguyen #define BOOT_KIND_BASE (PARAMS_BASE + UL(0x1700)) 41*f180a3b7SHieu Nguyen 42*f180a3b7SHieu Nguyen /* 43*f180a3b7SHieu Nguyen * The number of regions like RO(code), coherent and data required by 44*f180a3b7SHieu Nguyen * different BL stages which need to be mapped in the MMU 45*f180a3b7SHieu Nguyen */ 46*f180a3b7SHieu Nguyen #define RCAR_BL_REGIONS 2 47*f180a3b7SHieu Nguyen /* 48*f180a3b7SHieu Nguyen * The RCAR_MAX_MMAP_REGIONS depends on the number of entries in rcar_mmap[] 49*f180a3b7SHieu Nguyen * defined for each BL stage in platform_common.c. 50*f180a3b7SHieu Nguyen */ 51*f180a3b7SHieu Nguyen #define RCAR_MMAP_ENTRIES 10 52*f180a3b7SHieu Nguyen /* BL31 */ 53*f180a3b7SHieu Nguyen #define RCAR_CRASH_STACK RCAR_BL31_CRASH_BASE 54*f180a3b7SHieu Nguyen 55*f180a3b7SHieu Nguyen /* CCI related constants */ 56*f180a3b7SHieu Nguyen #define CCI500_BASE UL(0xF1200000) 57*f180a3b7SHieu Nguyen #define CCI500_CLUSTER0_SL_IFACE_IX 0 58*f180a3b7SHieu Nguyen #define CCI500_CLUSTER1_SL_IFACE_IX 1 59*f180a3b7SHieu Nguyen #define CCI500_CLUSTER2_SL_IFACE_IX 2 60*f180a3b7SHieu Nguyen #define CCI500_CLUSTER3_SL_IFACE_IX 3 61*f180a3b7SHieu Nguyen #define RCAR_CCI_BASE CCI500_BASE 62*f180a3b7SHieu Nguyen /* GIC */ 63*f180a3b7SHieu Nguyen #define PLAT_ARM_GICD_BASE UL(0x39000000) /* GICD base address for View 1 */ 64*f180a3b7SHieu Nguyen #define PLAT_ARM_GICR_BASE UL(0x38080000) 65*f180a3b7SHieu Nguyen /* CPU Fault Handling Interrupt(FHI) PPI interrupt ID */ 66*f180a3b7SHieu Nguyen #define PLAT_CORE_FAULT_IRQ 17 67*f180a3b7SHieu Nguyen /* Priority levels for ARM platforms */ 68*f180a3b7SHieu Nguyen #if ENABLE_FEAT_RAS && FFH_SUPPORT 69*f180a3b7SHieu Nguyen #define PLAT_RAS_PRI 0x10 70*f180a3b7SHieu Nguyen #endif 71*f180a3b7SHieu Nguyen 72*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_PHY_TIMER 29U 73*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_0 8U 74*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_1 9U 75*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_2 10U 76*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_3 11U 77*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_4 12U 78*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_5 13U 79*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_6 14U 80*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_7 15U 81*f180a3b7SHieu Nguyen 82*f180a3b7SHieu Nguyen /* Timer control */ 83*f180a3b7SHieu Nguyen #define RCAR_CNTC_BASE UL(0x1C000000) 84*f180a3b7SHieu Nguyen #define RCAR_CNTC_EXTAL 1066666667U 85*f180a3b7SHieu Nguyen 86*f180a3b7SHieu Nguyen /* Conversion value from seconds to micro seconds */ 87*f180a3b7SHieu Nguyen #define RCAR_CONV_MICROSEC UL(1000000) 88*f180a3b7SHieu Nguyen 89*f180a3b7SHieu Nguyen /* Workaround to ensure only RSIPM IPL output log firstly */ 90*f180a3b7SHieu Nguyen #define BOOT_BASE_ADDRESS U(0x1003FC00) 91*f180a3b7SHieu Nguyen #define BOOT_READY_CR52_FLAG U(0x01234200) 92*f180a3b7SHieu Nguyen #define BOOT_BL31_REG (BOOT_BASE_ADDRESS + U(0x200)) 93*f180a3b7SHieu Nguyen 94*f180a3b7SHieu Nguyen /* Memory mapped Generic timer interfaces */ 95*f180a3b7SHieu Nguyen #define ARM_SYS_CNTCTL_BASE RCAR_CNTC_BASE 96*f180a3b7SHieu Nguyen 97*f180a3b7SHieu Nguyen /* MPIDR_EL1 */ 98*f180a3b7SHieu Nguyen #define RCAR_MPIDR_AFFMASK U(0x00FFFF00) 99*f180a3b7SHieu Nguyen 100*f180a3b7SHieu Nguyen /* CPUPWRCTLR */ 101*f180a3b7SHieu Nguyen #define CPUPWRCTLR_PWDN U(0x00000001) 102*f180a3b7SHieu Nguyen 103*f180a3b7SHieu Nguyen /* For SCMI message */ 104*f180a3b7SHieu Nguyen #define RCAR_SCMI_CHANNEL_MMU_BASE UL(0xC1060000) /* align 4kB */ 105*f180a3b7SHieu Nguyen #define RCAR_SCMI_CHANNEL_SIZE UL(0x00001000) /* align 4kB (SCP FW defines 0x100) */ 106*f180a3b7SHieu Nguyen #define RCAR_SCMI_CHANNEL_BASE UL(0xC1060E00) /* for A2P PSCI Command (SCP FW defines) */ 107*f180a3b7SHieu Nguyen 108*f180a3b7SHieu Nguyen #define MFIS_SCP_COMMON_BASE UL(0x189E1000) 109*f180a3b7SHieu Nguyen #define MFIS_MFISWACNTR_SCP (MFIS_SCP_COMMON_BASE + UL(0x00000904)) 110*f180a3b7SHieu Nguyen #define MFISWACNTR_SCP_CODEVALUE_SET UL(0xACC00000) 111*f180a3b7SHieu Nguyen #define MFISWACNTR_SCP_REGISTERADDRESS_MASK UL(0x000FFFFF) 112*f180a3b7SHieu Nguyen /* MFIS CPU communication control register AP System core[k] to SCP Core(k=0-31) MFISASEICR[k=0] */ 113*f180a3b7SHieu Nguyen #define RCAR_SCMI_MFIS_ADDR UL(0x18840004) 114*f180a3b7SHieu Nguyen #define RCAR_SCMI_MFIS_MOD_MASK U(0x00000001) 115*f180a3b7SHieu Nguyen #define RCAR_SCMI_MFIS_PRV_MASK (~RCAR_SCMI_MFIS_MOD_MASK) 116*f180a3b7SHieu Nguyen 117*f180a3b7SHieu Nguyen #endif /* RCAR_DEF_H */ 118