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 52*5fd06421SJi 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) 55*5fd06421SJi Luo #else 56*5fd06421SJi Luo #define SECURE_HEAP_START (0xA9600000) 57*5fd06421SJi Luo #define SECURE_HEAP_SIZE (0x6000000) 58*5fd06421SJi Luo #define DRAM_MEM_END (0x100000000) 59*5fd06421SJi Luo 60*5fd06421SJi Luo #define DRAM_MEM_2_START (DRAM_MEM_1_START + DRAM_MEM_1_SIZE) 61*5fd06421SJi Luo #define DRAM_MEM_2_SIZE (SECURE_HEAP_START - DRAM_MEM_2_START) 62*5fd06421SJi Luo #define DRAM_MEM_3_START (DRAM_MEM_2_START + DRAM_MEM_2_SIZE) 63*5fd06421SJi Luo #define DRAM_MEM_3_SIZE (SECURE_HEAP_SIZE) 64*5fd06421SJi Luo #define DRAM_MEM_4_START (DRAM_MEM_3_START + DRAM_MEM_3_SIZE) 65*5fd06421SJi Luo #define DRAM_MEM_4_SIZE (DRAM_MEM_END - DRAM_MEM_4_START) 66*5fd06421SJi 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*/ 78*5fd06421SJi Luo #ifdef SPD_trusty 79*5fd06421SJi 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*/ 80*5fd06421SJi 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*/ 81*5fd06421SJi Luo #endif 82*5fd06421SJi 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 */ 86*5fd06421SJi Luo #ifdef SPD_trusty 87*5fd06421SJi 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 */ 88*5fd06421SJi 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 */ 89*5fd06421SJi Luo #endif 90*5fd06421SJi Luo 91*5fd06421SJi Luo #ifdef SPD_trusty 92*5fd06421SJi Luo { 6, 0, DRAM_MEM_0_START, DRAM_MEM_0_SIZE, {1, 1, 0, 2, 1, 0, 1, 0}, {0xfff, 0x93f} }, /* DRAM for LPAV and RTD*/ 93*5fd06421SJi Luo { 6, 1, DRAM_MEM_1_START, DRAM_MEM_1_SIZE, {1, 1, 0, 1, 1, 0, 1, 0}, {0xfc0, 0} }, /* TEE DRAM for LPAV and RTD*/ 94*5fd06421SJi Luo { 6, 2, DRAM_MEM_2_START, DRAM_MEM_2_SIZE, {1, 1, 0, 2, 1, 0, 1, 0}, {0xfff, 0x93f} }, /* DRAM for LPAV and RTD*/ 95*5fd06421SJi Luo { 6, 3, DRAM_MEM_3_START, DRAM_MEM_3_SIZE, {1, 1, 0, 1, 1, 0, 1, 0}, {0xfc0, 0} }, /* DRAM for LPAV and RTD*/ 96*5fd06421SJi Luo { 6, 4, DRAM_MEM_4_START, DRAM_MEM_4_SIZE, {1, 1, 0, 2, 1, 0, 1, 0}, {0xfff, 0x93f} }, /* DRAM for LPAV and RTD*/ 97*5fd06421SJi Luo #else 98ff5e1793SYe Li { 6, 0, DRAM_MEM_0_START, DRAM_MEM_0_SIZE, {1, 1, 0, 1, 1, 0, 1, 0}, {0xfff, 0} }, /* DRAM for LPAV and RTD*/ 99ff5e1793SYe Li { 6, 1, DRAM_MEM_1_START, DRAM_MEM_1_SIZE, {1, 1, 0, 1, 1, 0, 1, 0}, {0xfc0, 0} }, /* TEE DRAM for LPAV and RTD*/ 100ff5e1793SYe Li { 6, 2, DRAM_MEM_2_START, DRAM_MEM_2_SIZE, {1, 1, 0, 1, 1, 0, 1, 0}, {0xfff, 0} }, /* DRAM for LPAV and RTD*/ 101*5fd06421SJi 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 */ 105ac5d69b6SJacky Bai { 6, 0, 0x80000000, 0x80000000, {1, 1, 0, 1, 1, 0, 1, 0}, {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 */ 119ac5d69b6SJacky Bai { 0, 36, {0, 0, 0, 0, 0, 0, 7, 7} }, /* PAC0 slot 36 for CMC1 */ 120ac5d69b6SJacky Bai { 0, 41, {0, 0, 0, 0, 0, 0, 7, 7} }, /* PAC0 slot 41 for SIM_AD */ 121ac5d69b6SJacky Bai { 1, PAC_SLOT_ALL, {0, 7, 0, 0, 0, 0, 0, 7} }, /* PAC1 */ 122ac5d69b6SJacky Bai { 1, 0, {0, 7, 0, 0, 0, 0, 7, 7} }, /* PAC1 slot 0 for PCC4 */ 123ac5d69b6SJacky Bai { 1, 6, {0, 7, 7, 0, 0, 0, 0, 7} }, /* PAC1 slot 6 for LPUART6 */ 124ac5d69b6SJacky Bai { 1, 9, {0, 7, 7, 7, 0, 0, 0, 7} }, /* SAI5 for HIFI4 and eDMA2 */ 125ac5d69b6SJacky Bai { 1, 12, {0, 7, 0, 0, 0, 0, 7, 7} }, /* PAC1 slot 12 for IOMUXC1 */ 126ac5d69b6SJacky Bai { 2, PAC_SLOT_ALL, {7, 7, 7, 7, 0, 0, 7, 7} }, /* PAC2 */ 127ac5d69b6SJacky Bai }; 128ac5d69b6SJacky Bai 129ac5d69b6SJacky Bai struct xrdc_pac_msc_config imx8ulp_msc[] = { 130ac5d69b6SJacky Bai { 0, 0, {0, 0, 0, 0, 0, 0, 7, 7} }, /* MSC0 GPIOE */ 131ac5d69b6SJacky Bai { 0, 1, {0, 0, 0, 0, 0, 0, 7, 7} }, /* MSC0 GPIOF */ 132ac5d69b6SJacky Bai { 1, MSC_SLOT_ALL, {0, 0, 0, 0, 0, 0, 7, 7} }, /* MSC1 GPIOD */ 133ac5d69b6SJacky Bai { 2, MSC_SLOT_ALL, {0, 0, 0, 0, 0, 0, 7, 7} }, /* MSC2 GPU3D/2D/DCNANO/DDR registers */ 134ac5d69b6SJacky Bai }; 135