ps7_init_gpl.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * (C) Copyright 2018 Michal Simek
  4. */
  5. #include <asm/arch/ps7_init_gpl.h>
  6. static unsigned long ps7_pll_init_data_3_0[] = {
  7. EMIT_MASKWRITE(0xf8000008, 0x0000ffff, 0x0000df0d),
  8. EMIT_MASKWRITE(0xf8000110, 0x003ffff0, 0x000fa220),
  9. EMIT_MASKWRITE(0xf8000100, 0x0007f000, 0x00028000),
  10. EMIT_MASKWRITE(0xf8000100, 0x00000010, 0x00000010),
  11. EMIT_MASKWRITE(0xf8000100, 0x00000001, 0x00000001),
  12. EMIT_MASKWRITE(0xf8000100, 0x00000001, 0x00000000),
  13. EMIT_MASKPOLL(0xf800010c, 0x00000001),
  14. EMIT_MASKWRITE(0xf8000100, 0x00000010, 0x00000000),
  15. EMIT_MASKWRITE(0xf8000120, 0x1f003f30, 0x1f000200),
  16. EMIT_MASKWRITE(0xf8000114, 0x003ffff0, 0x0012c220),
  17. EMIT_MASKWRITE(0xf8000104, 0x0007f000, 0x00020000),
  18. EMIT_MASKWRITE(0xf8000104, 0x00000010, 0x00000010),
  19. EMIT_MASKWRITE(0xf8000104, 0x00000001, 0x000000),
  20. EMIT_MASKWRITE(0xf8000104, 0x00000001, 0x00000000),
  21. EMIT_MASKPOLL(0xf800010c, 0x00000002),
  22. EMIT_MASKWRITE(0xf8000104, 0x00000010, 0x00000000),
  23. EMIT_MASKWRITE(0xf8000124, 0xfff00003, 0x0c200003),
  24. EMIT_MASKWRITE(0xf8000118, 0x003ffff0, 0x001452c0),
  25. EMIT_MASKWRITE(0xf8000108, 0x0007f000, 0x0001e000),
  26. EMIT_MASKWRITE(0xf8000108, 0x00000010, 0x00000010),
  27. EMIT_MASKWRITE(0xf8000108, 0x00000001, 0x00000001),
  28. EMIT_MASKWRITE(0xf8000108, 0x00000001, 0x00000000),
  29. EMIT_MASKPOLL(0xf800010c, 0x00000004),
  30. EMIT_MASKWRITE(0xf8000108, 0x00000010, 0x00000000),
  31. EMIT_MASKWRITE(0xf8000004, 0x0000ffff, 0x0000767b),
  32. EMIT_EXIT(),
  33. };
  34. static unsigned long ps7_clock_init_data_3_0[] = {
  35. EMIT_MASKWRITE(0xf8000008, 0x0000ffff, 0x0000df0d),
  36. EMIT_MASKWRITE(0xf8000128, 0x03f03f01, 0x00302301),
  37. EMIT_MASKWRITE(0xf8000138, 0x00000011, 0x00000001),
  38. EMIT_MASKWRITE(0xf8000140, 0x03f03f71, 0x00100801),
  39. EMIT_MASKWRITE(0xf8000148, 0x00003f31, 0x00000a01),
  40. EMIT_MASKWRITE(0xf8000150, 0x00003f33, 0x00002801),
  41. EMIT_MASKWRITE(0xf8000154, 0x00003f33, 0x00001402),
  42. EMIT_MASKWRITE(0xf8000168, 0x00003f31, 0x00000501),
  43. EMIT_MASKWRITE(0xf8000170, 0x03f03f30, 0x00101400),
  44. EMIT_MASKWRITE(0xf8000180, 0x03f03f30, 0x00100a00),
  45. EMIT_MASKWRITE(0xf8000190, 0x03f03f30, 0x00101e00),
  46. EMIT_MASKWRITE(0xf80001a0, 0x03f03f30, 0x00101400),
  47. EMIT_MASKWRITE(0xf80001c4, 0x00000001, 0x00000001),
  48. EMIT_MASKWRITE(0xf800012c, 0x01ffcccd, 0x016c044d),
  49. EMIT_MASKWRITE(0xf8000004, 0x0000ffff, 0x0000767b),
  50. EMIT_EXIT(),
  51. };
  52. static unsigned long ps7_ddr_init_data_3_0[] = {
  53. EMIT_MASKWRITE(0xf8006000, 0x0001ffff, 0x00000080),
  54. EMIT_MASKWRITE(0xf8006004, 0x0007ffff, 0x00001081),
  55. EMIT_MASKWRITE(0xf8006008, 0x03ffffff, 0x03c0780f),
  56. EMIT_MASKWRITE(0xf800600c, 0x03ffffff, 0x02001001),
  57. EMIT_MASKWRITE(0xf8006010, 0x03ffffff, 0x00014001),
  58. EMIT_MASKWRITE(0xf8006014, 0x001fffff, 0x0004281b),
  59. EMIT_MASKWRITE(0xf8006018, 0xf7ffffff, 0x44e458d1),
  60. EMIT_MASKWRITE(0xf800601c, 0xffffffff, 0xb2023584),
  61. EMIT_MASKWRITE(0xf8006020, 0x7fdffffc, 0x2b08b2d0),
  62. EMIT_MASKWRITE(0xf8006024, 0x0fffffc3, 0x00000000),
  63. EMIT_MASKWRITE(0xf8006028, 0x00003fff, 0x00002007),
  64. EMIT_MASKWRITE(0xf800602c, 0xffffffff, 0x00000000),
  65. EMIT_MASKWRITE(0xf8006030, 0xffffffff, 0x00040970),
  66. EMIT_MASKWRITE(0xf8006034, 0x13ff3fff, 0x000116d4),
  67. EMIT_MASKWRITE(0xf8006038, 0x00000003, 0x00000000),
  68. EMIT_MASKWRITE(0xf800603c, 0x000fffff, 0x00000777),
  69. EMIT_MASKWRITE(0xf8006040, 0xffffffff, 0xfff00000),
  70. EMIT_MASKWRITE(0xf8006044, 0x0fffffff, 0x0f666666),
  71. EMIT_MASKWRITE(0xf8006048, 0x0003f03f, 0x0003c008),
  72. EMIT_MASKWRITE(0xf8006050, 0xff0f8fff, 0x77010800),
  73. EMIT_MASKWRITE(0xf8006058, 0x00010000, 0x00000000),
  74. EMIT_MASKWRITE(0xf800605c, 0x0000ffff, 0x00005003),
  75. EMIT_MASKWRITE(0xf8006060, 0x000017ff, 0x0000003e),
  76. EMIT_MASKWRITE(0xf8006064, 0x00021fe0, 0x00020000),
  77. EMIT_MASKWRITE(0xf8006068, 0x03ffffff, 0x00284545),
  78. EMIT_MASKWRITE(0xf800606c, 0x0000ffff, 0x00001610),
  79. EMIT_MASKWRITE(0xf8006078, 0x03ffffff, 0x00466111),
  80. EMIT_MASKWRITE(0xf800607c, 0x000fffff, 0x00032222),
  81. EMIT_MASKWRITE(0xf80060a4, 0xffffffff, 0x10200802),
  82. EMIT_MASKWRITE(0xf80060a8, 0x0fffffff, 0x0690cb73),
  83. EMIT_MASKWRITE(0xf80060ac, 0x000001ff, 0x000001fe),
  84. EMIT_MASKWRITE(0xf80060b0, 0x1fffffff, 0x1cffffff),
  85. EMIT_MASKWRITE(0xf80060b4, 0x00000200, 0x00000200),
  86. EMIT_MASKWRITE(0xf80060b8, 0x01ffffff, 0x0020006a),
  87. EMIT_MASKWRITE(0xf80060c4, 0x00000003, 0x00000003),
  88. EMIT_MASKWRITE(0xf80060c4, 0x00000003, 0x00000000),
  89. EMIT_MASKWRITE(0xf80060c8, 0x000000ff, 0x00000000),
  90. EMIT_MASKWRITE(0xf80060dc, 0x00000001, 0x00000000),
  91. EMIT_MASKWRITE(0xf80060f0, 0x0000ffff, 0x00000000),
  92. EMIT_MASKWRITE(0xf80060f4, 0x0000000f, 0x00000008),
  93. EMIT_MASKWRITE(0xf8006114, 0x000000ff, 0x00000000),
  94. EMIT_MASKWRITE(0xf8006118, 0x7fffffcf, 0x40000001),
  95. EMIT_MASKWRITE(0xf800611c, 0x7fffffcf, 0x40000001),
  96. EMIT_MASKWRITE(0xf8006120, 0x7fffffcf, 0x40000001),
  97. EMIT_MASKWRITE(0xf8006124, 0x7fffffcf, 0x40000001),
  98. EMIT_MASKWRITE(0xf800612c, 0x000fffff, 0x0002c000),
  99. EMIT_MASKWRITE(0xf8006130, 0x000fffff, 0x0002c400),
  100. EMIT_MASKWRITE(0xf8006134, 0x000fffff, 0x0002f003),
  101. EMIT_MASKWRITE(0xf8006138, 0x000fffff, 0x0002ec03),
  102. EMIT_MASKWRITE(0xf8006140, 0x000fffff, 0x00000035),
  103. EMIT_MASKWRITE(0xf8006144, 0x000fffff, 0x00000035),
  104. EMIT_MASKWRITE(0xf8006148, 0x000fffff, 0x00000035),
  105. EMIT_MASKWRITE(0xf800614c, 0x000fffff, 0x00000035),
  106. EMIT_MASKWRITE(0xf8006154, 0x000fffff, 0x00000077),
  107. EMIT_MASKWRITE(0xf8006158, 0x000fffff, 0x00000077),
  108. EMIT_MASKWRITE(0xf800615c, 0x000fffff, 0x00000083),
  109. EMIT_MASKWRITE(0xf8006160, 0x000fffff, 0x00000083),
  110. EMIT_MASKWRITE(0xf8006168, 0x001fffff, 0x00000105),
  111. EMIT_MASKWRITE(0xf800616c, 0x001fffff, 0x00000106),
  112. EMIT_MASKWRITE(0xf8006170, 0x001fffff, 0x00000111),
  113. EMIT_MASKWRITE(0xf8006174, 0x001fffff, 0x00000110),
  114. EMIT_MASKWRITE(0xf800617c, 0x000fffff, 0x000000b7),
  115. EMIT_MASKWRITE(0xf8006180, 0x000fffff, 0x000000b7),
  116. EMIT_MASKWRITE(0xf8006184, 0x000fffff, 0x000000c3),
  117. EMIT_MASKWRITE(0xf8006188, 0x000fffff, 0x000000c3),
  118. EMIT_MASKWRITE(0xf8006190, 0x6ffffefe, 0x00040080),
  119. EMIT_MASKWRITE(0xf8006194, 0x000fffff, 0x0001fd01),
  120. EMIT_MASKWRITE(0xf8006204, 0xffffffff, 0x00000000),
  121. EMIT_MASKWRITE(0xf8006208, 0x000703ff, 0x000003ff),
  122. EMIT_MASKWRITE(0xf800620c, 0x000703ff, 0x000003ff),
  123. EMIT_MASKWRITE(0xf8006210, 0x000703ff, 0x000003ff),
  124. EMIT_MASKWRITE(0xf8006214, 0x000703ff, 0x000003ff),
  125. EMIT_MASKWRITE(0xf8006218, 0x000f03ff, 0x000003ff),
  126. EMIT_MASKWRITE(0xf800621c, 0x000f03ff, 0x000003ff),
  127. EMIT_MASKWRITE(0xf8006220, 0x000f03ff, 0x000003ff),
  128. EMIT_MASKWRITE(0xf8006224, 0x000f03ff, 0x000003ff),
  129. EMIT_MASKWRITE(0xf80062a8, 0x00000ff5, 0x00000000),
  130. EMIT_MASKWRITE(0xf80062ac, 0xffffffff, 0x00000000),
  131. EMIT_MASKWRITE(0xf80062b0, 0x003fffff, 0x00005125),
  132. EMIT_MASKWRITE(0xf80062b4, 0x0003ffff, 0x000012a8),
  133. EMIT_MASKPOLL(0xf8000b74, 0x00002000),
  134. EMIT_MASKWRITE(0xf8006000, 0x0001ffff, 0x00000081),
  135. EMIT_MASKPOLL(0xf8006054, 0x00000007),
  136. EMIT_EXIT(),
  137. };
  138. static unsigned long ps7_mio_init_data_3_0[] = {
  139. EMIT_MASKWRITE(0xf8000008, 0x0000ffff, 0x0000df0d),
  140. EMIT_MASKWRITE(0xf8000b40, 0x00000fff, 0x00000600),
  141. EMIT_MASKWRITE(0xf8000b44, 0x00000fff, 0x00000600),
  142. EMIT_MASKWRITE(0xf8000b48, 0x00000fff, 0x00000672),
  143. EMIT_MASKWRITE(0xf8000b4c, 0x00000fff, 0x00000672),
  144. EMIT_MASKWRITE(0xf8000b50, 0x00000fff, 0x00000674),
  145. EMIT_MASKWRITE(0xf8000b54, 0x00000fff, 0x00000674),
  146. EMIT_MASKWRITE(0xf8000b58, 0x00000fff, 0x00000600),
  147. EMIT_MASKWRITE(0xf8000b5c, 0xffffffff, 0x0018c068),
  148. EMIT_MASKWRITE(0xf8000b60, 0xffffffff, 0x00f98068),
  149. EMIT_MASKWRITE(0xf8000b64, 0xffffffff, 0x00f98068),
  150. EMIT_MASKWRITE(0xf8000b68, 0xffffffff, 0x00f98068),
  151. EMIT_MASKWRITE(0xf8000b6c, 0x00007fff, 0x00000205),
  152. EMIT_MASKWRITE(0xf8000b70, 0x00000001, 0x00000001),
  153. EMIT_MASKWRITE(0xf8000b70, 0x00000021, 0x00000020),
  154. EMIT_MASKWRITE(0xf8000b70, 0x07feffff, 0x00000823),
  155. EMIT_MASKWRITE(0xf8000700, 0x00003fff, 0x00000610),
  156. EMIT_MASKWRITE(0xf8000704, 0x00003fff, 0x00000600),
  157. EMIT_MASKWRITE(0xf8000708, 0x00003fff, 0x00000610),
  158. EMIT_MASKWRITE(0xf800070c, 0x00003fff, 0x00000610),
  159. EMIT_MASKWRITE(0xf8000710, 0x00003fff, 0x00000610),
  160. EMIT_MASKWRITE(0xf8000714, 0x00003fff, 0x00000610),
  161. EMIT_MASKWRITE(0xf8000718, 0x00003fff, 0x00000610),
  162. EMIT_MASKWRITE(0xf800071c, 0x00003fff, 0x00000610),
  163. EMIT_MASKWRITE(0xf8000720, 0x00003fff, 0x00000610),
  164. EMIT_MASKWRITE(0xf8000724, 0x00003fff, 0x00000610),
  165. EMIT_MASKWRITE(0xf8000728, 0x00003fff, 0x00000610),
  166. EMIT_MASKWRITE(0xf800072c, 0x00003fff, 0x00000610),
  167. EMIT_MASKWRITE(0xf8000730, 0x00003fff, 0x00000610),
  168. EMIT_MASKWRITE(0xf8000734, 0x00003fff, 0x00000610),
  169. EMIT_MASKWRITE(0xf8000738, 0x00003fff, 0x00000611),
  170. EMIT_MASKWRITE(0xf800073c, 0x00003fff, 0x00000600),
  171. EMIT_MASKWRITE(0xf8000740, 0x00003fff, 0x00000202),
  172. EMIT_MASKWRITE(0xf8000744, 0x00003fff, 0x00000202),
  173. EMIT_MASKWRITE(0xf8000748, 0x00003fff, 0x00000202),
  174. EMIT_MASKWRITE(0xf800074c, 0x00003fff, 0x00000202),
  175. EMIT_MASKWRITE(0xf8000750, 0x00003fff, 0x00000202),
  176. EMIT_MASKWRITE(0xf8000754, 0x00003fff, 0x00000202),
  177. EMIT_MASKWRITE(0xf8000758, 0x00003fff, 0x00000203),
  178. EMIT_MASKWRITE(0xf800075c, 0x00003fff, 0x00000203),
  179. EMIT_MASKWRITE(0xf8000760, 0x00003fff, 0x00000203),
  180. EMIT_MASKWRITE(0xf8000764, 0x00003fff, 0x00000203),
  181. EMIT_MASKWRITE(0xf8000768, 0x00003fff, 0x00000203),
  182. EMIT_MASKWRITE(0xf800076c, 0x00003fff, 0x00000203),
  183. EMIT_MASKWRITE(0xf8000770, 0x00003fff, 0x00000200),
  184. EMIT_MASKWRITE(0xf8000774, 0x00003fff, 0x00000200),
  185. EMIT_MASKWRITE(0xf8000778, 0x00003fff, 0x00000200),
  186. EMIT_MASKWRITE(0xf800077c, 0x00003fff, 0x00000200),
  187. EMIT_MASKWRITE(0xf8000780, 0x00003fff, 0x00000200),
  188. EMIT_MASKWRITE(0xf8000784, 0x00003fff, 0x00000200),
  189. EMIT_MASKWRITE(0xf8000788, 0x00003fff, 0x00000200),
  190. EMIT_MASKWRITE(0xf800078c, 0x00003fff, 0x00000200),
  191. EMIT_MASKWRITE(0xf8000790, 0x00003fff, 0x00000200),
  192. EMIT_MASKWRITE(0xf8000794, 0x00003fff, 0x00000200),
  193. EMIT_MASKWRITE(0xf8000798, 0x00003fff, 0x00000200),
  194. EMIT_MASKWRITE(0xf800079c, 0x00003fff, 0x00000200),
  195. EMIT_MASKWRITE(0xf80007a0, 0x00003fff, 0x00000280),
  196. EMIT_MASKWRITE(0xf80007a4, 0x00003fff, 0x00000280),
  197. EMIT_MASKWRITE(0xf80007a8, 0x00003fff, 0x00000280),
  198. EMIT_MASKWRITE(0xf80007ac, 0x00003fff, 0x00000280),
  199. EMIT_MASKWRITE(0xf80007b0, 0x00003fff, 0x00000280),
  200. EMIT_MASKWRITE(0xf80007b4, 0x00003fff, 0x00000280),
  201. EMIT_MASKWRITE(0xf80007b8, 0x00003f01, 0x00000201),
  202. EMIT_MASKWRITE(0xf80007bc, 0x00003fff, 0x00000200),
  203. EMIT_MASKWRITE(0xf80007c0, 0x00003fff, 0x000002e0),
  204. EMIT_MASKWRITE(0xf80007c4, 0x00003fff, 0x000002e1),
  205. EMIT_MASKWRITE(0xf80007c8, 0x00003f01, 0x00000201),
  206. EMIT_MASKWRITE(0xf80007cc, 0x00003fff, 0x00000200),
  207. EMIT_MASKWRITE(0xf80007d0, 0x00003fff, 0x00000280),
  208. EMIT_MASKWRITE(0xf80007d4, 0x00003fff, 0x00000280),
  209. EMIT_MASKWRITE(0xf8000830, 0x003f003f, 0x002e0032),
  210. EMIT_MASKWRITE(0xf8000004, 0x0000ffff, 0x0000767b),
  211. EMIT_EXIT(),
  212. };
  213. static unsigned long ps7_peripherals_init_data_3_0[] = {
  214. EMIT_MASKWRITE(0xf8000008, 0x0000ffff, 0x0000df0d),
  215. EMIT_MASKWRITE(0xf8000b48, 0x00000180, 0x00000180),
  216. EMIT_MASKWRITE(0xf8000b4c, 0x00000180, 0x00000180),
  217. EMIT_MASKWRITE(0xf8000b50, 0x00000180, 0x00000180),
  218. EMIT_MASKWRITE(0xf8000b54, 0x00000180, 0x00000180),
  219. EMIT_MASKWRITE(0xf8000004, 0x0000ffff, 0x0000767b),
  220. EMIT_MASKWRITE(0xe0001034, 0x000000ff, 0x00000006),
  221. EMIT_MASKWRITE(0xe0001018, 0x0000ffff, 0x0000003e),
  222. EMIT_MASKWRITE(0xe0001000, 0x000001ff, 0x00000017),
  223. EMIT_MASKWRITE(0xe0001004, 0x000003ff, 0x00000020),
  224. EMIT_MASKWRITE(0xe000d000, 0x00080000, 0x00080000),
  225. EMIT_MASKWRITE(0xf8007000, 0x20000000, 0x00000000),
  226. EMIT_MASKWRITE(0xe000e014, 0x00ffffff, 0x00449144),
  227. EMIT_MASKWRITE(0xe000e018, 0x00000003, 0x00000000),
  228. EMIT_MASKWRITE(0xe000e010, 0x03e00000, 0x02400000),
  229. EMIT_MASKDELAY(0xf8f00200, 0x00000001),
  230. EMIT_MASKDELAY(0xf8f00200, 0x00000001),
  231. EMIT_MASKDELAY(0xf8f00200, 0x00000001),
  232. EMIT_MASKDELAY(0xf8f00200, 0x00000001),
  233. EMIT_MASKDELAY(0xf8f00200, 0x00000001),
  234. EMIT_MASKDELAY(0xf8f00200, 0x00000001),
  235. EMIT_EXIT(),
  236. };
  237. static unsigned long ps7_post_config_3_0[] = {
  238. EMIT_MASKWRITE(0xf8000008, 0x0000ffff, 0x0000df0d),
  239. EMIT_MASKWRITE(0xf8000900, 0x0000000f, 0x0000000f),
  240. EMIT_MASKWRITE(0xf8000240, 0xffffffff, 0x00000000),
  241. EMIT_MASKWRITE(0xf8008000, 0x00000001, 0x00000001),
  242. EMIT_MASKWRITE(0xf8008014, 0x00000001, 0x00000001),
  243. EMIT_MASKWRITE(0xf8000004, 0x0000ffff, 0x0000767b),
  244. EMIT_EXIT(),
  245. };
  246. int ps7_init(void)
  247. {
  248. int ret;
  249. ret = ps7_config(ps7_mio_init_data_3_0);
  250. if (ret != PS7_INIT_SUCCESS)
  251. return ret;
  252. ret = ps7_config(ps7_pll_init_data_3_0);
  253. if (ret != PS7_INIT_SUCCESS)
  254. return ret;
  255. ret = ps7_config(ps7_clock_init_data_3_0);
  256. if (ret != PS7_INIT_SUCCESS)
  257. return ret;
  258. ret = ps7_config(ps7_ddr_init_data_3_0);
  259. if (ret != PS7_INIT_SUCCESS)
  260. return ret;
  261. ret = ps7_config(ps7_peripherals_init_data_3_0);
  262. if (ret != PS7_INIT_SUCCESS)
  263. return ret;
  264. return PS7_INIT_SUCCESS;
  265. }
  266. int ps7_post_config(void)
  267. {
  268. return ps7_config(ps7_post_config_3_0);
  269. }