1*914a84e6SLey Foon Tan // SPDX-License-Identifier: GPL-2.0
2*914a84e6SLey Foon Tan /*
3*914a84e6SLey Foon Tan  * Copyright (C) 2016-2018 Intel Corporation <www.intel.com>
4*914a84e6SLey Foon Tan  *
5*914a84e6SLey Foon Tan  */
6*914a84e6SLey Foon Tan 
7*914a84e6SLey Foon Tan #include <common.h>
8*914a84e6SLey Foon Tan #include <asm/armv8/mmu.h>
9*914a84e6SLey Foon Tan 
10*914a84e6SLey Foon Tan DECLARE_GLOBAL_DATA_PTR;
11*914a84e6SLey Foon Tan 
12*914a84e6SLey Foon Tan static struct mm_region socfpga_stratix10_mem_map[] = {
13*914a84e6SLey Foon Tan 	{
14*914a84e6SLey Foon Tan 		/* MEM 2GB*/
15*914a84e6SLey Foon Tan 		.virt	= 0x0UL,
16*914a84e6SLey Foon Tan 		.phys	= 0x0UL,
17*914a84e6SLey Foon Tan 		.size	= 0x80000000UL,
18*914a84e6SLey Foon Tan 		.attrs	= PTE_BLOCK_MEMTYPE(MT_NORMAL) |
19*914a84e6SLey Foon Tan 				PTE_BLOCK_INNER_SHARE,
20*914a84e6SLey Foon Tan 	}, {
21*914a84e6SLey Foon Tan 		/* FPGA 1.5GB */
22*914a84e6SLey Foon Tan 		.virt	= 0x80000000UL,
23*914a84e6SLey Foon Tan 		.phys	= 0x80000000UL,
24*914a84e6SLey Foon Tan 		.size	= 0x60000000UL,
25*914a84e6SLey Foon Tan 		.attrs	= PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
26*914a84e6SLey Foon Tan 				PTE_BLOCK_NON_SHARE |
27*914a84e6SLey Foon Tan 				PTE_BLOCK_PXN | PTE_BLOCK_UXN,
28*914a84e6SLey Foon Tan 	}, {
29*914a84e6SLey Foon Tan 		/* DEVICE 142MB */
30*914a84e6SLey Foon Tan 		.virt	= 0xF7000000UL,
31*914a84e6SLey Foon Tan 		.phys	= 0xF7000000UL,
32*914a84e6SLey Foon Tan 		.size	= 0x08E00000UL,
33*914a84e6SLey Foon Tan 		.attrs	= PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
34*914a84e6SLey Foon Tan 				PTE_BLOCK_NON_SHARE |
35*914a84e6SLey Foon Tan 				PTE_BLOCK_PXN | PTE_BLOCK_UXN,
36*914a84e6SLey Foon Tan 	}, {
37*914a84e6SLey Foon Tan 		/* OCRAM 1MB but available 256KB */
38*914a84e6SLey Foon Tan 		.virt	= 0xFFE00000UL,
39*914a84e6SLey Foon Tan 		.phys	= 0xFFE00000UL,
40*914a84e6SLey Foon Tan 		.size	= 0x00100000UL,
41*914a84e6SLey Foon Tan 		.attrs	= PTE_BLOCK_MEMTYPE(MT_NORMAL) |
42*914a84e6SLey Foon Tan 				PTE_BLOCK_INNER_SHARE,
43*914a84e6SLey Foon Tan 	}, {
44*914a84e6SLey Foon Tan 		/* DEVICE 32KB */
45*914a84e6SLey Foon Tan 		.virt	= 0xFFFC0000UL,
46*914a84e6SLey Foon Tan 		.phys	= 0xFFFC0000UL,
47*914a84e6SLey Foon Tan 		.size	= 0x00008000UL,
48*914a84e6SLey Foon Tan 		.attrs	= PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
49*914a84e6SLey Foon Tan 				PTE_BLOCK_NON_SHARE |
50*914a84e6SLey Foon Tan 				PTE_BLOCK_PXN | PTE_BLOCK_UXN,
51*914a84e6SLey Foon Tan 	}, {
52*914a84e6SLey Foon Tan 		/* MEM 124GB */
53*914a84e6SLey Foon Tan 		.virt	= 0x0100000000UL,
54*914a84e6SLey Foon Tan 		.phys	= 0x0100000000UL,
55*914a84e6SLey Foon Tan 		.size	= 0x1F00000000UL,
56*914a84e6SLey Foon Tan 		.attrs	= PTE_BLOCK_MEMTYPE(MT_NORMAL) |
57*914a84e6SLey Foon Tan 				PTE_BLOCK_INNER_SHARE,
58*914a84e6SLey Foon Tan 	}, {
59*914a84e6SLey Foon Tan 		/* DEVICE 4GB */
60*914a84e6SLey Foon Tan 		.virt	= 0x2000000000UL,
61*914a84e6SLey Foon Tan 		.phys	= 0x2000000000UL,
62*914a84e6SLey Foon Tan 		.size	= 0x0100000000UL,
63*914a84e6SLey Foon Tan 		.attrs	= PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
64*914a84e6SLey Foon Tan 				PTE_BLOCK_NON_SHARE |
65*914a84e6SLey Foon Tan 				PTE_BLOCK_PXN | PTE_BLOCK_UXN,
66*914a84e6SLey Foon Tan 	}, {
67*914a84e6SLey Foon Tan 		/* List terminator */
68*914a84e6SLey Foon Tan 	},
69*914a84e6SLey Foon Tan };
70*914a84e6SLey Foon Tan 
71*914a84e6SLey Foon Tan struct mm_region *mem_map = socfpga_stratix10_mem_map;
72