1 // SPDX-License-Identifier: GPL-2.0+
5 * Copyright (C) 2018-2020 Texas Instruments Incorporated - https://www.ti.com/
6 * Lokesh Vutla <lokeshvutla@ti.com>
7 * Suman Anna <s-anna@ti.com>
8 * (This file is derived from arch/arm/mach-zynqmp/cpu.c)
13 #include <asm/system.h>
14 #include <asm/armv8/mmu.h>
16 #ifdef CONFIG_SOC_K3_AM6
17 /* NR_DRAM_BANKS + 32bit IO + 64bit IO + terminator */
18 #define NR_MMU_REGIONS (CONFIG_NR_DRAM_BANKS + 5)
20 /* ToDo: Add 64bit IO */
21 struct mm_region am654_mem_map[NR_MMU_REGIONS] = {
26 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
28 PTE_BLOCK_PXN | PTE_BLOCK_UXN
33 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
39 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL_NC) |
45 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
48 .virt = 0x880000000UL,
49 .phys = 0x880000000UL,
51 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
54 .virt = 0x500000000UL,
55 .phys = 0x500000000UL,
56 .size = 0x400000000UL,
57 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
59 PTE_BLOCK_PXN | PTE_BLOCK_UXN
66 struct mm_region *mem_map = am654_mem_map;
67 #endif /* CONFIG_SOC_K3_AM6 */
69 #ifdef CONFIG_SOC_K3_J721E
71 #ifdef CONFIG_TARGET_J721E_A72_EVM
72 /* NR_DRAM_BANKS + 32bit IO + 64bit IO + terminator */
73 #define NR_MMU_REGIONS (CONFIG_NR_DRAM_BANKS + 6)
75 /* ToDo: Add 64bit IO */
76 struct mm_region j721e_mem_map[NR_MMU_REGIONS] = {
81 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
83 PTE_BLOCK_PXN | PTE_BLOCK_UXN
88 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
94 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL_NC) |
100 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
101 PTE_BLOCK_INNER_SHARE
103 .virt = 0x880000000UL,
104 .phys = 0x880000000UL,
105 .size = 0x80000000UL,
106 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
107 PTE_BLOCK_INNER_SHARE
109 .virt = 0x500000000UL,
110 .phys = 0x500000000UL,
111 .size = 0x400000000UL,
112 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
113 PTE_BLOCK_NON_SHARE |
114 PTE_BLOCK_PXN | PTE_BLOCK_UXN
116 .virt = 0x4d80000000UL,
117 .phys = 0x4d80000000UL,
118 .size = 0x0002000000UL,
119 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL_NC) |
120 PTE_BLOCK_INNER_SHARE
122 /* List terminator */
127 struct mm_region *mem_map = j721e_mem_map;
128 #endif /* CONFIG_TARGET_J721E_A72_EVM */
130 #ifdef CONFIG_TARGET_J7200_A72_EVM
131 #define NR_MMU_REGIONS (CONFIG_NR_DRAM_BANKS + 5)
133 /* ToDo: Add 64bit IO */
134 struct mm_region j7200_mem_map[NR_MMU_REGIONS] = {
138 .size = 0x80000000UL,
139 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
140 PTE_BLOCK_NON_SHARE |
141 PTE_BLOCK_PXN | PTE_BLOCK_UXN
143 .virt = 0x80000000UL,
144 .phys = 0x80000000UL,
145 .size = 0x20000000UL,
146 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
147 PTE_BLOCK_INNER_SHARE
149 .virt = 0xa0000000UL,
150 .phys = 0xa0000000UL,
151 .size = 0x04800000UL,
152 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL_NC) |
155 .virt = 0xa4800000UL,
156 .phys = 0xa4800000UL,
157 .size = 0x5b800000UL,
158 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
159 PTE_BLOCK_INNER_SHARE
161 .virt = 0x880000000UL,
162 .phys = 0x880000000UL,
163 .size = 0x80000000UL,
164 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
165 PTE_BLOCK_INNER_SHARE
167 .virt = 0x500000000UL,
168 .phys = 0x500000000UL,
169 .size = 0x400000000UL,
170 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
171 PTE_BLOCK_NON_SHARE |
172 PTE_BLOCK_PXN | PTE_BLOCK_UXN
174 /* List terminator */
179 struct mm_region *mem_map = j7200_mem_map;
180 #endif /* CONFIG_TARGET_J7200_A72_EVM */
182 #endif /* CONFIG_SOC_K3_J721E */