[U-Boot] [PATCH] ARM: rmobile: Fix the memory map on Gen3

2018-04-09 Thread Marek Vasut
Fix up the memory map on Gen3 to match datasheet properly.
This simplifies the memory map setup as well, since we do
no longer need this massive complexity.

Signed-off-by: Marek Vasut 
Cc: Nobuhiro Iwamatsu 
---
 arch/arm/mach-rmobile/cpu_info.c |  3 -
 arch/arm/mach-rmobile/include/mach/rmobile.h |  1 -
 arch/arm/mach-rmobile/memmap-gen3.c  | 92 +++-
 3 files changed, 9 insertions(+), 87 deletions(-)

diff --git a/arch/arm/mach-rmobile/cpu_info.c b/arch/arm/mach-rmobile/cpu_info.c
index ba87d21b73..ce15741c41 100644
--- a/arch/arm/mach-rmobile/cpu_info.c
+++ b/arch/arm/mach-rmobile/cpu_info.c
@@ -18,9 +18,6 @@ int arch_cpu_init(void)
 #ifndef CONFIG_SYS_DCACHE_OFF
 void enable_caches(void)
 {
-#if defined(CONFIG_RCAR_GEN3)
-   rcar_gen3_memmap_fixup();
-#endif
dcache_enable();
 }
 #endif
diff --git a/arch/arm/mach-rmobile/include/mach/rmobile.h 
b/arch/arm/mach-rmobile/include/mach/rmobile.h
index ff0ca63f02..94ea366f45 100644
--- a/arch/arm/mach-rmobile/include/mach/rmobile.h
+++ b/arch/arm/mach-rmobile/include/mach/rmobile.h
@@ -41,7 +41,6 @@
 u32 rmobile_get_cpu_type(void);
 u32 rmobile_get_cpu_rev_integer(void);
 u32 rmobile_get_cpu_rev_fraction(void);
-void rcar_gen3_memmap_fixup(void);
 #endif /* __ASSEMBLY__ */
 
 #endif /* __ASM_ARCH_RMOBILE_H */
diff --git a/arch/arm/mach-rmobile/memmap-gen3.c 
b/arch/arm/mach-rmobile/memmap-gen3.c
index 801e392425..52cd000a17 100644
--- a/arch/arm/mach-rmobile/memmap-gen3.c
+++ b/arch/arm/mach-rmobile/memmap-gen3.c
@@ -9,77 +9,24 @@
 #include 
 #include 
 
