xref: /rk3399_ARM-atf/plat/imx/imx8ulp/xrdc/xrdc_config.h (revision abf7bb50422a3bdb6ed207c14bf18cc127dc3359)
1ac5d69b6SJacky Bai /*
2ac5d69b6SJacky Bai  * Copyright 2020-2024 NXP
3ac5d69b6SJacky Bai  *
4ac5d69b6SJacky Bai  * SPDX-License-Identifier: BSD-3-Clause
5ac5d69b6SJacky Bai  */
6ac5d69b6SJacky Bai 
7ac5d69b6SJacky Bai #include <xrdc.h>
8ac5d69b6SJacky Bai 
9ac5d69b6SJacky Bai #define SP(X)		((X) << 9)
10ac5d69b6SJacky Bai #define SU(X)		((X) << 6)
11ac5d69b6SJacky Bai #define NP(X)		((X) << 3)
12ac5d69b6SJacky Bai #define NU(X)		((X) << 0)
13ac5d69b6SJacky Bai 
14ac5d69b6SJacky Bai #define RWX		7
15ac5d69b6SJacky Bai #define RW		6
16ac5d69b6SJacky Bai #define R		4
17ac5d69b6SJacky Bai #define X		1
18ac5d69b6SJacky Bai 
19ac5d69b6SJacky Bai struct xrdc_mda_config imx8ulp_mda[] = {
20ac5d69b6SJacky Bai 	{ 0, 7, MDA_SA_PT }, /* A core */
21ac5d69b6SJacky Bai 	{ 1, 1, MDA_SA_NS }, /* DMA1 */
22ac5d69b6SJacky Bai 	{ 2, 1, MDA_SA_NS }, /* USB */
23ac5d69b6SJacky Bai 	{ 3, 1, MDA_SA_NS }, /* PXP-> .M10 */
24ac5d69b6SJacky Bai 	{ 4, 1, MDA_SA_NS }, /* ENET */
25ac5d69b6SJacky Bai 	{ 5, 1, MDA_SA_PT }, /* CAAM */
26ac5d69b6SJacky Bai 	{ 6, 1, MDA_SA_NS }, /* USDHC0 */
27ac5d69b6SJacky Bai 	{ 7, 1, MDA_SA_NS }, /* USDHC1 */
28ac5d69b6SJacky Bai 	{ 8, 1, MDA_SA_NS }, /* USDHC2 */
29ac5d69b6SJacky Bai 	{ 9, 2, MDA_SA_NS }, /* HIFI4 */
30ac5d69b6SJacky Bai 	{ 10, 3, MDA_SA_NS }, /* GPU3D */
31ac5d69b6SJacky Bai 	{ 11, 3, MDA_SA_NS }, /* GPU2D */
32ac5d69b6SJacky Bai 	{ 12, 3, MDA_SA_NS }, /* EPDC */
33ac5d69b6SJacky Bai 	{ 13, 3, MDA_SA_NS }, /* DCNano */
34ac5d69b6SJacky Bai 	{ 14, 3, MDA_SA_NS }, /* ISI */
35ac5d69b6SJacky Bai 	{ 15, 3, MDA_SA_NS }, /* PXP->NIC_LPAV.M0 */
36ac5d69b6SJacky Bai 	{ 16, 3, MDA_SA_NS }, /* DMA2 */
37ac5d69b6SJacky Bai };
38ac5d69b6SJacky Bai 
39ff5e1793SYe Li #ifdef SPD_opteed
40ff5e1793SYe Li #define TEE_SHM_SIZE 0x400000
41ff5e1793SYe Li #else
42ff5e1793SYe Li #define TEE_SHM_SIZE 0x0
43ff5e1793SYe Li #endif
44ff5e1793SYe Li 
45ff5e1793SYe Li #if defined(SPD_opteed) || defined(SPD_trusty)
46ff5e1793SYe Li #define DRAM_MEM_0_START (0x80000000)
47ff5e1793SYe Li #define DRAM_MEM_0_SIZE (BL32_BASE - 0x80000000)
48ff5e1793SYe Li 
49ff5e1793SYe Li #define DRAM_MEM_1_START (BL32_BASE)
50ff5e1793SYe Li #define DRAM_MEM_1_SIZE (BL32_SIZE - TEE_SHM_SIZE)
51ff5e1793SYe Li 
525fd06421SJi Luo #ifndef SPD_trusty
53ff5e1793SYe Li #define DRAM_MEM_2_START (DRAM_MEM_1_START + DRAM_MEM_1_SIZE)
54ff5e1793SYe Li #define DRAM_MEM_2_SIZE (0x80000000 - DRAM_MEM_1_SIZE - DRAM_MEM_0_SIZE)
555fd06421SJi Luo #else
565fd06421SJi Luo #define SECURE_HEAP_START   (0xA9600000)
575fd06421SJi Luo #define SECURE_HEAP_SIZE    (0x6000000)
585fd06421SJi Luo #define DRAM_MEM_END        (0x100000000)
595fd06421SJi Luo 
605fd06421SJi Luo #define DRAM_MEM_2_START (DRAM_MEM_1_START + DRAM_MEM_1_SIZE)
615fd06421SJi Luo #define DRAM_MEM_2_SIZE  (SECURE_HEAP_START - DRAM_MEM_2_START)
625fd06421SJi Luo #define DRAM_MEM_3_START (DRAM_MEM_2_START + DRAM_MEM_2_SIZE)
635fd06421SJi Luo #define DRAM_MEM_3_SIZE  (SECURE_HEAP_SIZE)
645fd06421SJi Luo #define DRAM_MEM_4_START (DRAM_MEM_3_START + DRAM_MEM_3_SIZE)
655fd06421SJi Luo #define DRAM_MEM_4_SIZE  (DRAM_MEM_END - DRAM_MEM_4_START)
665fd06421SJi Luo #endif
67ff5e1793SYe Li #endif
68ff5e1793SYe Li 
69ac5d69b6SJacky Bai struct xrdc_mrc_config imx8ulp_mrc[] = {
70ac5d69b6SJacky Bai 	{ 0, 0, 0x0,        0x30000,    {0, 0, 0, 0, 0, 0, 0, 1}, {0xfff, 0} }, /* ROM1 */
71ac5d69b6SJacky Bai 	{ 1, 0, 0x60000000, 0x10000000, {1, 1, 0, 0, 1, 0, 1, 1}, {0xfff, 0} }, /* Flexspi2 */
72ac5d69b6SJacky Bai 	{ 2, 0, 0x22020000, 0x40000,    {1, 1, 0, 0, 1, 0, 1, 1}, {0xfff, 0} }, /* SRAM2 */
73ac5d69b6SJacky Bai 	{ 3, 0, 0x22010000, 0x10000,    {1, 1, 0, 0, 1, 0, 1, 1}, {0xfff, 0} }, /* SRAM0 */
74ff5e1793SYe Li #if defined(SPD_opteed) || defined(SPD_trusty)
75ff5e1793SYe Li 	{ 4, 0, DRAM_MEM_0_START, DRAM_MEM_0_SIZE, {0, 1, 0, 0, 0, 0, 0, 1}, {0xfff, 0} }, /* DRAM for A35, DMA1, USDHC0*/
76ff5e1793SYe Li 	{ 4, 1, DRAM_MEM_1_START, DRAM_MEM_1_SIZE, {0, 1, 0, 0, 0, 0, 0, 1}, {0xfc0, 0} }, /* TEE DRAM for A35, DMA1, USDHC0*/
77ff5e1793SYe Li 	{ 4, 2, DRAM_MEM_2_START, DRAM_MEM_2_SIZE, {0, 1, 0, 0, 0, 0, 0, 1}, {0xfff, 0} }, /* DRAM for A35, DMA1, USDHC0*/
785fd06421SJi Luo #ifdef SPD_trusty
795fd06421SJi Luo 	{ 4, 3, DRAM_MEM_3_START, DRAM_MEM_3_SIZE, {0, 1, 0, 0, 0, 0, 0, 1}, {0xfc0, 0} }, /* DRAM for A35, DMA1, USDHC0*/
805fd06421SJi Luo 	{ 4, 4, DRAM_MEM_4_START, DRAM_MEM_4_SIZE, {0, 1, 0, 0, 0, 0, 0, 1}, {0xfff, 0} }, /* DRAM for A35, DMA1, USDHC0*/
815fd06421SJi Luo #endif
825fd06421SJi Luo 
83ff5e1793SYe Li 	{ 5, 0, DRAM_MEM_0_START, DRAM_MEM_0_SIZE, {0, 1, 0, 0, 0, 0, 0, 0}, {0xfff, 0} }, /* DRAM for NIC_PER */
84ff5e1793SYe Li 	{ 5, 1, DRAM_MEM_1_START, DRAM_MEM_1_SIZE, {0, 1, 0, 0, 0, 0, 0, 0}, {0xfc0, 0} }, /* TEE DRAM for NIC_PER */
85ff5e1793SYe Li 	{ 5, 2, DRAM_MEM_2_START, DRAM_MEM_2_SIZE, {0, 1, 0, 0, 0, 0, 0, 0}, {0xfff, 0} }, /* DRAM for NIC_PER */
865fd06421SJi Luo #ifdef SPD_trusty
875fd06421SJi Luo 	{ 5, 3, DRAM_MEM_3_START, DRAM_MEM_3_SIZE, {0, 1, 0, 0, 0, 0, 0, 0}, {0xfc0, 0} }, /* DRAM for NIC_PER */
885fd06421SJi Luo 	{ 5, 4, DRAM_MEM_4_START, DRAM_MEM_4_SIZE, {0, 1, 0, 0, 0, 0, 0, 0}, {0xfff, 0} }, /* DRAM for NIC_PER */
895fd06421SJi Luo #endif
905fd06421SJi Luo 
915fd06421SJi Luo #ifdef SPD_trusty
92d159c005SYe Li 	{ 6, 0, DRAM_MEM_0_START, DRAM_MEM_0_SIZE, {1, 1, 0, 2, 1, 0, 1, 1}, {0xfff, 0x93f} }, /* DRAM for LPAV and RTD*/
93d159c005SYe Li 	{ 6, 1, DRAM_MEM_1_START, DRAM_MEM_1_SIZE, {1, 1, 0, 1, 1, 0, 1, 1}, {0xfc0, 0} }, /* TEE DRAM for LPAV and RTD*/
94d159c005SYe Li 	{ 6, 2, DRAM_MEM_2_START, DRAM_MEM_2_SIZE, {1, 1, 0, 2, 1, 0, 1, 1}, {0xfff, 0x93f} }, /* DRAM for LPAV and RTD*/
95d159c005SYe Li 	{ 6, 3, DRAM_MEM_3_START, DRAM_MEM_3_SIZE, {1, 1, 0, 1, 1, 0, 1, 1}, {0xfc0, 0} }, /* DRAM for LPAV and RTD*/
96d159c005SYe Li 	{ 6, 4, DRAM_MEM_4_START, DRAM_MEM_4_SIZE, {1, 1, 0, 2, 1, 0, 1, 1}, {0xfff, 0x93f} }, /* DRAM for LPAV and RTD*/
975fd06421SJi Luo #else
98d159c005SYe Li 	{ 6, 0, DRAM_MEM_0_START, DRAM_MEM_0_SIZE, {1, 1, 0, 1, 1, 0, 1, 1}, {0xfff, 0} }, /* DRAM for LPAV and RTD*/
99d159c005SYe Li 	{ 6, 1, DRAM_MEM_1_START, DRAM_MEM_1_SIZE, {1, 1, 0, 1, 1, 0, 1, 1}, {0xfc0, 0} }, /* TEE DRAM for LPAV and RTD*/
100d159c005SYe Li 	{ 6, 2, DRAM_MEM_2_START, DRAM_MEM_2_SIZE, {1, 1, 0, 1, 1, 0, 1, 1}, {0xfff, 0} }, /* DRAM for LPAV and RTD*/
1015fd06421SJi Luo #endif
102ff5e1793SYe Li #else
103ff5e1793SYe Li 	{ 4, 0, 0x80000000, 0x80000000, {0, 1, 0, 0, 0, 0, 0, 1}, {0xfff, 0} }, /* DRAM for A35, DMA1, USDHC0*/
104ff5e1793SYe Li 	{ 5, 0, 0x80000000, 0x80000000, {0, 1, 0, 0, 0, 0, 0, 0}, {0xfff, 0} }, /* DRAM for NIC_PER */
105d159c005SYe Li 	{ 6, 0, 0x80000000, 0x80000000, {1, 1, 0, 1, 1, 0, 1, 1}, {0xfff, 0} }, /* DRAM for LPAV and RTD*/
106ff5e1793SYe Li #endif
107ac5d69b6SJacky Bai 	{ 7, 0, 0x80000000, 0x10000000, {0, 0, 1, 0, 0, 0, 0, 0}, {0xfff, 0} }, /* DRAM for HIFI4 */
108ac5d69b6SJacky Bai 	{ 7, 1, 0x90000000, 0x10000000, {0, 0, 1, 0, 0, 0, 0, 0}, {0xfff, 0} }, /* DRAM for HIFI4 */
109ac5d69b6SJacky Bai 	{ 8, 0, 0x21000000, 0x10000,    {1, 1, 1, 1, 1, 0, 1, 1}, {0xfff, 0} }, /* SRAM1 */
110ac5d69b6SJacky Bai 	{ 9, 0, 0x1ffc0000, 0xc0000,    {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0} }, /* SSRAM for HIFI4 */
111ac5d69b6SJacky Bai 	{ 10, 0, 0x1ffc0000, 0xc0000,   {0, 0, 0, 0, 0, 0, 0, 0}, {0, 0} }, /* SSRAM for LPAV */
112ac5d69b6SJacky Bai 	{ 11, 0, 0x21170000, 0x10000,   {0, 0, 1, 0, 0, 0, 0, 2}, {0xfff, SP(RW) | SU(RW) | NP(RW)} }, /* HIFI4 TCM */
113ac5d69b6SJacky Bai 	{ 11, 1, 0x21180000, 0x10000,   {0, 0, 1, 0, 0, 0, 0, 2}, {SP(RW) | SU(RW) | NP(RW) | NU(RW), SP(RW) | SU(RW) | NP(RW)} }, /* HIFI4 TCM */
114ac5d69b6SJacky Bai 	{ 12, 0, 0x2d400000, 0x100000,  {0, 0, 0, 0, 0, 0, 0, 1}, {SP(RW) | SU(RW) | NP(RW) | NU(RW), 0} }, /* GIC500 */
115ac5d69b6SJacky Bai };
116ac5d69b6SJacky Bai 
117ac5d69b6SJacky Bai struct xrdc_pac_msc_config imx8ulp_pdac[] = {
118ac5d69b6SJacky Bai 	{ 0, PAC_SLOT_ALL, {0, 7, 0, 0, 0, 0, 0, 7} }, /* PAC0 */
119*351976bbSLaurentiu Mihalcea 	{ 0, 44, {0, 7, 7, 0, 0, 0, 0, 7} }, /* PAC0 slot 44 for CGC1 */
120ac5d69b6SJacky Bai 	{ 0, 36, {0, 0, 0, 0, 0, 0, 7, 7} }, /* PAC0 slot 36 for CMC1 */
121ac5d69b6SJacky Bai 	{ 0, 41, {0, 0, 0, 0, 0, 0, 7, 7} }, /* PAC0 slot 41 for SIM_AD */
122ac5d69b6SJacky Bai 	{ 1, PAC_SLOT_ALL, {0, 7, 0, 0, 0, 0, 0, 7} }, /* PAC1 */
123*351976bbSLaurentiu Mihalcea 	{ 1, 0, {0, 7, 7, 0, 0, 0, 7, 7} }, /* PAC1 slot 0 for PCC4 */
124ac5d69b6SJacky Bai 	{ 1, 6, {0, 7, 7, 0, 0, 0, 0, 7} }, /* PAC1 slot 6 for LPUART6 */
125*351976bbSLaurentiu Mihalcea 	{ 1, 7, {0, 7, 7, 0, 0, 0, 0, 7} }, /* PAC1 slot 7 for LPUART7 */
126ac5d69b6SJacky Bai 	{ 1, 9,  {0, 7, 7, 7, 0, 0, 0, 7} }, /* SAI5 for HIFI4 and eDMA2 */
127*351976bbSLaurentiu Mihalcea 	{ 1, 12, {0, 7, 7, 0, 0, 0, 7, 7} }, /* PAC1 slot 12 for IOMUXC1 */
128ac5d69b6SJacky Bai 	{ 2, PAC_SLOT_ALL, {7, 7, 7, 7, 0, 0, 7, 7} }, /* PAC2 */
129ac5d69b6SJacky Bai };
130ac5d69b6SJacky Bai 
131ac5d69b6SJacky Bai struct xrdc_pac_msc_config imx8ulp_msc[] = {
132ac5d69b6SJacky Bai 	{ 0, 0, {0, 0, 0, 0, 0, 0, 7, 7} }, /* MSC0 GPIOE */
133ac5d69b6SJacky Bai 	{ 0, 1, {0, 0, 0, 0, 0, 0, 7, 7} }, /* MSC0 GPIOF */
134ac5d69b6SJacky Bai 	{ 1, MSC_SLOT_ALL, {0, 0, 0, 0, 0, 0, 7, 7} }, /* MSC1 GPIOD */
135ac5d69b6SJacky Bai 	{ 2, MSC_SLOT_ALL, {0, 0, 0, 0, 0, 0, 7, 7} }, /* MSC2 GPU3D/2D/DCNANO/DDR registers */
136ac5d69b6SJacky Bai };
137