memmap-gen3.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. #include <common.h>
  9. #include <asm/armv8/mmu.h>
  10. static struct mm_region r8a7795_mem_map[] = {
  11. {
  12. .virt = 0x0UL,
  13. .phys = 0x0UL,
  14. .size = 0x80000000UL,
  15. .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
  16. PTE_BLOCK_INNER_SHARE
  17. }, {
  18. .virt = 0x80000000UL,
  19. .phys = 0x80000000UL,
  20. .size = 0x80000000UL,
  21. .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
  22. PTE_BLOCK_NON_SHARE |
  23. PTE_BLOCK_PXN | PTE_BLOCK_UXN
  24. }, {
  25. /* List terminator */
  26. 0,
  27. }
  28. };
  29. static struct mm_region r8a7796_mem_map[] = {
  30. {
  31. .virt = 0x0UL,
  32. .phys = 0x0UL,
  33. .size = 0xe0000000UL,
  34. .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
  35. PTE_BLOCK_INNER_SHARE
  36. }, {
  37. .virt = 0xe0000000UL,
  38. .phys = 0xe0000000UL,
  39. .size = 0xe0000000UL,
  40. .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
  41. PTE_BLOCK_NON_SHARE |
  42. PTE_BLOCK_PXN | PTE_BLOCK_UXN
  43. }, {
  44. /* List terminator */
  45. 0,
  46. }
  47. };
  48. static struct mm_region r8a77970_mem_map[] = {
  49. {
  50. .virt = 0x0UL,
  51. .phys = 0x0UL,
  52. .size = 0xe0000000UL,
  53. .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
  54. PTE_BLOCK_INNER_SHARE
  55. }, {
  56. .virt = 0xe0000000UL,
  57. .phys = 0xe0000000UL,
  58. .size = 0xe0000000UL,
  59. .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
  60. PTE_BLOCK_NON_SHARE |
  61. PTE_BLOCK_PXN | PTE_BLOCK_UXN
  62. }, {
  63. /* List terminator */
  64. 0,
  65. }
  66. };
  67. static struct mm_region r8a77995_mem_map[] = {
  68. {
  69. .virt = 0x0UL,
  70. .phys = 0x0UL,
  71. .size = 0xe0000000UL,
  72. .attrs = PTE_BLOCK_MEMTYPE(MT_NORMAL) |
  73. PTE_BLOCK_INNER_SHARE
  74. }, {
  75. .virt = 0xe0000000UL,
  76. .phys = 0xe0000000UL,
  77. .size = 0xe0000000UL,
  78. .attrs = PTE_BLOCK_MEMTYPE(MT_DEVICE_NGNRNE) |
  79. PTE_BLOCK_NON_SHARE |
  80. PTE_BLOCK_PXN | PTE_BLOCK_UXN
  81. }, {
  82. /* List terminator */
  83. 0,
  84. }
  85. };
  86. struct mm_region *mem_map = r8a7795_mem_map;
  87. void rcar_gen3_memmap_fixup(void)
  88. {
  89. u32 cpu_type = rmobile_get_cpu_type();
  90. switch (cpu_type) {
  91. case RMOBILE_CPU_TYPE_R8A7795:
  92. mem_map = r8a7795_mem_map;
  93. break;
  94. case RMOBILE_CPU_TYPE_R8A7796:
  95. case RMOBILE_CPU_TYPE_R8A77965:
  96. mem_map = r8a7796_mem_map;
  97. break;
  98. case RMOBILE_CPU_TYPE_R8A77970:
  99. mem_map = r8a77970_mem_map;
  100. break;
  101. case RMOBILE_CPU_TYPE_R8A77995:
  102. mem_map = r8a77995_mem_map;
  103. break;
  104. }
  105. }