imx-regs.h 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467
  1. /* SPDX-License-Identifier: GPL-2.0+ */
  2. /*
  3. * Copyright 2017 NXP
  4. */
  5. #ifndef __ASM_ARCH_MX8M_REGS_H__
  6. #define __ASM_ARCH_MX8M_REGS_H__
  7. #include <asm/mach-imx/regs-lcdif.h>
  8. #define ROM_VERSION_A0 0x800
  9. #define ROM_VERSION_B0 0x83C
  10. #define M4_BOOTROM_BASE_ADDR 0x007E0000
  11. #define SAI1_BASE_ADDR 0x30010000
  12. #define SAI6_BASE_ADDR 0x30030000
  13. #define SAI5_BASE_ADDR 0x30040000
  14. #define SAI4_BASE_ADDR 0x30050000
  15. #define SPBA2_BASE_ADDR 0x300F0000
  16. #define AIPS1_BASE_ADDR 0x301F0000
  17. #define GPIO1_BASE_ADDR 0X30200000
  18. #define GPIO2_BASE_ADDR 0x30210000
  19. #define GPIO3_BASE_ADDR 0x30220000
  20. #define GPIO4_BASE_ADDR 0x30230000
  21. #define GPIO5_BASE_ADDR 0x30240000
  22. #define ANA_TSENSOR_BASE_ADDR 0x30260000
  23. #define ANA_OSC_BASE_ADDR 0x30270000
  24. #define WDOG1_BASE_ADDR 0x30280000
  25. #define WDOG2_BASE_ADDR 0x30290000
  26. #define WDOG3_BASE_ADDR 0x302A0000
  27. #define SDMA2_BASE_ADDR 0x302C0000
  28. #define GPT1_BASE_ADDR 0x302D0000
  29. #define GPT2_BASE_ADDR 0x302E0000
  30. #define GPT3_BASE_ADDR 0x302F0000
  31. #define ROMCP_BASE_ADDR 0x30310000
  32. #define LCDIF_BASE_ADDR 0x30320000
  33. #define IOMUXC_BASE_ADDR 0x30330000
  34. #define IOMUXC_GPR_BASE_ADDR 0x30340000
  35. #define OCOTP_BASE_ADDR 0x30350000
  36. #define ANATOP_BASE_ADDR 0x30360000
  37. #define SNVS_HP_BASE_ADDR 0x30370000
  38. #define CCM_BASE_ADDR 0x30380000
  39. #define SRC_BASE_ADDR 0x30390000
  40. #define GPC_BASE_ADDR 0x303A0000
  41. #define SEMAPHORE1_BASE_ADDR 0x303B0000
  42. #define SEMAPHORE2_BASE_ADDR 0x303C0000
  43. #define RDC_BASE_ADDR 0x303D0000
  44. #define CSU_BASE_ADDR 0x303E0000
  45. #define AIPS2_BASE_ADDR 0x305F0000
  46. #define PWM1_BASE_ADDR 0x30660000
  47. #define PWM2_BASE_ADDR 0x30670000
  48. #define PWM3_BASE_ADDR 0x30680000
  49. #define PWM4_BASE_ADDR 0x30690000
  50. #define SYSCNT_RD_BASE_ADDR 0x306A0000
  51. #define SYSCNT_CMP_BASE_ADDR 0x306B0000
  52. #define SYSCNT_CTRL_BASE_ADDR 0x306C0000
  53. #define GPT6_BASE_ADDR 0x306E0000
  54. #define GPT5_BASE_ADDR 0x306F0000
  55. #define GPT4_BASE_ADDR 0x30700000
  56. #define PERFMON1_BASE_ADDR 0x307C0000
  57. #define PERFMON2_BASE_ADDR 0x307D0000
  58. #define QOSC_BASE_ADDR 0x307F0000
  59. #define SPDIF1_BASE_ADDR 0x30810000
  60. #define ECSPI1_BASE_ADDR 0x30820000
  61. #define ECSPI2_BASE_ADDR 0x30830000
  62. #define ECSPI3_BASE_ADDR 0x30840000
  63. #define UART1_BASE_ADDR 0x30860000
  64. #define UART3_BASE_ADDR 0x30880000
  65. #define UART2_BASE_ADDR 0x30890000
  66. #define SPDIF2_BASE_ADDR 0x308A0000
  67. #define SAI2_BASE_ADDR 0x308B0000
  68. #define SAI3_BASE_ADDR 0x308C0000
  69. #define SPBA1_BASE_ADDR 0x308F0000
  70. #define CAAM_BASE_ADDR 0x30900000
  71. #define AIPS3_BASE_ADDR 0x309F0000
  72. #define MIPI_PHY_BASE_ADDR 0x30A00000
  73. #define MIPI_DSI_BASE_ADDR 0x30A10000
  74. #define I2C1_BASE_ADDR 0x30A20000
  75. #define I2C2_BASE_ADDR 0x30A30000
  76. #define I2C3_BASE_ADDR 0x30A40000
  77. #define I2C4_BASE_ADDR 0x30A50000
  78. #define UART4_BASE_ADDR 0x30A60000
  79. #define MIPI_CSI_BASE_ADDR 0x30A70000
  80. #define MIPI_CSI_PHY1_BASE_ADDR 0x30A80000
  81. #define CSI1_BASE_ADDR 0x30A90000
  82. #define MU_A_BASE_ADDR 0x30AA0000
  83. #define MU_B_BASE_ADDR 0x30AB0000
  84. #define SEMAPHOR_HS_BASE_ADDR 0x30AC0000
  85. #define USDHC1_BASE_ADDR 0x30B40000
  86. #define USDHC2_BASE_ADDR 0x30B50000
  87. #define MIPI_CS2_BASE_ADDR 0x30B60000
  88. #define MIPI_CSI_PHY2_BASE_ADDR 0x30B70000
  89. #define CSI2_BASE_ADDR 0x30B80000
  90. #define QSPI0_BASE_ADDR 0x30BB0000
  91. #define QSPI0_AMBA_BASE 0x08000000
  92. #define SDMA1_BASE_ADDR 0x30BD0000
  93. #define ENET1_BASE_ADDR 0x30BE0000
  94. #define HDMI_CTRL_BASE_ADDR 0x32C00000
  95. #define AIPS4_BASE_ADDR 0x32DF0000
  96. #define DC1_BASE_ADDR 0x32E00000
  97. #define DC2_BASE_ADDR 0x32E10000
  98. #define DC3_BASE_ADDR 0x32E20000
  99. #define HDMI_SEC_BASE_ADDR 0x32E40000
  100. #define TZASC_BASE_ADDR 0x32F80000
  101. #define MTR_BASE_ADDR 0x32FB0000
  102. #define PLATFORM_CTRL_BASE_ADDR 0x32FE0000
  103. #define MXS_APBH_BASE 0x33000000
  104. #define MXS_GPMI_BASE 0x33002000
  105. #define MXS_BCH_BASE 0x33004000
  106. #define USB1_BASE_ADDR 0x38100000
  107. #define USB2_BASE_ADDR 0x38200000
  108. #define USB1_PHY_BASE_ADDR 0x381F0000
  109. #define USB2_PHY_BASE_ADDR 0x382F0000
  110. #define MXS_LCDIF_BASE LCDIF_BASE_ADDR
  111. #define SRC_IPS_BASE_ADDR 0x30390000
  112. #define SRC_DDRC_RCR_ADDR 0x30391000
  113. #define SRC_DDRC2_RCR_ADDR 0x30391004
  114. #define DDRC_DDR_SS_GPR0 0x3d000000
  115. #define DDRC_IPS_BASE_ADDR(X) (0x3d400000 + ((X) * 0x2000000))
  116. #define DDR_CSD1_BASE_ADDR 0x40000000
  117. #if !defined(__ASSEMBLY__)
  118. #include <asm/types.h>
  119. #include <linux/bitops.h>
  120. #include <stdbool.h>
  121. #define GPR_TZASC_EN BIT(0)
  122. #define GPR_TZASC_EN_LOCK BIT(16)
  123. #define SRC_SCR_M4_ENABLE_OFFSET 3
  124. #define SRC_SCR_M4_ENABLE_MASK BIT(3)
  125. #define SRC_SCR_M4C_NON_SCLR_RST_OFFSET 0
  126. #define SRC_SCR_M4C_NON_SCLR_RST_MASK BIT(0)
  127. #define SRC_DDR1_ENABLE_MASK 0x8F000000UL
  128. #define SRC_DDR2_ENABLE_MASK 0x8F000000UL
  129. #define SRC_DDR1_RCR_PHY_PWROKIN_N_MASK BIT(3)
  130. #define SRC_DDR1_RCR_PHY_RESET_MASK BIT(2)
  131. #define SRC_DDR1_RCR_CORE_RESET_N_MASK BIT(1)
  132. #define SRC_DDR1_RCR_PRESET_N_MASK BIT(0)
  133. struct iomuxc_gpr_base_regs {
  134. u32 gpr[47];
  135. };
  136. struct ocotp_regs {
  137. u32 ctrl;
  138. u32 ctrl_set;
  139. u32 ctrl_clr;
  140. u32 ctrl_tog;
  141. u32 timing;
  142. u32 rsvd0[3];
  143. u32 data;
  144. u32 rsvd1[3];
  145. u32 read_ctrl;
  146. u32 rsvd2[3];
  147. u32 read_fuse_data;
  148. u32 rsvd3[3];
  149. u32 sw_sticky;
  150. u32 rsvd4[3];
  151. u32 scs;
  152. u32 scs_set;
  153. u32 scs_clr;
  154. u32 scs_tog;
  155. u32 crc_addr;
  156. u32 rsvd5[3];
  157. u32 crc_value;
  158. u32 rsvd6[3];
  159. u32 version;
  160. u32 rsvd7[0xdb];
  161. /* fuse banks */
  162. struct fuse_bank {
  163. u32 fuse_regs[0x10];
  164. } bank[0];
  165. };
  166. struct fuse_bank0_regs {
  167. u32 lock;
  168. u32 rsvd0[3];
  169. u32 uid_low;
  170. u32 rsvd1[3];
  171. u32 uid_high;
  172. u32 rsvd2[7];
  173. };
  174. struct fuse_bank1_regs {
  175. u32 tester3;
  176. u32 rsvd0[3];
  177. u32 tester4;
  178. u32 rsvd1[3];
  179. u32 tester5;
  180. u32 rsvd2[3];
  181. u32 cfg0;
  182. u32 rsvd3[3];
  183. };
  184. struct anamix_pll {
  185. u32 audio_pll1_cfg0;
  186. u32 audio_pll1_cfg1;
  187. u32 audio_pll2_cfg0;
  188. u32 audio_pll2_cfg1;
  189. u32 video_pll_cfg0;
  190. u32 video_pll_cfg1;
  191. u32 gpu_pll_cfg0;
  192. u32 gpu_pll_cfg1;
  193. u32 vpu_pll_cfg0;
  194. u32 vpu_pll_cfg1;
  195. u32 arm_pll_cfg0;
  196. u32 arm_pll_cfg1;
  197. u32 sys_pll1_cfg0;
  198. u32 sys_pll1_cfg1;
  199. u32 sys_pll1_cfg2;
  200. u32 sys_pll2_cfg0;
  201. u32 sys_pll2_cfg1;
  202. u32 sys_pll2_cfg2;
  203. u32 sys_pll3_cfg0;
  204. u32 sys_pll3_cfg1;
  205. u32 sys_pll3_cfg2;
  206. u32 video_pll2_cfg0;
  207. u32 video_pll2_cfg1;
  208. u32 video_pll2_cfg2;
  209. u32 dram_pll_cfg0;
  210. u32 dram_pll_cfg1;
  211. u32 dram_pll_cfg2;
  212. u32 digprog;
  213. u32 osc_misc_cfg;
  214. u32 pllout_monitor_cfg;
  215. u32 frac_pllout_div_cfg;
  216. u32 sscg_pllout_div_cfg;
  217. };
  218. struct fuse_bank9_regs {
  219. u32 mac_addr0;
  220. u32 rsvd0[3];
  221. u32 mac_addr1;
  222. u32 rsvd1[11];
  223. };
  224. /* System Reset Controller (SRC) */
  225. struct src {
  226. u32 scr;
  227. u32 a53rcr;
  228. u32 a53rcr1;
  229. u32 m4rcr;
  230. u32 reserved1[4];
  231. u32 usbophy1_rcr;
  232. u32 usbophy2_rcr;
  233. u32 mipiphy_rcr;
  234. u32 pciephy_rcr;
  235. u32 hdmi_rcr;
  236. u32 disp_rcr;
  237. u32 reserved2[2];
  238. u32 gpu_rcr;
  239. u32 vpu_rcr;
  240. u32 pcie2_rcr;
  241. u32 mipiphy1_rcr;
  242. u32 mipiphy2_rcr;
  243. u32 reserved3;
  244. u32 sbmr1;
  245. u32 srsr;
  246. u32 reserved4[2];
  247. u32 sisr;
  248. u32 simr;
  249. u32 sbmr2;
  250. u32 gpr1;
  251. u32 gpr2;
  252. u32 gpr3;
  253. u32 gpr4;
  254. u32 gpr5;
  255. u32 gpr6;
  256. u32 gpr7;
  257. u32 gpr8;
  258. u32 gpr9;
  259. u32 gpr10;
  260. u32 reserved5[985];
  261. u32 ddr1_rcr;
  262. u32 ddr2_rcr;
  263. };
  264. struct gpc_reg {
  265. u32 lpcr_bsc;
  266. u32 lpcr_ad;
  267. u32 lpcr_cpu1;
  268. u32 lpcr_cpu2;
  269. u32 lpcr_cpu3;
  270. u32 slpcr;
  271. u32 mst_cpu_mapping;
  272. u32 mmdc_cpu_mapping;
  273. u32 mlpcr;
  274. u32 pgc_ack_sel;
  275. u32 pgc_ack_sel_m4;
  276. u32 gpc_misc;
  277. u32 imr1_core0;
  278. u32 imr2_core0;
  279. u32 imr3_core0;
  280. u32 imr4_core0;
  281. u32 imr1_core1;
  282. u32 imr2_core1;
  283. u32 imr3_core1;
  284. u32 imr4_core1;
  285. u32 imr1_cpu1;
  286. u32 imr2_cpu1;
  287. u32 imr3_cpu1;
  288. u32 imr4_cpu1;
  289. u32 imr1_cpu3;
  290. u32 imr2_cpu3;
  291. u32 imr3_cpu3;
  292. u32 imr4_cpu3;
  293. u32 isr1_cpu0;
  294. u32 isr2_cpu0;
  295. u32 isr3_cpu0;
  296. u32 isr4_cpu0;
  297. u32 isr1_cpu1;
  298. u32 isr2_cpu1;
  299. u32 isr3_cpu1;
  300. u32 isr4_cpu1;
  301. u32 isr1_cpu2;
  302. u32 isr2_cpu2;
  303. u32 isr3_cpu2;
  304. u32 isr4_cpu2;
  305. u32 isr1_cpu3;
  306. u32 isr2_cpu3;
  307. u32 isr3_cpu3;
  308. u32 isr4_cpu3;
  309. u32 slt0_cfg;
  310. u32 slt1_cfg;
  311. u32 slt2_cfg;
  312. u32 slt3_cfg;
  313. u32 slt4_cfg;
  314. u32 slt5_cfg;
  315. u32 slt6_cfg;
  316. u32 slt7_cfg;
  317. u32 slt8_cfg;
  318. u32 slt9_cfg;
  319. u32 slt10_cfg;
  320. u32 slt11_cfg;
  321. u32 slt12_cfg;
  322. u32 slt13_cfg;
  323. u32 slt14_cfg;
  324. u32 pgc_cpu_0_1_mapping;
  325. u32 cpu_pgc_up_trg;
  326. u32 mix_pgc_up_trg;
  327. u32 pu_pgc_up_trg;
  328. u32 cpu_pgc_dn_trg;
  329. u32 mix_pgc_dn_trg;
  330. u32 pu_pgc_dn_trg;
  331. u32 lpcr_bsc2;
  332. u32 pgc_cpu_2_3_mapping;
  333. u32 lps_cpu0;
  334. u32 lps_cpu1;
  335. u32 lps_cpu2;
  336. u32 lps_cpu3;
  337. u32 gpc_gpr;
  338. u32 gtor;
  339. u32 debug_addr1;
  340. u32 debug_addr2;
  341. u32 cpu_pgc_up_status1;
  342. u32 mix_pgc_up_status0;
  343. u32 mix_pgc_up_status1;
  344. u32 mix_pgc_up_status2;
  345. u32 m4_mix_pgc_up_status0;
  346. u32 m4_mix_pgc_up_status1;
  347. u32 m4_mix_pgc_up_status2;
  348. u32 pu_pgc_up_status0;
  349. u32 pu_pgc_up_status1;
  350. u32 pu_pgc_up_status2;
  351. u32 m4_pu_pgc_up_status0;
  352. u32 m4_pu_pgc_up_status1;
  353. u32 m4_pu_pgc_up_status2;
  354. u32 a53_lp_io_0;
  355. u32 a53_lp_io_1;
  356. u32 a53_lp_io_2;
  357. u32 cpu_pgc_dn_status1;
  358. u32 mix_pgc_dn_status0;
  359. u32 mix_pgc_dn_status1;
  360. u32 mix_pgc_dn_status2;
  361. u32 m4_mix_pgc_dn_status0;
  362. u32 m4_mix_pgc_dn_status1;
  363. u32 m4_mix_pgc_dn_status2;
  364. u32 pu_pgc_dn_status0;
  365. u32 pu_pgc_dn_status1;
  366. u32 pu_pgc_dn_status2;
  367. u32 m4_pu_pgc_dn_status0;
  368. u32 m4_pu_pgc_dn_status1;
  369. u32 m4_pu_pgc_dn_status2;
  370. u32 res[3];
  371. u32 mix_pdn_flg;
  372. u32 pu_pdn_flg;
  373. u32 m4_mix_pdn_flg;
  374. u32 m4_pu_pdn_flg;
  375. u32 imr1_core2;
  376. u32 imr2_core2;
  377. u32 imr3_core2;
  378. u32 imr4_core2;
  379. u32 imr1_core3;
  380. u32 imr2_core3;
  381. u32 imr3_core3;
  382. u32 imr4_core3;
  383. u32 pgc_ack_sel_pu;
  384. u32 pgc_ack_sel_m4_pu;
  385. u32 slt15_cfg;
  386. u32 slt16_cfg;
  387. u32 slt17_cfg;
  388. u32 slt18_cfg;
  389. u32 slt19_cfg;
  390. u32 gpc_pu_pwrhsk;
  391. u32 slt0_cfg_pu;
  392. u32 slt1_cfg_pu;
  393. u32 slt2_cfg_pu;
  394. u32 slt3_cfg_pu;
  395. u32 slt4_cfg_pu;
  396. u32 slt5_cfg_pu;
  397. u32 slt6_cfg_pu;
  398. u32 slt7_cfg_pu;
  399. u32 slt8_cfg_pu;
  400. u32 slt9_cfg_pu;
  401. u32 slt10_cfg_pu;
  402. u32 slt11_cfg_pu;
  403. u32 slt12_cfg_pu;
  404. u32 slt13_cfg_pu;
  405. u32 slt14_cfg_pu;
  406. u32 slt15_cfg_pu;
  407. u32 slt16_cfg_pu;
  408. u32 slt17_cfg_pu;
  409. u32 slt18_cfg_pu;
  410. u32 slt19_cfg_pu;
  411. };
  412. #define WDOG_WDT_MASK BIT(3)
  413. #define WDOG_WDZST_MASK BIT(0)
  414. struct wdog_regs {
  415. u16 wcr; /* Control */
  416. u16 wsr; /* Service */
  417. u16 wrsr; /* Reset Status */
  418. u16 wicr; /* Interrupt Control */
  419. u16 wmcr; /* Miscellaneous Control */
  420. };
  421. struct bootrom_sw_info {
  422. u8 reserved_1;
  423. u8 boot_dev_instance;
  424. u8 boot_dev_type;
  425. u8 reserved_2;
  426. u32 core_freq;
  427. u32 axi_freq;
  428. u32 ddr_freq;
  429. u32 tick_freq;
  430. u32 reserved_3[3];
  431. };
  432. #define ROM_SW_INFO_ADDR_B0 0x00000968
  433. #define ROM_SW_INFO_ADDR_A0 0x000009e8
  434. #define ROM_SW_INFO_ADDR is_soc_rev(CHIP_REV_1_0) ? \
  435. (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_A0 : \
  436. (struct bootrom_sw_info **)ROM_SW_INFO_ADDR_B0
  437. #endif
  438. #endif