1*036935a8SXiaoDong Huang /* SPDX-License-Identifier: BSD-3-Clause */ 2*036935a8SXiaoDong Huang /* 3*036935a8SXiaoDong Huang * Copyright (c) 2025, Rockchip Electronics Co., Ltd. 4*036935a8SXiaoDong Huang */ 5*036935a8SXiaoDong Huang 6*036935a8SXiaoDong Huang #ifndef __PLAT_DEF_H__ 7*036935a8SXiaoDong Huang #define __PLAT_DEF_H__ 8*036935a8SXiaoDong Huang 9*036935a8SXiaoDong Huang #define SIZE_K(n) ((n) * 1024) 10*036935a8SXiaoDong Huang #define SIZE_M(n) ((n) * 1024 * 1024) 11*036935a8SXiaoDong Huang 12*036935a8SXiaoDong Huang #define WITH_16BITS_WMSK(bits) (0xffff0000 | (bits)) 13*036935a8SXiaoDong Huang #define BITS_WMSK(msk, shift) ((msk) << ((shift) + REG_MSK_SHIFT)) 14*036935a8SXiaoDong Huang 15*036935a8SXiaoDong Huang /* Special value used to verify platform parameters from BL2 to BL3-1 */ 16*036935a8SXiaoDong Huang #define RK_BL31_PLAT_PARAM_VAL 0x0f1e2d3c4b5a6978ULL 17*036935a8SXiaoDong Huang 18*036935a8SXiaoDong Huang #define RK3576_DEV_RNG0_BASE 0x00000000 19*036935a8SXiaoDong Huang #define RK3576_DEV_RNG0_SIZE 0x40000000 20*036935a8SXiaoDong Huang 21*036935a8SXiaoDong Huang #define RK_DRAM_BASE 0x40000000 22*036935a8SXiaoDong Huang 23*036935a8SXiaoDong Huang /* All slave base address declare below */ 24*036935a8SXiaoDong Huang #define MCU_TCM_BASE 0x23800000 25*036935a8SXiaoDong Huang #define MCU_CACHE_BASE 0x23810000 26*036935a8SXiaoDong Huang #define MCU_RAM_TEST_BASE 0x23820000 27*036935a8SXiaoDong Huang #define MCU_BOOT_BASE 0x00000000 28*036935a8SXiaoDong Huang #define MCU_MAIN_BASE 0x00010000 29*036935a8SXiaoDong Huang #define PMU0SGRF_BASE 0x26000000 30*036935a8SXiaoDong Huang #define PMU1SGRF_BASE 0x26002000 31*036935a8SXiaoDong Huang #define PMU1SGRF_FW_BASE 0x26003000 32*036935a8SXiaoDong Huang #define SYS_SGRF_BASE 0x26004000 33*036935a8SXiaoDong Huang #define SYS_SGRF_FW_BASE 0x26005000 34*036935a8SXiaoDong Huang #define SYS_GRF_BASE 0x2600a000 35*036935a8SXiaoDong Huang #define BIGCORE_GRF_BASE 0x2600c000 36*036935a8SXiaoDong Huang #define LITCORE_GRF_BASE 0x2600e000 37*036935a8SXiaoDong Huang #define CCI_GRF_BASE 0x26010000 38*036935a8SXiaoDong Huang #define DDR_GRF_BASE 0x26012000 39*036935a8SXiaoDong Huang #define CENTER_GRF_BASE 0x26014000 40*036935a8SXiaoDong Huang #define GPUGRF_BASE 0x26016000 41*036935a8SXiaoDong Huang #define NPUGRF_BASE 0x26018000 42*036935a8SXiaoDong Huang #define VO_GRF_BASE 0x2601a000 43*036935a8SXiaoDong Huang #define VI_GRF_BASE 0x2601c000 44*036935a8SXiaoDong Huang #define USB_GRF_BASE 0x2601e000 45*036935a8SXiaoDong Huang #define PHP_GRF_BASE 0x26020000 46*036935a8SXiaoDong Huang #define VOP_GRF_BASE 0x26022000 47*036935a8SXiaoDong Huang #define PMU0_GRF_BASE 0x26024000 48*036935a8SXiaoDong Huang #define PMU1_GRF_BASE 0x26026000 49*036935a8SXiaoDong Huang #define USBDPPHY_GRF_BASE 0x2602c000 50*036935a8SXiaoDong Huang #define USB2PHY0_GRF_BASE 0x2602e000 51*036935a8SXiaoDong Huang #define USB2PHY1_GRF_BASE 0x26030000 52*036935a8SXiaoDong Huang #define PMU0_IOC_BASE 0x26040000 53*036935a8SXiaoDong Huang #define PMU1_IOC_BASE 0x26042000 54*036935a8SXiaoDong Huang #define TOP_IOC_BASE 0x26044000 55*036935a8SXiaoDong Huang #define VCCIO_IOC_BASE 0x26046000 56*036935a8SXiaoDong Huang #define VCCIO6_IOC_BASE 0x2604a000 57*036935a8SXiaoDong Huang #define VCCIO7_IOC_BASE 0x2604b000 58*036935a8SXiaoDong Huang #define CRU_BASE 0x27200000 59*036935a8SXiaoDong Huang #define PHP_CRU_BASE 0x27208000 60*036935a8SXiaoDong Huang #define SECURE_CRU_BASE 0x27210000 61*036935a8SXiaoDong Huang #define PMU1_CRU_BASE 0x27220000 62*036935a8SXiaoDong Huang #define DDRPHY0_CRU_BASE 0x27228000 63*036935a8SXiaoDong Huang #define DDRPHY1_CRU_BASE 0x27230000 64*036935a8SXiaoDong Huang #define BIGCORE_CRU_BASE 0x27238000 65*036935a8SXiaoDong Huang #define LITTLE_CRU_BASE 0x27240000 66*036935a8SXiaoDong Huang #define CCI_CRU_BASE 0x27248000 67*036935a8SXiaoDong Huang #define PVTPLL_CCI_BASE 0x27250000 68*036935a8SXiaoDong Huang #define PVTPLL_BIGCORE_BASE 0x27258000 69*036935a8SXiaoDong Huang #define PVTPLL_LITCORE_BASE 0x27260000 70*036935a8SXiaoDong Huang #define PVTPLL_GPU_BASE 0x27268000 71*036935a8SXiaoDong Huang #define PVTPLL_NPU_BASE 0x27270000 72*036935a8SXiaoDong Huang #define PVTPLL_CRU_BASE 0x27278000 73*036935a8SXiaoDong Huang #define I2C0_BASE 0x27300000 74*036935a8SXiaoDong Huang #define UART1_BASE 0x27310000 75*036935a8SXiaoDong Huang #define GPIO0_BASE 0x27320000 76*036935a8SXiaoDong Huang #define PWM0_BASE 0x27330000 77*036935a8SXiaoDong Huang #define WDT_PMU_BASE 0x27340000 78*036935a8SXiaoDong Huang #define TIMER_PMU_BASE 0x27350000 79*036935a8SXiaoDong Huang #define PMU_BASE 0x27360000 80*036935a8SXiaoDong Huang #define PMU0_BASE 0x27360000 81*036935a8SXiaoDong Huang #define PMU1_BASE 0x27370000 82*036935a8SXiaoDong Huang #define PMU2_BASE 0x27380000 83*036935a8SXiaoDong Huang #define PVTM_PMU_BASE 0x273f0000 84*036935a8SXiaoDong Huang #define HPTIMER_BASE 0x27400000 85*036935a8SXiaoDong Huang #define CCI_BASE 0x27500000 86*036935a8SXiaoDong Huang #define VOP_BASE 0x27d00000 87*036935a8SXiaoDong Huang #define INTERCONNECT_BASE 0x27f00000 88*036935a8SXiaoDong Huang #define FW_CCI2DDR_BASE 0x27f80000 89*036935a8SXiaoDong Huang #define FW_CENTER2DDR_BASE 0x27f90000 90*036935a8SXiaoDong Huang #define FW_SYSMEM_BASE 0x27fa0000 91*036935a8SXiaoDong Huang #define FW_VOP2DDR_BASE 0x27fb0000 92*036935a8SXiaoDong Huang #define FW_CBUF_BASE 0x27fc0000 93*036935a8SXiaoDong Huang #define FIREWALL_DDR_BASE 0x27f80000 94*036935a8SXiaoDong Huang #define DDRCTL0_BASE 0x28000000 95*036935a8SXiaoDong Huang #define DDRCTL1_BASE 0x29000000 96*036935a8SXiaoDong Huang #define DDR_MONITOR0_BASE 0x2a000000 97*036935a8SXiaoDong Huang #define DDR_MONITOR1_BASE 0x2a010000 98*036935a8SXiaoDong Huang #define DDRPHY0_BASE 0x2a020000 99*036935a8SXiaoDong Huang #define DDRPHY1_BASE 0x2a030000 100*036935a8SXiaoDong Huang #define HWLP0_BASE 0x2a060000 101*036935a8SXiaoDong Huang #define HWLP1_BASE 0x2a070000 102*036935a8SXiaoDong Huang #define KEYLADDER_BASE 0x2a420000 103*036935a8SXiaoDong Huang #define CRYPTO_S_BASE 0x2a430000 104*036935a8SXiaoDong Huang #define OTP_S_BASE 0x2a480000 105*036935a8SXiaoDong Huang #define DCF_BASE 0x2a490000 106*036935a8SXiaoDong Huang #define STIMER0_BASE 0x2a4a0000 107*036935a8SXiaoDong Huang #define STIMER1_BASE 0x2a4b0000 108*036935a8SXiaoDong Huang #define WDT_S_BASE 0x2a4c0000 109*036935a8SXiaoDong Huang #define OTP_MASK_BASE 0x2a4d0000 110*036935a8SXiaoDong Huang #define OTP_NS_BASE 0x2a580000 111*036935a8SXiaoDong Huang #define GIC400_BASE 0x2a700000 112*036935a8SXiaoDong Huang #define I2C1_BASE 0x2ac40000 113*036935a8SXiaoDong Huang #define NSTIMER0_BASE 0x2acc0000 114*036935a8SXiaoDong Huang #define NSTIMER1_BASE 0x2acd0000 115*036935a8SXiaoDong Huang #define WDT_NS_BASE 0x2ace0000 116*036935a8SXiaoDong Huang #define UART0_BASE 0x2ad40000 117*036935a8SXiaoDong Huang #define UART2_BASE 0x2ad50000 118*036935a8SXiaoDong Huang #define UART3_BASE 0x2ad60000 119*036935a8SXiaoDong Huang #define UART4_BASE 0x2ad70000 120*036935a8SXiaoDong Huang #define UART5_BASE 0x2ad80000 121*036935a8SXiaoDong Huang #define UART6_BASE 0x2ad90000 122*036935a8SXiaoDong Huang #define UART7_BASE 0x2ada0000 123*036935a8SXiaoDong Huang #define UART8_BASE 0x2adb0000 124*036935a8SXiaoDong Huang #define UART9_BASE 0x2adc0000 125*036935a8SXiaoDong Huang #define PWM1_BASE 0x2add0000 126*036935a8SXiaoDong Huang #define PWM2_BASE 0x2ade0000 127*036935a8SXiaoDong Huang #define PWM3_BASE 0x2adf0000 128*036935a8SXiaoDong Huang #define GPIO1_BASE 0x2ae10000 129*036935a8SXiaoDong Huang #define GPIO2_BASE 0x2ae20000 130*036935a8SXiaoDong Huang #define GPIO3_BASE 0x2ae30000 131*036935a8SXiaoDong Huang #define GPIO4_BASE 0x2ae40000 132*036935a8SXiaoDong Huang #define TSADC_BASE 0x2ae70000 133*036935a8SXiaoDong Huang 134*036935a8SXiaoDong Huang #define PMUSRAM_BASE 0x3fe70000 135*036935a8SXiaoDong Huang #define PMUSRAM_RSIZE SIZE_K(32) 136*036935a8SXiaoDong Huang 137*036935a8SXiaoDong Huang #define CBUF_BASE 0x3fe80000 138*036935a8SXiaoDong Huang #define SRAM_BASE 0x3ff80000 139*036935a8SXiaoDong Huang 140*036935a8SXiaoDong Huang #define STIMER0_CHN_BASE(i) (STIMER0_BASE + 0x1000 * (i)) 141*036935a8SXiaoDong Huang #define STIMER1_CHN_BASE(i) (STIMER1_BASE + 0x1000 * (i)) 142*036935a8SXiaoDong Huang 143*036935a8SXiaoDong Huang #define NSTIMER0_CHN_BASE(i) (NSTIMER0_BASE + 0x1000 * (i)) 144*036935a8SXiaoDong Huang #define NSTIMER1_CHN_BASE(i) (NSTIMER1_BASE + 0x1000 * (i)) 145*036935a8SXiaoDong Huang 146*036935a8SXiaoDong Huang #define DDRPHY_BASE_CH(n) (DDRPHY0_BASE + ((n) * 0x10000)) 147*036935a8SXiaoDong Huang #define DDRPHY_CRU_BASE_CH(n) (DDRPHY0_CRU_BASE + ((n) * 0x8000)) 148*036935a8SXiaoDong Huang #define UMCTL_BASE_CH(n) (DDRCTL0_BASE + ((n) * 0x1000000)) 149*036935a8SXiaoDong Huang #define HWLP_BASE_CH(n) (HWLP0_BASE + ((n) * 0x10000)) 150*036935a8SXiaoDong Huang #define MAILBOX1_BASE (0x2ae50000 + 0xb000) 151*036935a8SXiaoDong Huang 152*036935a8SXiaoDong Huang #define CRYPTO_S_BY_KEYLAD_BASE CRYPTO_S_BASE 153*036935a8SXiaoDong Huang 154*036935a8SXiaoDong Huang #define DDR_SHARE_MEM (RK_DRAM_BASE + SIZE_K(1024)) 155*036935a8SXiaoDong Huang #define DDR_SHARE_SIZE SIZE_K(64) 156*036935a8SXiaoDong Huang 157*036935a8SXiaoDong Huang #define SHARE_MEM_BASE DDR_SHARE_MEM 158*036935a8SXiaoDong Huang #define SHARE_MEM_PAGE_NUM 15 159*036935a8SXiaoDong Huang #define SHARE_MEM_SIZE SIZE_K(SHARE_MEM_PAGE_NUM * 4) 160*036935a8SXiaoDong Huang 161*036935a8SXiaoDong Huang #define SCMI_SHARE_MEM_BASE (SHARE_MEM_BASE + SHARE_MEM_SIZE) 162*036935a8SXiaoDong Huang #define SCMI_SHARE_MEM_SIZE SIZE_K(4) 163*036935a8SXiaoDong Huang 164*036935a8SXiaoDong Huang #define SMT_BUFFER_BASE SCMI_SHARE_MEM_BASE 165*036935a8SXiaoDong Huang #define SMT_BUFFER0_BASE SMT_BUFFER_BASE 166*036935a8SXiaoDong Huang 167*036935a8SXiaoDong Huang #define ROCKCHIP_PM_REG_REGION_MEM_SIZE SIZE_K(8) 168*036935a8SXiaoDong Huang 169*036935a8SXiaoDong Huang /****************************************************************************** 170*036935a8SXiaoDong Huang * sgi, ppi 171*036935a8SXiaoDong Huang ******************************************************************************/ 172*036935a8SXiaoDong Huang #define RK_IRQ_SEC_PHY_TIMER 29 173*036935a8SXiaoDong Huang 174*036935a8SXiaoDong Huang #define RK_IRQ_SEC_SGI_0 8 175*036935a8SXiaoDong Huang #define RK_IRQ_SEC_SGI_1 9 176*036935a8SXiaoDong Huang #define RK_IRQ_SEC_SGI_2 10 177*036935a8SXiaoDong Huang #define RK_IRQ_SEC_SGI_3 11 178*036935a8SXiaoDong Huang #define RK_IRQ_SEC_SGI_4 12 179*036935a8SXiaoDong Huang #define RK_IRQ_SEC_SGI_5 13 180*036935a8SXiaoDong Huang #define RK_IRQ_SEC_SGI_6 14 181*036935a8SXiaoDong Huang #define RK_IRQ_SEC_SGI_7 15 182*036935a8SXiaoDong Huang 183*036935a8SXiaoDong Huang /* 184*036935a8SXiaoDong Huang * Define a list of Group 0 interrupts. 185*036935a8SXiaoDong Huang */ 186*036935a8SXiaoDong Huang #define PLAT_RK_GICV2_G0_IRQS \ 187*036935a8SXiaoDong Huang INTR_PROP_DESC(RK_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, \ 188*036935a8SXiaoDong Huang GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL), \ 189*036935a8SXiaoDong Huang INTR_PROP_DESC(RK_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, \ 190*036935a8SXiaoDong Huang GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL) 191*036935a8SXiaoDong Huang 192*036935a8SXiaoDong Huang /* UART related constants */ 193*036935a8SXiaoDong Huang #define RK_DBG_UART_BASE UART0_BASE 194*036935a8SXiaoDong Huang #define RK_DBG_UART_BAUDRATE 1500000 195*036935a8SXiaoDong Huang #define RK_DBG_UART_CLOCK 24000000 196*036935a8SXiaoDong Huang 197*036935a8SXiaoDong Huang /* Base rk_platform compatible GIC memory map */ 198*036935a8SXiaoDong Huang #define PLAT_GICD_BASE (GIC400_BASE + 0x1000) 199*036935a8SXiaoDong Huang #define PLAT_GICC_BASE (GIC400_BASE + 0x2000) 200*036935a8SXiaoDong Huang #define PLAT_GICR_BASE 0 201*036935a8SXiaoDong Huang 202*036935a8SXiaoDong Huang /* CCI */ 203*036935a8SXiaoDong Huang #define PLAT_RK_CCI_BASE CCI_BASE 204*036935a8SXiaoDong Huang #define PLAT_RK_CCI_CLUSTER0_SL_IFACE_IX 1 205*036935a8SXiaoDong Huang #define PLAT_RK_CCI_CLUSTER1_SL_IFACE_IX 2 206*036935a8SXiaoDong Huang 207*036935a8SXiaoDong Huang #endif /* __PLAT_DEF_H__ */ 208