1780e3f24SHeiko Stuebner /* 2780e3f24SHeiko Stuebner * Copyright (c) 2016-2019, ARM Limited and Contributors. All rights reserved. 3780e3f24SHeiko Stuebner * 4780e3f24SHeiko Stuebner * SPDX-License-Identifier: BSD-3-Clause 5780e3f24SHeiko Stuebner */ 6780e3f24SHeiko Stuebner 7780e3f24SHeiko Stuebner #ifndef RK3288_DEF_H 8780e3f24SHeiko Stuebner #define RK3288_DEF_H 9780e3f24SHeiko Stuebner 10780e3f24SHeiko Stuebner /* Special value used to verify platform parameters from BL2 to BL31 */ 11780e3f24SHeiko Stuebner #define RK_BL31_PLAT_PARAM_VAL 0x0f1e2d3c4b5a6978ULL 12780e3f24SHeiko Stuebner 13780e3f24SHeiko Stuebner #define SIZE_K(n) ((n) * 1024) 14780e3f24SHeiko Stuebner #define SIZE_M(n) ((n) * 1024 * 1024) 15780e3f24SHeiko Stuebner 16780e3f24SHeiko Stuebner #define SRAM_TEXT_LIMIT (4 * 1024) 17780e3f24SHeiko Stuebner #define SRAM_DATA_LIMIT (4 * 1024) 18780e3f24SHeiko Stuebner 19780e3f24SHeiko Stuebner #define DDR_PCTL0_BASE 0xff610000 20780e3f24SHeiko Stuebner #define DDR_PCTL0_SIZE SIZE_K(64) 21780e3f24SHeiko Stuebner 22780e3f24SHeiko Stuebner #define DDR_PHY0_BASE 0xff620000 23780e3f24SHeiko Stuebner #define DDR_PHY0_SIZE SIZE_K(64) 24780e3f24SHeiko Stuebner 25780e3f24SHeiko Stuebner #define DDR_PCTL1_BASE 0xff630000 26780e3f24SHeiko Stuebner #define DDR_PCTL1_SIZE SIZE_K(64) 27780e3f24SHeiko Stuebner 28780e3f24SHeiko Stuebner #define DDR_PHY1_BASE 0xff640000 29780e3f24SHeiko Stuebner #define DDR_PHY1_SIZE SIZE_K(64) 30780e3f24SHeiko Stuebner 31*0957b9b2SChristoph Müllner #define UART0_BASE 0xff180000 32*0957b9b2SChristoph Müllner #define UART0_SIZE SIZE_K(64) 33*0957b9b2SChristoph Müllner 34*0957b9b2SChristoph Müllner #define UART1_BASE 0xff190000 35*0957b9b2SChristoph Müllner #define UART1_SIZE SIZE_K(64) 36*0957b9b2SChristoph Müllner 37*0957b9b2SChristoph Müllner #define UART2_BASE 0xff690000 38*0957b9b2SChristoph Müllner #define UART2_SIZE SIZE_K(64) 39*0957b9b2SChristoph Müllner 40*0957b9b2SChristoph Müllner #define UART3_BASE 0xff1b0000 41*0957b9b2SChristoph Müllner #define UART3_SIZE SIZE_K(64) 42*0957b9b2SChristoph Müllner 43*0957b9b2SChristoph Müllner #define UART4_BASE 0xff1c0000 44*0957b9b2SChristoph Müllner #define UART4_SIZE SIZE_K(64) 45780e3f24SHeiko Stuebner 46780e3f24SHeiko Stuebner /* 96k instead of 64k? */ 47780e3f24SHeiko Stuebner #define SRAM_BASE 0xff700000 48780e3f24SHeiko Stuebner #define SRAM_SIZE SIZE_K(64) 49780e3f24SHeiko Stuebner 50780e3f24SHeiko Stuebner #define PMUSRAM_BASE 0xff720000 51780e3f24SHeiko Stuebner #define PMUSRAM_SIZE SIZE_K(4) 52780e3f24SHeiko Stuebner #define PMUSRAM_RSIZE SIZE_K(4) 53780e3f24SHeiko Stuebner 54780e3f24SHeiko Stuebner #define PMU_BASE 0xff730000 55780e3f24SHeiko Stuebner #define PMU_SIZE SIZE_K(64) 56780e3f24SHeiko Stuebner 57780e3f24SHeiko Stuebner #define SGRF_BASE 0xff740000 58780e3f24SHeiko Stuebner #define SGRF_SIZE SIZE_K(64) 59780e3f24SHeiko Stuebner 60780e3f24SHeiko Stuebner #define CRU_BASE 0xff760000 61780e3f24SHeiko Stuebner #define CRU_SIZE SIZE_K(64) 62780e3f24SHeiko Stuebner 63780e3f24SHeiko Stuebner #define GRF_BASE 0xff770000 64780e3f24SHeiko Stuebner #define GRF_SIZE SIZE_K(64) 65780e3f24SHeiko Stuebner 66780e3f24SHeiko Stuebner /* timer 6+7 can be set as secure in SGRF */ 67780e3f24SHeiko Stuebner #define STIME_BASE 0xff810000 68780e3f24SHeiko Stuebner #define STIME_SIZE SIZE_K(64) 69780e3f24SHeiko Stuebner 70780e3f24SHeiko Stuebner #define SERVICE_BUS_BASE 0xffac0000 71780e3f24SHeiko Stuebner #define SERVICE_BUS_SIZE SIZE_K(64) 72780e3f24SHeiko Stuebner 73780e3f24SHeiko Stuebner #define TZPC_BASE 0xffb00000 74780e3f24SHeiko Stuebner #define TZPC_SIZE SIZE_K(64) 75780e3f24SHeiko Stuebner 76780e3f24SHeiko Stuebner #define GIC400_BASE 0xffc00000 77780e3f24SHeiko Stuebner #define GIC400_SIZE SIZE_K(64) 78780e3f24SHeiko Stuebner 79780e3f24SHeiko Stuebner #define CORE_AXI_BUS_BASE 0xffd00000 80780e3f24SHeiko Stuebner #define CORE_AXI_BUS_SIZE SIZE_M(1) 81780e3f24SHeiko Stuebner 82780e3f24SHeiko Stuebner #define COLD_BOOT_BASE 0xffff0000 83780e3f24SHeiko Stuebner /************************************************************************** 84780e3f24SHeiko Stuebner * UART related constants 85780e3f24SHeiko Stuebner **************************************************************************/ 86780e3f24SHeiko Stuebner #define RK3288_BAUDRATE 115200 87780e3f24SHeiko Stuebner #define RK3288_UART_CLOCK 24000000 88780e3f24SHeiko Stuebner 89780e3f24SHeiko Stuebner /****************************************************************************** 90780e3f24SHeiko Stuebner * System counter frequency related constants 91780e3f24SHeiko Stuebner ******************************************************************************/ 92780e3f24SHeiko Stuebner #define SYS_COUNTER_FREQ_IN_TICKS 24000000 93780e3f24SHeiko Stuebner 94780e3f24SHeiko Stuebner /****************************************************************************** 95780e3f24SHeiko Stuebner * GIC-400 & interrupt handling related constants 96780e3f24SHeiko Stuebner ******************************************************************************/ 97780e3f24SHeiko Stuebner 98780e3f24SHeiko Stuebner /* Base rk_platform compatible GIC memory map */ 99780e3f24SHeiko Stuebner #define RK3288_GICD_BASE (GIC400_BASE + 0x1000) 100780e3f24SHeiko Stuebner #define RK3288_GICC_BASE (GIC400_BASE + 0x2000) 101780e3f24SHeiko Stuebner #define RK3288_GICR_BASE 0 /* no GICR in GIC-400 */ 102780e3f24SHeiko Stuebner 103780e3f24SHeiko Stuebner /****************************************************************************** 104780e3f24SHeiko Stuebner * sgi, ppi 105780e3f24SHeiko Stuebner ******************************************************************************/ 106780e3f24SHeiko Stuebner #define RK_IRQ_SEC_PHY_TIMER 29 107780e3f24SHeiko Stuebner 108780e3f24SHeiko Stuebner /* what are these, and are they present on rk3288? */ 109780e3f24SHeiko Stuebner #define RK_IRQ_SEC_SGI_0 8 110780e3f24SHeiko Stuebner #define RK_IRQ_SEC_SGI_1 9 111780e3f24SHeiko Stuebner #define RK_IRQ_SEC_SGI_2 10 112780e3f24SHeiko Stuebner #define RK_IRQ_SEC_SGI_3 11 113780e3f24SHeiko Stuebner #define RK_IRQ_SEC_SGI_4 12 114780e3f24SHeiko Stuebner #define RK_IRQ_SEC_SGI_5 13 115780e3f24SHeiko Stuebner #define RK_IRQ_SEC_SGI_6 14 116780e3f24SHeiko Stuebner #define RK_IRQ_SEC_SGI_7 15 117780e3f24SHeiko Stuebner 118780e3f24SHeiko Stuebner /* 119780e3f24SHeiko Stuebner * Define a list of Group 0 interrupts. 120780e3f24SHeiko Stuebner */ 121780e3f24SHeiko Stuebner #define PLAT_RK_GICV2_G0_IRQS \ 122780e3f24SHeiko Stuebner INTR_PROP_DESC(RK_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, \ 123780e3f24SHeiko Stuebner GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL), \ 124780e3f24SHeiko Stuebner INTR_PROP_DESC(RK_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, \ 125780e3f24SHeiko Stuebner GICV2_INTR_GROUP0, GIC_INTR_CFG_LEVEL) 126780e3f24SHeiko Stuebner 127780e3f24SHeiko Stuebner #endif /* RK3288_DEF_H */ 128