-static struct mm_region r8a7795_mem_map[] = {
+static struct mm_region gen3_mem_map[] = {
{
.virt = 0x0UL,
.phys = 0x0UL,
-   .size = 0x8000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
-PTE_BLOCK_INNER_SHARE
-   }, {
-   .virt = 0x8000UL,
-   .phys = 0x8000UL,
-   .size = 0x8000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
-PTE_BLOCK_NON_SHARE |
-PTE_BLOCK_PXN | PTE_BLOCK_UXN
-   }, {
-   /* List terminator */
-   0,
-   }
-};
-
-static struct mm_region r8a7796_mem_map[] = {
-   {
-   .virt = 0x0UL,
-   .phys = 0x0UL,
-   .size = 0xe000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
-PTE_BLOCK_INNER_SHARE
-   }, {
-   .virt = 0xe000UL,
-   .phys = 0xe000UL,
-   .size = 0xe000UL,
+   .size = 0x4000UL,
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
 PTE_BLOCK_NON_SHARE |
 PTE_BLOCK_PXN | PTE_BLOCK_UXN
}, {
-   /* List terminator */
-   0,
-   }
-};
-
-static struct mm_region r8a77970_mem_map[] = {
-   {
-   .virt = 0x0UL,
-   .phys = 0x0UL,
-   .size = 0xe000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
-PTE_BLOCK_INNER_SHARE
-   }, {
-   .virt = 0xe000UL,
-   .phys = 0xe000UL,
-   .size = 0xe000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
-PTE_BLOCK_NON_SHARE |
-PTE_BLOCK_PXN | PTE_BLOCK_UXN
-   }, {
-   /* List terminator */
-   0,
-   }
-};
-
-static struct mm_region r8a77995_mem_map[] = {
-   {
-   .virt = 0x0UL,
-   .phys = 0x0UL,
-   .size = 0xe000UL,
+   .virt = 0x4000UL,
+   .phys = 0x4000UL,
+   .size = 0x8000UL,
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
 PTE_BLOCK_INNER_SHARE
}, {
-   .virt = 0xe000UL,
-   .phys = 0xe000UL,
-   .size = 0xe000UL,
+   .virt = 0xc000UL,
+   .phys = 0xc000UL,
+   .size = 0x4000UL,
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
 PTE_BLOCK_NON_SHARE |
 PTE_BLOCK_PXN | PTE_BLOCK_UXN
@@ -89,25 +36,4 @@ static struct mm_region r8a77995_mem_map[] = {
}
 };
 
-struct mm_region *mem_map = r8a7795_mem_map;
-
-void rcar_gen3_memmap_fixup(void)
-{
-   u32 cpu_type = rmobile_get_cpu_type();
-
-   switch (cpu_type) {
-   case RMOBILE_CPU_TYPE_R8A7795:
-   mem_map = r8a7795_mem_map;
-   break;
-   case RMOBILE_CPU_TYPE_R8A7796:
-   case RMOBILE_CPU_TYPE_R8A77965:
-   mem_map = r8a7796_mem_map;
-   break;
-   case RMOBILE_CPU_TYPE_R8A77970:
-   mem_map = r8a77970_mem_map;
- 

[U-Boot] [PATCH] ARM: rmobile: Fix the memory map on Gen3

2018-02-15 Thread Marek Vasut
Fix up the memory map on Gen3 to match datasheet properly.
This simplifies the memory map setup as well, since we do
no longer need this massive complexity.

Signed-off-by: Marek Vasut 
Cc: Nobuhiro Iwamatsu 
---
 arch/arm/mach-rmobile/cpu_info.c |  3 -
 arch/arm/mach-rmobile/include/mach/rmobile.h |  1 -
 arch/arm/mach-rmobile/memmap-gen3.c  | 91 +++-
 3 files changed, 9 insertions(+), 86 deletions(-)

diff --git a/arch/arm/mach-rmobile/cpu_info.c b/arch/arm/mach-rmobile/cpu_info.c
index ad9f86c5b8..5fb4d3347c 100644
--- a/arch/arm/mach-rmobile/cpu_info.c
+++ b/arch/arm/mach-rmobile/cpu_info.c
@@ -18,9 +18,6 @@ int arch_cpu_init(void)
 #ifndef CONFIG_SYS_DCACHE_OFF
 void enable_caches(void)
 {
-#if defined(CONFIG_RCAR_GEN3)
-   rcar_gen3_memmap_fixup();
-#endif
dcache_enable();
 }
 #endif
diff --git a/arch/arm/mach-rmobile/include/mach/rmobile.h 
b/arch/arm/mach-rmobile/include/mach/rmobile.h
index f4db42c34b..995871fb27 100644
--- a/arch/arm/mach-rmobile/include/mach/rmobile.h
+++ b/arch/arm/mach-rmobile/include/mach/rmobile.h
@@ -40,7 +40,6 @@
 u32 rmobile_get_cpu_type(void);
 u32 rmobile_get_cpu_rev_integer(void);
 u32 rmobile_get_cpu_rev_fraction(void);
-void rcar_gen3_memmap_fixup(void);
 #endif /* __ASSEMBLY__ */
 
 #endif /* __ASM_ARCH_RMOBILE_H */
diff --git a/arch/arm/mach-rmobile/memmap-gen3.c 
b/arch/arm/mach-rmobile/memmap-gen3.c
index 199c2c2aea..52cd000a17 100644
--- a/arch/arm/mach-rmobile/memmap-gen3.c
+++ b/arch/arm/mach-rmobile/memmap-gen3.c
@@ -9,77 +9,24 @@
 #include 
 #include 
 
-static struct mm_region r8a7795_mem_map[] = {
+static struct mm_region gen3_mem_map[] = {
{
.virt = 0x0UL,
.phys = 0x0UL,
-   .size = 0x8000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
-PTE_BLOCK_INNER_SHARE
-   }, {
-   .virt = 0x8000UL,
-   .phys = 0x8000UL,
-   .size = 0x8000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
-PTE_BLOCK_NON_SHARE |
-PTE_BLOCK_PXN | PTE_BLOCK_UXN
-   }, {
-   /* List terminator */
-   0,
-   }
-};
-
-static struct mm_region r8a7796_mem_map[] = {
-   {
-   .virt = 0x0UL,
-   .phys = 0x0UL,
-   .size = 0xe000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
-PTE_BLOCK_INNER_SHARE
-   }, {
-   .virt = 0xe000UL,
-   .phys = 0xe000UL,
-   .size = 0xe000UL,
+   .size = 0x4000UL,
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
 PTE_BLOCK_NON_SHARE |
 PTE_BLOCK_PXN | PTE_BLOCK_UXN
}, {
-   /* List terminator */
-   0,
-   }
-};
-
-static struct mm_region r8a77970_mem_map[] = {
-   {
-   .virt = 0x0UL,
-   .phys = 0x0UL,
-   .size = 0xe000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
-PTE_BLOCK_INNER_SHARE
-   }, {
-   .virt = 0xe000UL,
-   .phys = 0xe000UL,
-   .size = 0xe000UL,
-   .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
-PTE_BLOCK_NON_SHARE |
-PTE_BLOCK_PXN | PTE_BLOCK_UXN
-   }, {
-   /* List terminator */
-   0,
-   }
-};
-
-static struct mm_region r8a77995_mem_map[] = {
-   {
-   .virt = 0x0UL,
-   .phys = 0x0UL,
-   .size = 0xe000UL,
+   .virt = 0x4000UL,
+   .phys = 0x4000UL,
+   .size = 0x8000UL,
.attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
 PTE_BLOCK_INNER_SHARE
}, {
-   .virt = 0xe000UL,
-   .phys = 0xe000UL,
-   .size = 0xe000UL,
+   .virt = 0xc000UL,
+   .phys = 0xc000UL,
+   .size = 0x4000UL,
.attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
 PTE_BLOCK_NON_SHARE |
 PTE_BLOCK_PXN | PTE_BLOCK_UXN
@@ -89,24 +36,4 @@ static struct mm_region r8a77995_mem_map[] = {
}
 };
 
-struct mm_region *mem_map = r8a7795_mem_map;
-
-void rcar_gen3_memmap_fixup(void)
-{
-   u32 cpu_type = rmobile_get_cpu_type();
-
-   switch (cpu_type) {
-   case RMOBILE_CPU_TYPE_R8A7795:
-   mem_map = r8a7795_mem_map;
-   break;
-   case RMOBILE_CPU_TYPE_R8A7796:
-   mem_map = r8a7796_mem_map;
-   break;
-   case RMOBILE_CPU_TYPE_R8A77970:
-   mem_map = r8a77970_mem_map;
-   break;
-   case