imx25-pinmux.h 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421
  1. /*
  2. * iopin settings are controlled by four different sets of registers
  3. * iopad mux control
  4. * individual iopad setup (voltage select, pull/keep, drive strength ...)
  5. * group iopad setup (same as above but for groups of signals)
  6. * input select when multiple inputs are possible
  7. */
  8. /*
  9. * software pad mux control
  10. */
  11. /* SW Input On (Loopback) */
  12. #define MX25_PIN_MUX_SION (1 << 4)
  13. /* MUX Mode (0-7) */
  14. #define MX25_PIN_MUX_MODE(mode) ((mode & 0x7) << 0)
  15. struct iomuxc_mux_ctl {
  16. u32 gpr1;
  17. u32 observe_int_mux;
  18. u32 pad_a10;
  19. u32 pad_a13;
  20. u32 pad_a14;
  21. u32 pad_a15;
  22. u32 pad_a16;
  23. u32 pad_a17;
  24. u32 pad_a18;
  25. u32 pad_a19;
  26. u32 pad_a20;
  27. u32 pad_a21;
  28. u32 pad_a22;
  29. u32 pad_a23;
  30. u32 pad_a24;
  31. u32 pad_a25;
  32. u32 pad_eb0;
  33. u32 pad_eb1;
  34. u32 pad_oe;
  35. u32 pad_cs0;
  36. u32 pad_cs1;
  37. u32 pad_cs4;
  38. u32 pad_cs5;
  39. u32 pad_nf_ce0;
  40. u32 pad_ecb;
  41. u32 pad_lba;
  42. u32 pad_bclk;
  43. u32 pad_rw;
  44. u32 pad_nfwe_b;
  45. u32 pad_nfre_b;
  46. u32 pad_nfale;
  47. u32 pad_nfcle;
  48. u32 pad_nfwp_b;
  49. u32 pad_nfrb;
  50. u32 pad_d15;
  51. u32 pad_d14;
  52. u32 pad_d13;
  53. u32 pad_d12;
  54. u32 pad_d11;
  55. u32 pad_d10;
  56. u32 pad_d9;
  57. u32 pad_d8;
  58. u32 pad_d7;
  59. u32 pad_d6;
  60. u32 pad_d5;
  61. u32 pad_d4;
  62. u32 pad_d3;
  63. u32 pad_d2;
  64. u32 pad_d1;
  65. u32 pad_d0;
  66. u32 pad_ld0;
  67. u32 pad_ld1;
  68. u32 pad_ld2;
  69. u32 pad_ld3;
  70. u32 pad_ld4;
  71. u32 pad_ld5;
  72. u32 pad_ld6;
  73. u32 pad_ld7;
  74. u32 pad_ld8;
  75. u32 pad_ld9;
  76. u32 pad_ld10;
  77. u32 pad_ld11;
  78. u32 pad_ld12;
  79. u32 pad_ld13;
  80. u32 pad_ld14;
  81. u32 pad_ld15;
  82. u32 pad_hsync;
  83. u32 pad_vsync;
  84. u32 pad_lsclk;
  85. u32 pad_oe_acd;
  86. u32 pad_contrast;
  87. u32 pad_pwm;
  88. u32 pad_csi_d2;
  89. u32 pad_csi_d3;
  90. u32 pad_csi_d4;
  91. u32 pad_csi_d5;
  92. u32 pad_csi_d6;
  93. u32 pad_csi_d7;
  94. u32 pad_csi_d8;
  95. u32 pad_csi_d9;
  96. u32 pad_csi_mclk;
  97. u32 pad_csi_vsync;
  98. u32 pad_csi_hsync;
  99. u32 pad_csi_pixclk;
  100. u32 pad_i2c1_clk;
  101. u32 pad_i2c1_dat;
  102. u32 pad_cspi1_mosi;
  103. u32 pad_cspi1_miso;
  104. u32 pad_cspi1_ss0;
  105. u32 pad_cspi1_ss1;
  106. u32 pad_cspi1_sclk;
  107. u32 pad_cspi1_rdy;
  108. u32 pad_uart1_rxd;
  109. u32 pad_uart1_txd;
  110. u32 pad_uart1_rts;
  111. u32 pad_uart1_cts;
  112. u32 pad_uart2_rxd;
  113. u32 pad_uart2_txd;
  114. u32 pad_uart2_rts;
  115. u32 pad_uart2_cts;
  116. u32 pad_sd1_cmd;
  117. u32 pad_sd1_clk;
  118. u32 pad_sd1_data0;
  119. u32 pad_sd1_data1;
  120. u32 pad_sd1_data2;
  121. u32 pad_sd1_data3;
  122. u32 pad_kpp_row0;
  123. u32 pad_kpp_row1;
  124. u32 pad_kpp_row2;
  125. u32 pad_kpp_row3;
  126. u32 pad_kpp_col0;
  127. u32 pad_kpp_col1;
  128. u32 pad_kpp_col2;
  129. u32 pad_kpp_col3;
  130. u32 pad_fec_mdc;
  131. u32 pad_fec_mdio;
  132. u32 pad_fec_tdata0;
  133. u32 pad_fec_tdata1;
  134. u32 pad_fec_tx_en;
  135. u32 pad_fec_rdata0;
  136. u32 pad_fec_rdata1;
  137. u32 pad_fec_rx_dv;
  138. u32 pad_fec_tx_clk;
  139. u32 pad_rtck;
  140. u32 pad_de_b;
  141. u32 pad_gpio_a;
  142. u32 pad_gpio_b;
  143. u32 pad_gpio_c;
  144. u32 pad_gpio_d;
  145. u32 pad_gpio_e;
  146. u32 pad_gpio_f;
  147. u32 pad_ext_armclk;
  148. u32 pad_upll_bypclk;
  149. u32 pad_vstby_req;
  150. u32 pad_vstby_ack;
  151. u32 pad_power_fail;
  152. u32 pad_clko;
  153. u32 pad_boot_mode0;
  154. u32 pad_boot_mode1;
  155. };
  156. /*
  157. * software pad control
  158. */
  159. /* Select 3.3 or 1.8 volts */
  160. #define MX25_PIN_PAD_CTL_DVS_33 (0 << 13)
  161. #define MX25_PIN_PAD_CTL_DVS_18 (1 << 13)
  162. /* Enable hysteresis */
  163. #define MX25_PIN_PAD_CTL_HYS (1 << 8)
  164. /* Enable pull/keeper */
  165. #define MX25_PIN_PAD_CTL_PKE (1 << 7)
  166. /* 0 - keeper / 1 - pull */
  167. #define MX25_PIN_PAD_CTL_PUE (1 << 6)
  168. /* pull up/down strength */
  169. #define MX25_PIN_PAD_CTL_100K_PD (0 << 4)
  170. #define MX25_PIN_PAD_CTL_47K_PU (1 << 4)
  171. #define MX25_PIN_PAD_CTL_100K_PU (2 << 4)
  172. #define MX25_PIN_PAD_CTL_22K_PU (3 << 4)
  173. /* open drain control */
  174. #define MX25_PIN_PAD_CTL_OD (1 << 3)
  175. /* drive strength */
  176. #define MX25_PIN_PAD_CTL_DS_NOM (0 << 1)
  177. #define MX25_PIN_PAD_CTL_DS_HIGH (1 << 1)
  178. #define MX25_PIN_PAD_CTL_DS_MAX (2 << 1)
  179. #define MX25_PIN_PAD_CTL_DS_MAX11 (3 << 1)
  180. /* slew rate */
  181. #define MX25_PIN_PAD_CTL_SRE_SLOW (0 << 0)
  182. #define MX25_PIN_PAD_CTL_SRE_FAST (1 << 0)
  183. struct iomuxc_pad_ctl {
  184. u32 pad_a13;
  185. u32 pad_a14;
  186. u32 pad_a15;
  187. u32 pad_a17;
  188. u32 pad_a18;
  189. u32 pad_a19;
  190. u32 pad_a20;
  191. u32 pad_a21;
  192. u32 pad_a23;
  193. u32 pad_a24;
  194. u32 pad_a25;
  195. u32 pad_eb0;
  196. u32 pad_eb1;
  197. u32 pad_oe;
  198. u32 pad_cs4;
  199. u32 pad_cs5;
  200. u32 pad_nf_ce0;
  201. u32 pad_ecb;
  202. u32 pad_lba;
  203. u32 pad_rw;
  204. u32 pad_nfrb;
  205. u32 pad_d15;
  206. u32 pad_d14;
  207. u32 pad_d13;
  208. u32 pad_d12;
  209. u32 pad_d11;
  210. u32 pad_d10;
  211. u32 pad_d9;
  212. u32 pad_d8;
  213. u32 pad_d7;
  214. u32 pad_d6;
  215. u32 pad_d5;
  216. u32 pad_d4;
  217. u32 pad_d3;
  218. u32 pad_d2;
  219. u32 pad_d1;
  220. u32 pad_d0;
  221. u32 pad_ld0;
  222. u32 pad_ld1;
  223. u32 pad_ld2;
  224. u32 pad_ld3;
  225. u32 pad_ld4;
  226. u32 pad_ld5;
  227. u32 pad_ld6;
  228. u32 pad_ld7;
  229. u32 pad_ld8;
  230. u32 pad_ld9;
  231. u32 pad_ld10;
  232. u32 pad_ld11;
  233. u32 pad_ld12;
  234. u32 pad_ld13;
  235. u32 pad_ld14;
  236. u32 pad_ld15;
  237. u32 pad_hsync;
  238. u32 pad_vsync;
  239. u32 pad_lsclk;
  240. u32 pad_oe_acd;
  241. u32 pad_contrast;
  242. u32 pad_pwm;
  243. u32 pad_csi_d2;
  244. u32 pad_csi_d3;
  245. u32 pad_csi_d4;
  246. u32 pad_csi_d5;
  247. u32 pad_csi_d6;
  248. u32 pad_csi_d7;
  249. u32 pad_csi_d8;
  250. u32 pad_csi_d9;
  251. u32 pad_csi_mclk;
  252. u32 pad_csi_vsync;
  253. u32 pad_csi_hsync;
  254. u32 pad_csi_pixclk;
  255. u32 pad_i2c1_clk;
  256. u32 pad_i2c1_dat;
  257. u32 pad_cspi1_mosi;
  258. u32 pad_cspi1_miso;
  259. u32 pad_cspi1_ss0;
  260. u32 pad_cspi1_ss1;
  261. u32 pad_cspi1_sclk;
  262. u32 pad_cspi1_rdy;
  263. u32 pad_uart1_rxd;
  264. u32 pad_uart1_txd;
  265. u32 pad_uart1_rts;
  266. u32 pad_uart1_cts;
  267. u32 pad_uart2_rxd;
  268. u32 pad_uart2_txd;
  269. u32 pad_uart2_rts;
  270. u32 pad_uart2_cts;
  271. u32 pad_sd1_cmd;
  272. u32 pad_sd1_clk;
  273. u32 pad_sd1_data0;
  274. u32 pad_sd1_data1;
  275. u32 pad_sd1_data2;
  276. u32 pad_sd1_data3;
  277. u32 pad_kpp_row0;
  278. u32 pad_kpp_row1;
  279. u32 pad_kpp_row2;
  280. u32 pad_kpp_row3;
  281. u32 pad_kpp_col0;
  282. u32 pad_kpp_col1;
  283. u32 pad_kpp_col2;
  284. u32 pad_kpp_col3;
  285. u32 pad_fec_mdc;
  286. u32 pad_fec_mdio;
  287. u32 pad_fec_tdata0;
  288. u32 pad_fec_tdata1;
  289. u32 pad_fec_tx_en;
  290. u32 pad_fec_rdata0;
  291. u32 pad_fec_rdata1;
  292. u32 pad_fec_rx_dv;
  293. u32 pad_fec_tx_clk;
  294. u32 pad_rtck;
  295. u32 pad_tdo;
  296. u32 pad_de_b;
  297. u32 pad_gpio_a;
  298. u32 pad_gpio_b;
  299. u32 pad_gpio_c;
  300. u32 pad_gpio_d;
  301. u32 pad_gpio_e;
  302. u32 pad_gpio_f;
  303. u32 pad_vstby_req;
  304. u32 pad_vstby_ack;
  305. u32 pad_power_fail;
  306. u32 pad_clko;
  307. };
  308. /*
  309. * Pad group drive strength and voltage select
  310. * Same fields as iomuxc_pad_ctl plus ddr type
  311. */
  312. /* Select DDR type */
  313. #define MX25_PIN_PAD_CTL_DDR_18 (0 << 11)
  314. #define MX25_PIN_PAD_CTL_DDR_33 (1 << 11)
  315. #define MX25_PIN_PAD_CTL_DDR_MAX (2 << 11)
  316. struct iomuxc_pad_grp_ctl {
  317. u32 grp_dvs_misc;
  318. u32 grp_dse_fec;
  319. u32 grp_dvs_jtag;
  320. u32 grp_dse_nfc;
  321. u32 grp_dse_csi;
  322. u32 grp_dse_weim;
  323. u32 grp_dse_ddr;
  324. u32 grp_dvs_crm;
  325. u32 grp_dse_kpp;
  326. u32 grp_dse_sdhc1;
  327. u32 grp_dse_lcd;
  328. u32 grp_dse_uart;
  329. u32 grp_dvs_nfc;
  330. u32 grp_dvs_csi;
  331. u32 grp_dse_cspi1;
  332. u32 grp_ddrtype;
  333. u32 grp_dvs_sdhc1;
  334. u32 grp_dvs_lcd;
  335. };
  336. /*
  337. * Pad input select control
  338. * Select which pad to connect to an input port
  339. * where multiple pads can function as given input
  340. */
  341. #define MX25_PAD_INPUT_SELECT_DAISY(in) ((in & 0x7) << 0)
  342. struct iomuxc_pad_input_select {
  343. u32 audmux_p4_input_da_amx;
  344. u32 audmux_p4_input_db_amx;
  345. u32 audmux_p4_input_rxclk_amx;
  346. u32 audmux_p4_input_rxfs_amx;
  347. u32 audmux_p4_input_txclk_amx;
  348. u32 audmux_p4_input_txfs_amx;
  349. u32 audmux_p7_input_da_amx;
  350. u32 audmux_p7_input_txfs_amx;
  351. u32 can1_ipp_ind_canrx;
  352. u32 can2_ipp_ind_canrx;
  353. u32 csi_ipp_csi_d_0;
  354. u32 csi_ipp_csi_d_1;
  355. u32 cspi1_ipp_ind_ss3_b;
  356. u32 cspi2_ipp_cspi_clk_in;
  357. u32 cspi2_ipp_ind_dataready_b;
  358. u32 cspi2_ipp_ind_miso;
  359. u32 cspi2_ipp_ind_mosi;
  360. u32 cspi2_ipp_ind_ss0_b;
  361. u32 cspi2_ipp_ind_ss1_b;
  362. u32 cspi3_ipp_cspi_clk_in;
  363. u32 cspi3_ipp_ind_dataready_b;
  364. u32 cspi3_ipp_ind_miso;
  365. u32 cspi3_ipp_ind_mosi;
  366. u32 cspi3_ipp_ind_ss0_b;
  367. u32 cspi3_ipp_ind_ss1_b;
  368. u32 cspi3_ipp_ind_ss2_b;
  369. u32 cspi3_ipp_ind_ss3_b;
  370. u32 esdhc1_ipp_dat4_in;
  371. u32 esdhc1_ipp_dat5_in;
  372. u32 esdhc1_ipp_dat6_in;
  373. u32 esdhc1_ipp_dat7_in;
  374. u32 esdhc2_ipp_card_clk_in;
  375. u32 esdhc2_ipp_cmd_in;
  376. u32 esdhc2_ipp_dat0_in;
  377. u32 esdhc2_ipp_dat1_in;
  378. u32 esdhc2_ipp_dat2_in;
  379. u32 esdhc2_ipp_dat3_in;
  380. u32 esdhc2_ipp_dat4_in;
  381. u32 esdhc2_ipp_dat5_in;
  382. u32 esdhc2_ipp_dat6_in;
  383. u32 esdhc2_ipp_dat7_in;
  384. u32 fec_fec_col;
  385. u32 fec_fec_crs;
  386. u32 fec_fec_rdata_2;
  387. u32 fec_fec_rdata_3;
  388. u32 fec_fec_rx_clk;
  389. u32 fec_fec_rx_er;
  390. u32 i2c2_ipp_scl_in;
  391. u32 i2c2_ipp_sda_in;
  392. u32 i2c3_ipp_scl_in;
  393. u32 i2c3_ipp_sda_in;
  394. u32 kpp_ipp_ind_col_4;
  395. u32 kpp_ipp_ind_col_5;
  396. u32 kpp_ipp_ind_col_6;
  397. u32 kpp_ipp_ind_col_7;
  398. u32 kpp_ipp_ind_row_4;
  399. u32 kpp_ipp_ind_row_5;
  400. u32 kpp_ipp_ind_row_6;
  401. u32 kpp_ipp_ind_row_7;
  402. u32 sim1_pin_sim_rcvd1_in;
  403. u32 sim1_pin_sim_simpd1;
  404. u32 sim1_sim_rcvd1_io;
  405. u32 sim2_pin_sim_rcvd1_in;
  406. u32 sim2_pin_sim_simpd1;
  407. u32 sim2_sim_rcvd1_io;
  408. u32 uart3_ipp_uart_rts_b;
  409. u32 uart3_ipp_uart_rxd_mux;
  410. u32 uart4_ipp_uart_rts_b;
  411. u32 uart4_ipp_uart_rxd_mux;
  412. u32 uart5_ipp_uart_rts_b;
  413. u32 uart5_ipp_uart_rxd_mux;
  414. u32 usb_top_ipp_ind_otg_usb_oc;
  415. u32 usb_top_ipp_ind_uh2_usb_oc;
  416. };