video-uclass: Fix logical-not-parentheses warning
[platform/kernel/u-boot.git] / arch / arm / mach-rmobile / memmap-gen3.c
1 /*
2  * Renesas RCar Gen3 memory map tables
3  *
4  * Copyright (C) 2017 Marek Vasut <marek.vasut@gmail.com>
5  *
6  * SPDX-License-Identifier: GPL-2.0+
7  */
8
9 #include <common.h>
10 #include <asm/armv8/mmu.h>
11
12 static struct mm_region r8a7795_mem_map[] = {
13         {
14                 .virt = 0x0UL,
15                 .phys = 0x0UL,
16                 .size = 0x80000000UL,
17                 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
18                          PTE_BLOCK_INNER_SHARE
19         }, {
20                 .virt = 0x80000000UL,
21                 .phys = 0x80000000UL,
22                 .size = 0x80000000UL,
23                 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
24                          PTE_BLOCK_NON_SHARE |
25                          PTE_BLOCK_PXN | PTE_BLOCK_UXN
26         }, {
27                 /* List terminator */
28                 0,
29         }
30 };
31
32 static struct mm_region r8a7796_mem_map[] = {
33         {
34                 .virt = 0x0UL,
35                 .phys = 0x0UL,
36                 .size = 0xe0000000UL,
37                 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
38                          PTE_BLOCK_INNER_SHARE
39         }, {
40                 .virt = 0xe0000000UL,
41                 .phys = 0xe0000000UL,
42                 .size = 0xe0000000UL,
43                 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
44                          PTE_BLOCK_NON_SHARE |
45                          PTE_BLOCK_PXN | PTE_BLOCK_UXN
46         }, {
47                 /* List terminator */
48                 0,
49         }
50 };
51
52 static struct mm_region r8a77970_mem_map[] = {
53         {
54                 .virt = 0x0UL,
55                 .phys = 0x0UL,
56                 .size = 0xe0000000UL,
57                 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
58                          PTE_BLOCK_INNER_SHARE
59         }, {
60                 .virt = 0xe0000000UL,
61                 .phys = 0xe0000000UL,
62                 .size = 0xe0000000UL,
63                 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
64                          PTE_BLOCK_NON_SHARE |
65                          PTE_BLOCK_PXN | PTE_BLOCK_UXN
66         }, {
67                 /* List terminator */
68                 0,
69         }
70 };
71
72 static struct mm_region r8a77995_mem_map[] = {
73         {
74                 .virt = 0x0UL,
75                 .phys = 0x0UL,
76                 .size = 0xe0000000UL,
77                 .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
78                          PTE_BLOCK_INNER_SHARE
79         }, {
80                 .virt = 0xe0000000UL,
81                 .phys = 0xe0000000UL,
82                 .size = 0xe0000000UL,
83                 .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
84                          PTE_BLOCK_NON_SHARE |
85                          PTE_BLOCK_PXN | PTE_BLOCK_UXN
86         }, {
87                 /* List terminator */
88                 0,
89         }
90 };
91
92 struct mm_region *mem_map = r8a7795_mem_map;
93
94 void rcar_gen3_memmap_fixup(void)
95 {
96         u32 cpu_type = rmobile_get_cpu_type();
97
98         switch (cpu_type) {
99         case RMOBILE_CPU_TYPE_R8A7795:
100                 mem_map = r8a7795_mem_map;
101                 break;
102         case RMOBILE_CPU_TYPE_R8A7796:
103         case RMOBILE_CPU_TYPE_R8A77965:
104                 mem_map = r8a7796_mem_map;
105                 break;
106         case RMOBILE_CPU_TYPE_R8A77970:
107                 mem_map = r8a77970_mem_map;
108                 break;
109         case RMOBILE_CPU_TYPE_R8A77995:
110                 mem_map = r8a77995_mem_map;
111                 break;
112         }
113 }