1*b45b5bacSMarek Vasut /* 2*b45b5bacSMarek Vasut * Copyright (c) 2015-2025, Renesas Electronics Corporation. All rights reserved. 3*b45b5bacSMarek Vasut * 4*b45b5bacSMarek Vasut * SPDX-License-Identifier: BSD-3-Clause 5*b45b5bacSMarek Vasut */ 6*b45b5bacSMarek Vasut 7*b45b5bacSMarek Vasut #ifndef RCAR_DEF_H 8*b45b5bacSMarek Vasut #define RCAR_DEF_H 9*b45b5bacSMarek Vasut 10*b45b5bacSMarek Vasut #include <common/tbbr/tbbr_img_def.h> 11*b45b5bacSMarek Vasut #include <lib/utils_def.h> 12*b45b5bacSMarek Vasut 13*b45b5bacSMarek Vasut #define RCAR_DOMAIN UL(0x0) 14*b45b5bacSMarek Vasut 15*b45b5bacSMarek Vasut #define RCAR_TRUSTED_SRAM_BASE UL(0x46400000) 16*b45b5bacSMarek Vasut #define RCAR_TRUSTED_SRAM_SIZE UL(0x00022000) 17*b45b5bacSMarek Vasut #define RCAR_SHARED_MEM_BASE (RCAR_TRUSTED_SRAM_BASE + \ 18*b45b5bacSMarek Vasut RCAR_TRUSTED_SRAM_SIZE) 19*b45b5bacSMarek Vasut #define RCAR_SHARED_MEM_SIZE UL(0x00001000) 20*b45b5bacSMarek Vasut #define RCAR_BL31_CRASH_BASE (RCAR_TRUSTED_SRAM_BASE + UL(0x3F000)) 21*b45b5bacSMarek Vasut #define RCAR_BL31_CRASH_SIZE UL(0x00001000) 22*b45b5bacSMarek Vasut #define DEVICE_RCAR_BASE UL(0xE6000000) 23*b45b5bacSMarek Vasut #define DEVICE_RCAR_SIZE UL(0x00300000) 24*b45b5bacSMarek Vasut #define DEVICE_SRAM_BASE UL(0xE6342000) 25*b45b5bacSMarek Vasut #define DEVICE_SRAM_SIZE UL(0x00002000) 26*b45b5bacSMarek Vasut #define DEVICE_SRAM_DATA_BASE (DEVICE_SRAM_BASE + DEVICE_SRAM_SIZE) 27*b45b5bacSMarek Vasut #define DEVICE_SRAM_DATA_SIZE UL(0x00000100) 28*b45b5bacSMarek Vasut #define DEVICE_SRAM_STACK_BASE (DEVICE_SRAM_DATA_BASE + DEVICE_SRAM_DATA_SIZE) 29*b45b5bacSMarek Vasut #define DEVICE_SRAM_STACK_SIZE (UL(0x00001000) - DEVICE_SRAM_DATA_SIZE) 30*b45b5bacSMarek Vasut #define DEVICE_RCAR_BASE2 UL(0xE6370000) 31*b45b5bacSMarek Vasut #define DEVICE_RCAR_SIZE2 UL(0x19C90000) 32*b45b5bacSMarek Vasut /* Entrypoint mailboxes */ 33*b45b5bacSMarek Vasut #define MBOX_BASE RCAR_SHARED_MEM_BASE 34*b45b5bacSMarek Vasut #define MBOX_SIZE UL(0x200) 35*b45b5bacSMarek Vasut /* Base address where parameters to BL31 are stored */ 36*b45b5bacSMarek Vasut #define PARAMS_BASE (MBOX_BASE + MBOX_SIZE) 37*b45b5bacSMarek Vasut #define BOOT_KIND_BASE (RCAR_SHARED_MEM_BASE + \ 38*b45b5bacSMarek Vasut RCAR_SHARED_MEM_SIZE - UL(0x100)) 39*b45b5bacSMarek Vasut /* 40*b45b5bacSMarek Vasut * The number of regions like RO(code), coherent and data required by 41*b45b5bacSMarek Vasut * different BL stages which need to be mapped in the MMU 42*b45b5bacSMarek Vasut */ 43*b45b5bacSMarek Vasut #define RCAR_BL_REGIONS 2 44*b45b5bacSMarek Vasut /* 45*b45b5bacSMarek Vasut * The RCAR_MAX_MMAP_REGIONS depends on the number of entries in rcar_mmap[] 46*b45b5bacSMarek Vasut * defined for each BL stage in platform_common.c. 47*b45b5bacSMarek Vasut */ 48*b45b5bacSMarek Vasut #define RCAR_MMAP_ENTRIES 8 49*b45b5bacSMarek Vasut /* BL31 */ 50*b45b5bacSMarek Vasut #define RCAR_CRASH_STACK RCAR_BL31_CRASH_BASE 51*b45b5bacSMarek Vasut 52*b45b5bacSMarek Vasut /* CCI related constants */ 53*b45b5bacSMarek Vasut #define CCI500_BASE UL(0xF1200000) 54*b45b5bacSMarek Vasut #define CCI500_CLUSTER0_SL_IFACE_IX 0 55*b45b5bacSMarek Vasut #define CCI500_CLUSTER1_SL_IFACE_IX 1 56*b45b5bacSMarek Vasut #define CCI500_CLUSTER2_SL_IFACE_IX 2 57*b45b5bacSMarek Vasut #define CCI500_CLUSTER3_SL_IFACE_IX 3 58*b45b5bacSMarek Vasut #define RCAR_CCI_BASE CCI500_BASE 59*b45b5bacSMarek Vasut 60*b45b5bacSMarek Vasut /* APSREG boot configuration */ 61*b45b5bacSMarek Vasut #define APSREG_BASE UL(0xE6280000) 62*b45b5bacSMarek Vasut #define APSREG_CCI500_AUX (APSREG_BASE + UL(0x9010)) 63*b45b5bacSMarek Vasut #define APSREG_P_CCI500_AUX (APSREG_BASE + UL(0x29010)) 64*b45b5bacSMarek Vasut 65*b45b5bacSMarek Vasut #define APSREG_AP_CLUSTER_AUX0_INIT 0x00000003U 66*b45b5bacSMarek Vasut #define APSREG_CCI500_AUX_INIT 0x00000001U 67*b45b5bacSMarek Vasut #define APSREG_P_CCI500_AUX_INIT 0x00000002U 68*b45b5bacSMarek Vasut 69*b45b5bacSMarek Vasut /* GIC */ 70*b45b5bacSMarek Vasut #define PLAT_ARM_GICD_BASE UL(0xF1000000) 71*b45b5bacSMarek Vasut #define PLAT_ARM_GICR_BASE UL(0xF1060000) 72*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_PHY_TIMER 29U 73*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_0 8U 74*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_1 9U 75*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_2 10U 76*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_3 11U 77*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_4 12U 78*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_5 13U 79*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_6 14U 80*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_7 15U 81*b45b5bacSMarek Vasut 82*b45b5bacSMarek Vasut /* Timer control */ 83*b45b5bacSMarek Vasut #define RCAR_CNTC_BASE UL(0xE6080000) 84*b45b5bacSMarek Vasut #if (RCAR_LSI == RCAR_S4) 85*b45b5bacSMarek Vasut #define RCAR_CNTC_EXTAL 16666666U 86*b45b5bacSMarek Vasut #elif (RCAR_LSI == RCAR_V4H) 87*b45b5bacSMarek Vasut #define RCAR_CNTC_EXTAL 16666600U 88*b45b5bacSMarek Vasut #elif (RCAR_LSI == RCAR_V4M) 89*b45b5bacSMarek Vasut #define RCAR_CNTC_EXTAL 16666600U 90*b45b5bacSMarek Vasut #endif 91*b45b5bacSMarek Vasut /* Conversion value from seconds to micro seconds */ 92*b45b5bacSMarek Vasut #define RCAR_CONV_MICROSEC 1000000UL 93*b45b5bacSMarek Vasut 94*b45b5bacSMarek Vasut /* APMU */ 95*b45b5bacSMarek Vasut #define RCAR_APMU_BASE (UL(0xE6170000) + (RCAR_DOMAIN * UL(0x1000))) 96*b45b5bacSMarek Vasut #define RCAR_APMU_PWRCTRLCL_PCHPDNEN BIT(17) 97*b45b5bacSMarek Vasut 98*b45b5bacSMarek Vasut #define RCAR_APMU_PWRCTRLC_WUP_REQ BIT(0) 99*b45b5bacSMarek Vasut #define RCAR_APMU_PWRCTRLC_IWUP_EN BIT(4) 100*b45b5bacSMarek Vasut #define RCAR_APMU_PWRCTRLC_PCHPDNEN BIT(17) 101*b45b5bacSMarek Vasut 102*b45b5bacSMarek Vasut #define RCAR_APMU_SAFECTRLC_DBGGEN BIT(13) 103*b45b5bacSMarek Vasut 104*b45b5bacSMarek Vasut #define RCAR_APMU_FSMSTSRC_STATE_OFF 0x00000000U 105*b45b5bacSMarek Vasut 106*b45b5bacSMarek Vasut #define RCAR_APMU_RVBARPLC_MASK 0xFFFFFFFCU 107*b45b5bacSMarek Vasut #define RCAR_APMU_RVBARPL_VLD 0x00000001U 108*b45b5bacSMarek Vasut 109*b45b5bacSMarek Vasut /* Soft Power On Reset Control Register 0 */ 110*b45b5bacSMarek Vasut #define RCAR_SRESCR (UL(0xE6160018) + (RCAR_DOMAIN * UL(0x4000))) 111*b45b5bacSMarek Vasut 112*b45b5bacSMarek Vasut /* Product register */ 113*b45b5bacSMarek Vasut #define RCAR_PRR UL(0xFFF00044) 114*b45b5bacSMarek Vasut #define RCAR_CPU_HAVE_CAXX 0x00000000U 115*b45b5bacSMarek Vasut #define PRR_CAXX_XX_EN_CLUSTER_MASK 0x00000004U 116*b45b5bacSMarek Vasut 117*b45b5bacSMarek Vasut /* Memory mapped Generic timer interfaces */ 118*b45b5bacSMarek Vasut #define ARM_SYS_CNTCTL_BASE RCAR_CNTC_BASE 119*b45b5bacSMarek Vasut 120*b45b5bacSMarek Vasut /* MPIDR_EL1 */ 121*b45b5bacSMarek Vasut #define RCAR_MPIDR_AFFMASK 0x00FFFF00U 122*b45b5bacSMarek Vasut 123*b45b5bacSMarek Vasut /* CPUPWRCTLR */ 124*b45b5bacSMarek Vasut #define CPUPWRCTLR_PWDN 0x00000001U 125*b45b5bacSMarek Vasut 126*b45b5bacSMarek Vasut /* For DDR self refresh */ 127*b45b5bacSMarek Vasut #define DBSC4_REG_BASE UL(0xE6790000) 128*b45b5bacSMarek Vasut #define DBSC4_REG_DBSYSCNT0 (DBSC4_REG_BASE + UL(0x0100)) 129*b45b5bacSMarek Vasut #define DBSC4_REG_DBACEN (DBSC4_REG_BASE + UL(0x0200)) 130*b45b5bacSMarek Vasut #define DBSC4_REG_DBRFEN (DBSC4_REG_BASE + UL(0x0204)) 131*b45b5bacSMarek Vasut #define DBSC4_REG_DBCMD (DBSC4_REG_BASE + UL(0x0208)) 132*b45b5bacSMarek Vasut #define DBSC4_REG_DBWAIT (DBSC4_REG_BASE + UL(0x0210)) 133*b45b5bacSMarek Vasut #define DBSC4_REG_DBCALCNF (DBSC4_REG_BASE + UL(0x0424)) 134*b45b5bacSMarek Vasut #define DBSC4_REG_DBDFIPMSTRCNF (DBSC4_REG_BASE + UL(0x0520)) 135*b45b5bacSMarek Vasut #define DBSC4_REG_DBCAM0CTRL0 (DBSC4_REG_BASE + UL(0x0940)) 136*b45b5bacSMarek Vasut #define DBSC4_REG_DBCAM0STAT0 (DBSC4_REG_BASE + UL(0x0980)) 137*b45b5bacSMarek Vasut 138*b45b5bacSMarek Vasut #define DBSC4_SET_DBSYSCNT0_WRITE_ENABLE 0x00001234U 139*b45b5bacSMarek Vasut #define DBSC4_SET_DBSYSCNT0_WRITE_DISABLE 0x00000000U 140*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_OPC_PRE 0x04000000U 141*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_OPC_SR 0x0A000000U 142*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_OPC_MRW 0x0E000000U 143*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_OPC_PD 0x08000000U 144*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_CH_ALL 0x00800000U 145*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_RANK_ALL 0x00040000U 146*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_ARG_ALL 0x00000010U 147*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_ARG_ENTER 0x00000000U 148*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_ARG_MRW_ODTC 0x00000B00U 149*b45b5bacSMarek Vasut #define DBSC4_BIT_DBDFIPMSTRCNF_PMSTREN 0x00000001U 150*b45b5bacSMarek Vasut #define DBSC4_BIT_DBCAM0STAT0 0x00000001U 151*b45b5bacSMarek Vasut #define RCAR_WAIT_DBCS4_FLUSH 50UL 152*b45b5bacSMarek Vasut 153*b45b5bacSMarek Vasut #endif /* RCAR_DEF_H */ 154