tegra234.c 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. /*
  3. * Copyright (C) 2021-2022, NVIDIA CORPORATION. All rights reserved.
  4. */
  5. #include <soc/tegra/mc.h>
  6. #include <dt-bindings/memory/tegra234-mc.h>
  7. #include "mc.h"
  8. static const struct tegra_mc_client tegra234_mc_clients[] = {
  9. {
  10. .id = TEGRA234_MEMORY_CLIENT_MGBEARD,
  11. .name = "mgbeard",
  12. .sid = TEGRA234_SID_MGBE,
  13. .regs = {
  14. .sid = {
  15. .override = 0x2c0,
  16. .security = 0x2c4,
  17. },
  18. },
  19. }, {
  20. .id = TEGRA234_MEMORY_CLIENT_MGBEBRD,
  21. .name = "mgbebrd",
  22. .sid = TEGRA234_SID_MGBE_VF1,
  23. .regs = {
  24. .sid = {
  25. .override = 0x2c8,
  26. .security = 0x2cc,
  27. },
  28. },
  29. }, {
  30. .id = TEGRA234_MEMORY_CLIENT_MGBECRD,
  31. .name = "mgbecrd",
  32. .sid = TEGRA234_SID_MGBE_VF2,
  33. .regs = {
  34. .sid = {
  35. .override = 0x2d0,
  36. .security = 0x2d4,
  37. },
  38. },
  39. }, {
  40. .id = TEGRA234_MEMORY_CLIENT_MGBEDRD,
  41. .name = "mgbedrd",
  42. .sid = TEGRA234_SID_MGBE_VF3,
  43. .regs = {
  44. .sid = {
  45. .override = 0x2d8,
  46. .security = 0x2dc,
  47. },
  48. },
  49. }, {
  50. .id = TEGRA234_MEMORY_CLIENT_MGBEAWR,
  51. .name = "mgbeawr",
  52. .sid = TEGRA234_SID_MGBE,
  53. .regs = {
  54. .sid = {
  55. .override = 0x2e0,
  56. .security = 0x2e4,
  57. },
  58. },
  59. }, {
  60. .id = TEGRA234_MEMORY_CLIENT_MGBEBWR,
  61. .name = "mgbebwr",
  62. .sid = TEGRA234_SID_MGBE_VF1,
  63. .regs = {
  64. .sid = {
  65. .override = 0x2f8,
  66. .security = 0x2fc,
  67. },
  68. },
  69. }, {
  70. .id = TEGRA234_MEMORY_CLIENT_MGBECWR,
  71. .name = "mgbecwr",
  72. .sid = TEGRA234_SID_MGBE_VF2,
  73. .regs = {
  74. .sid = {
  75. .override = 0x308,
  76. .security = 0x30c,
  77. },
  78. },
  79. }, {
  80. .id = TEGRA234_MEMORY_CLIENT_SDMMCRAB,
  81. .name = "sdmmcrab",
  82. .sid = TEGRA234_SID_SDMMC4,
  83. .regs = {
  84. .sid = {
  85. .override = 0x318,
  86. .security = 0x31c,
  87. },
  88. },
  89. }, {
  90. .id = TEGRA234_MEMORY_CLIENT_MGBEDWR,
  91. .name = "mgbedwr",
  92. .sid = TEGRA234_SID_MGBE_VF3,
  93. .regs = {
  94. .sid = {
  95. .override = 0x328,
  96. .security = 0x32c,
  97. },
  98. },
  99. }, {
  100. .id = TEGRA234_MEMORY_CLIENT_SDMMCWAB,
  101. .name = "sdmmcwab",
  102. .sid = TEGRA234_SID_SDMMC4,
  103. .regs = {
  104. .sid = {
  105. .override = 0x338,
  106. .security = 0x33c,
  107. },
  108. },
  109. }, {
  110. .id = TEGRA234_MEMORY_CLIENT_BPMPR,
  111. .name = "bpmpr",
  112. .sid = TEGRA234_SID_BPMP,
  113. .regs = {
  114. .sid = {
  115. .override = 0x498,
  116. .security = 0x49c,
  117. },
  118. },
  119. }, {
  120. .id = TEGRA234_MEMORY_CLIENT_BPMPW,
  121. .name = "bpmpw",
  122. .sid = TEGRA234_SID_BPMP,
  123. .regs = {
  124. .sid = {
  125. .override = 0x4a0,
  126. .security = 0x4a4,
  127. },
  128. },
  129. }, {
  130. .id = TEGRA234_MEMORY_CLIENT_BPMPDMAR,
  131. .name = "bpmpdmar",
  132. .sid = TEGRA234_SID_BPMP,
  133. .regs = {
  134. .sid = {
  135. .override = 0x4a8,
  136. .security = 0x4ac,
  137. },
  138. },
  139. }, {
  140. .id = TEGRA234_MEMORY_CLIENT_BPMPDMAW,
  141. .name = "bpmpdmaw",
  142. .sid = TEGRA234_SID_BPMP,
  143. .regs = {
  144. .sid = {
  145. .override = 0x4b0,
  146. .security = 0x4b4,
  147. },
  148. },
  149. }, {
  150. .id = TEGRA234_MEMORY_CLIENT_APEDMAR,
  151. .name = "apedmar",
  152. .sid = TEGRA234_SID_APE,
  153. .regs = {
  154. .sid = {
  155. .override = 0x4f8,
  156. .security = 0x4fc,
  157. },
  158. },
  159. }, {
  160. .id = TEGRA234_MEMORY_CLIENT_APEDMAW,
  161. .name = "apedmaw",
  162. .sid = TEGRA234_SID_APE,
  163. .regs = {
  164. .sid = {
  165. .override = 0x500,
  166. .security = 0x504,
  167. },
  168. },
  169. },
  170. };
  171. const struct tegra_mc_soc tegra234_mc_soc = {
  172. .num_clients = ARRAY_SIZE(tegra234_mc_clients),
  173. .clients = tegra234_mc_clients,
  174. .num_address_bits = 40,
  175. .num_channels = 16,
  176. .client_id_mask = 0x1ff,
  177. .intmask = MC_INT_DECERR_ROUTE_SANITY |
  178. MC_INT_DECERR_GENERALIZED_CARVEOUT | MC_INT_DECERR_MTS |
  179. MC_INT_SECERR_SEC | MC_INT_DECERR_VPR |
  180. MC_INT_SECURITY_VIOLATION | MC_INT_DECERR_EMEM,
  181. .has_addr_hi_reg = true,
  182. .ops = &tegra186_mc_ops,
  183. .ch_intmask = 0x0000ff00,
  184. .global_intstatus_channel_shift = 8,
  185. };