mba6ulx.dtsi 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569
  1. // SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
  2. /*
  3. * Copyright 2018-2022 TQ-Systems GmbH
  4. * Author: Markus Niebel <[email protected]>
  5. */
  6. / {
  7. model = "TQ-Systems MBA6ULx Baseboard";
  8. aliases {
  9. mmc0 = &usdhc2;
  10. mmc1 = &usdhc1;
  11. rtc0 = &rtc0;
  12. rtc1 = &snvs_rtc;
  13. };
  14. chosen {
  15. stdout-path = &uart1;
  16. };
  17. backlight: backlight {
  18. compatible = "pwm-backlight";
  19. power-supply = <&reg_mba6ul_3v3>;
  20. enable-gpios = <&expander_out0 4 GPIO_ACTIVE_HIGH>;
  21. status = "disabled";
  22. };
  23. beeper: beeper {
  24. compatible = "gpio-beeper";
  25. gpios = <&expander_out1 6 GPIO_ACTIVE_HIGH>;
  26. };
  27. gpio_buttons: gpio-keys {
  28. compatible = "gpio-keys";
  29. pinctrl-names = "default";
  30. pinctrl-0 = <&pinctrl_buttons>;
  31. button1 {
  32. label = "s14";
  33. linux,code = <KEY_1>;
  34. gpios = <&expander_in0 0 GPIO_ACTIVE_LOW>;
  35. };
  36. button2 {
  37. label = "s6";
  38. linux,code = <KEY_2>;
  39. gpios = <&expander_in0 1 GPIO_ACTIVE_LOW>;
  40. };
  41. button3 {
  42. label = "s7";
  43. linux,code = <KEY_3>;
  44. gpios = <&expander_in0 2 GPIO_ACTIVE_LOW>;
  45. };
  46. power-button {
  47. label = "POWER";
  48. linux,code = <KEY_POWER>;
  49. gpios = <&gpio1 3 GPIO_ACTIVE_LOW>;
  50. gpio-key,wakeup;
  51. };
  52. };
  53. gpio-leds {
  54. compatible = "gpio-leds";
  55. status = "okay";
  56. led1 {
  57. label = "led1";
  58. gpios = <&expander_out1 4 GPIO_ACTIVE_HIGH>;
  59. linux,default-trigger = "default-on";
  60. };
  61. led2 {
  62. label = "led2";
  63. gpios = <&expander_out1 5 GPIO_ACTIVE_HIGH>;
  64. linux,default-trigger = "heartbeat";
  65. };
  66. };
  67. reg_lcd_pwr: regulator-lcd-pwr {
  68. compatible = "regulator-fixed";
  69. regulator-name = "lcd-pwr";
  70. gpio = <&expander_out0 1 GPIO_ACTIVE_HIGH>;
  71. enable-active-high;
  72. status = "disabled";
  73. };
  74. reg_mba6ul_3v3: regulator-mba6ul-3v3 {
  75. compatible = "regulator-fixed";
  76. regulator-name = "supply-mba6ul-3v3";
  77. regulator-min-microvolt = <3300000>;
  78. regulator-max-microvolt = <3300000>;
  79. regulator-always-on;
  80. };
  81. reg_mba6ul_5v0: regulator-mba6ul-5v0 {
  82. compatible = "regulator-fixed";
  83. regulator-name = "supply-mba6ul-5v0";
  84. regulator-min-microvolt = <5000000>;
  85. regulator-max-microvolt = <5000000>;
  86. regulator-always-on;
  87. };
  88. reg_mpcie: regulator-mpcie-3v3 {
  89. compatible = "regulator-fixed";
  90. regulator-name = "mpcie-3v3";
  91. regulator-min-microvolt = <3300000>;
  92. regulator-max-microvolt = <3300000>;
  93. gpio = <&expander_out0 2 GPIO_ACTIVE_HIGH>;
  94. enable-active-high;
  95. regulator-always-on;
  96. startup-delay-us = <500000>;
  97. vin-supply = <&reg_mba6ul_3v3>;
  98. };
  99. reg_otg2vbus_5v0: regulator-otg2-vbus-5v0 {
  100. compatible = "regulator-fixed";
  101. gpio = <&expander_out1 0 GPIO_ACTIVE_HIGH>;
  102. enable-active-high;
  103. regulator-name = "otg2-vbus-supply-5v0";
  104. regulator-min-microvolt = <5000000>;
  105. regulator-max-microvolt = <5000000>;
  106. vin-supply = <&reg_mpcie>;
  107. };
  108. reserved-memory {
  109. #address-cells = <1>;
  110. #size-cells = <1>;
  111. ranges;
  112. linux,cma {
  113. compatible = "shared-dma-pool";
  114. reusable;
  115. size = <0x6000000>;
  116. linux,cma-default;
  117. };
  118. };
  119. sound {
  120. compatible = "fsl,imx-audio-tlv320aic32x4";
  121. model = "imx-audio-tlv320aic32x4";
  122. ssi-controller = <&sai1>;
  123. audio-codec = <&tlv320aic32x4>;
  124. audio-asrc = <&asrc>;
  125. };
  126. };
  127. &can1 {
  128. pinctrl-names = "default";
  129. pinctrl-0 = <&pinctrl_flexcan1>;
  130. xceiver-supply = <&reg_mba6ul_3v3>;
  131. status = "okay";
  132. };
  133. &can2 {
  134. pinctrl-names = "default";
  135. pinctrl-0 = <&pinctrl_flexcan2>;
  136. xceiver-supply = <&reg_mba6ul_3v3>;
  137. status = "okay";
  138. };
  139. &clks {
  140. assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
  141. assigned-clock-rates = <768000000>;
  142. };
  143. &ecspi2 {
  144. pinctrl-names = "default";
  145. pinctrl-0 = <&pinctrl_ecspi2>;
  146. num-cs = <1>;
  147. status = "okay";
  148. };
  149. &fec1 {
  150. pinctrl-names = "default";
  151. pinctrl-0 = <&pinctrl_enet1>;
  152. phy-mode = "rmii";
  153. phy-handle = <&ethphy0>;
  154. phy-supply = <&reg_mba6ul_3v3>;
  155. phy-reset-gpios = <&expander_out1 1 GPIO_ACTIVE_LOW>;
  156. phy-reset-duration = <25>;
  157. phy-reset-post-delay = <1>;
  158. status = "okay";
  159. };
  160. &fec2 {
  161. pinctrl-names = "default";
  162. pinctrl-0 = <&pinctrl_enet2>, <&pinctrl_enet2_mdc>;
  163. phy-mode = "rmii";
  164. phy-handle = <&ethphy1>;
  165. phy-supply = <&reg_mba6ul_3v3>;
  166. phy-reset-gpios = <&expander_out1 2 GPIO_ACTIVE_LOW>;
  167. phy-reset-duration = <25>;
  168. phy-reset-post-delay = <1>;
  169. status = "okay";
  170. mdio {
  171. #address-cells = <1>;
  172. #size-cells = <0>;
  173. ethphy0: ethernet-phy@0 {
  174. compatible = "ethernet-phy-ieee802.3-c22";
  175. clocks = <&clks IMX6UL_CLK_ENET_REF>;
  176. reg = <0>;
  177. max-speed = <100>;
  178. };
  179. ethphy1: ethernet-phy@1 {
  180. compatible = "ethernet-phy-ieee802.3-c22";
  181. clocks = <&clks IMX6UL_CLK_ENET2_REF_125M>;
  182. reg = <1>;
  183. max-speed = <100>;
  184. };
  185. };
  186. };
  187. &i2c4 {
  188. tlv320aic32x4: audio-codec@18 {
  189. compatible = "ti,tlv320aic32x4";
  190. reg = <0x18>;
  191. clocks = <&clks IMX6UL_CLK_SAI1>;
  192. clock-names = "mclk";
  193. ldoin-supply = <&reg_mba6ul_3v3>;
  194. iov-supply = <&reg_mba6ul_3v3>;
  195. };
  196. jc42: temperature-sensor@19 {
  197. compatible = "nxp,se97", "jedec,jc-42.4-temp";
  198. reg = <0x19>;
  199. };
  200. expander_out0: gpio-expander@20 {
  201. compatible = "nxp,pca9554";
  202. reg = <0x20>;
  203. gpio-controller;
  204. #gpio-cells = <2>;
  205. };
  206. expander_in0: gpio-expander@21 {
  207. compatible = "nxp,pca9554";
  208. reg = <0x21>;
  209. pinctrl-names = "default";
  210. pinctrl-0 = <&pinctrl_expander_in0>;
  211. interrupt-parent = <&gpio4>;
  212. interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
  213. interrupt-controller;
  214. #interrupt-cells = <2>;
  215. gpio-controller;
  216. #gpio-cells = <2>;
  217. enet1_int-hog {
  218. gpio-hog;
  219. gpios = <6 0>;
  220. input;
  221. };
  222. enet2_int-hog {
  223. gpio-hog;
  224. gpios = <7 0>;
  225. input;
  226. };
  227. };
  228. expander_out1: gpio-expander@22 {
  229. compatible = "nxp,pca9554";
  230. reg = <0x22>;
  231. gpio-controller;
  232. #gpio-cells = <2>;
  233. };
  234. analog_touch: touchscreen@41 {
  235. compatible = "st,stmpe811";
  236. reg = <0x41>;
  237. interrupts = <21 IRQ_TYPE_EDGE_FALLING>;
  238. interrupt-parent = <&gpio4>;
  239. interrupt-controller;
  240. status = "disabled";
  241. stmpe_touchscreen {
  242. compatible = "st,stmpe-ts";
  243. st,adc-freq = <1>; /* 3.25 MHz ADC clock speed */
  244. st,ave-ctrl = <3>; /* 8 sample average control */
  245. st,fraction-z = <7>; /* 7 length fractional part in z */
  246. /*
  247. * 50 mA typical 80 mA max touchscreen drivers
  248. * current limit value
  249. */
  250. st,i-drive = <1>;
  251. st,mod-12b = <1>; /* 12-bit ADC */
  252. st,ref-sel = <0>; /* internal ADC reference */
  253. st,sample-time = <4>; /* ADC converstion time: 80 clocks */
  254. st,settling = <3>; /* 1 ms panel driver settling time */
  255. st,touch-det-delay = <5>; /* 5 ms touch detect interrupt delay */
  256. };
  257. };
  258. /* NXP SE97BTP with temperature sensor + eeprom */
  259. se97b: eeprom@51 {
  260. compatible = "nxp,se97b", "atmel,24c02";
  261. reg = <0x51>;
  262. pagesize = <16>;
  263. };
  264. };
  265. &pwm2 {
  266. pinctrl-names = "default";
  267. pinctrl-0 = <&pinctrl_pwm2>;
  268. status = "okay";
  269. };
  270. &sai1 {
  271. pinctrl-names = "default";
  272. pinctrl-0 = <&pinctrl_sai1>;
  273. assigned-clocks = <&clks IMX6UL_CLK_SAI1_SEL>,
  274. <&clks IMX6UL_CLK_SAI1>;
  275. assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
  276. assigned-clock-rates = <0>, <24000000>;
  277. fsl,sai-mclk-direction-output;
  278. status = "okay";
  279. };
  280. &uart1 {
  281. pinctrl-names = "default";
  282. pinctrl-0 = <&pinctrl_uart1>;
  283. status = "okay";
  284. };
  285. &uart3 {
  286. pinctrl-names = "default";
  287. pinctrl-0 = <&pinctrl_uart3>;
  288. status = "okay";
  289. };
  290. &uart6 {
  291. pinctrl-names = "default";
  292. pinctrl-0 = <&pinctrl_uart6>;
  293. /* for DTE mode, add below change */
  294. /* fsl,dte-mode; */
  295. /* pinctrl-0 = <&pinctrl_uart6dte>; */
  296. uart-has-rtscts;
  297. linux,rs485-enabled-at-boot-time;
  298. rs485-rts-active-low;
  299. rs485-rx-during-tx;
  300. status = "okay";
  301. };
  302. /* otg-port */
  303. &usbotg1 {
  304. pinctrl-names = "default";
  305. pinctrl-0 = <&pinctrl_usb_otg1>;
  306. power-active-high;
  307. over-current-active-low;
  308. /* we implement only dual role but not a fully featured OTG */
  309. hnp-disable;
  310. srp-disable;
  311. adp-disable;
  312. dr_mode = "otg";
  313. status = "okay";
  314. };
  315. /* 7-port usb hub */
  316. /* id, pwr, oc pins not connected */
  317. &usbotg2 {
  318. disable-over-current;
  319. vbus-supply = <&reg_otg2vbus_5v0>;
  320. dr_mode = "host";
  321. status = "okay";
  322. };
  323. &usdhc1 {
  324. pinctrl-names = "default";
  325. pinctrl-0 = <&pinctrl_usdhc1>;
  326. cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
  327. wp-gpios = <&gpio1 18 GPIO_ACTIVE_HIGH>;
  328. bus-width = <4>;
  329. vmmc-supply = <&reg_mba6ul_3v3>;
  330. vqmmc-supply = <&reg_vccsd>;
  331. no-1-8-v;
  332. no-mmc;
  333. no-sdio;
  334. status = "okay";
  335. };
  336. &wdog1 {
  337. pinctrl-names = "default";
  338. pinctrl-0 = <&pinctrl_wdog1>;
  339. fsl,ext-reset-output;
  340. status = "okay";
  341. };
  342. &iomuxc {
  343. pinctrl_buttons: buttonsgrp {
  344. fsl,pins = <
  345. MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x100b0
  346. >;
  347. };
  348. pinctrl_ecspi2: ecspi2grp {
  349. fsl,pins = <
  350. MX6UL_PAD_UART4_TX_DATA__ECSPI2_SCLK 0x1b020
  351. MX6UL_PAD_UART5_RX_DATA__ECSPI2_MISO 0x1b020
  352. MX6UL_PAD_UART5_TX_DATA__ECSPI2_MOSI 0x1b020
  353. MX6UL_PAD_UART4_RX_DATA__ECSPI2_SS0 0x1b020
  354. >;
  355. };
  356. pinctrl_enet1: enet1grp {
  357. fsl,pins = <
  358. MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN 0x1b0b0
  359. MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0
  360. MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
  361. MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
  362. MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
  363. MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
  364. MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0
  365. MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b0a8
  366. >;
  367. };
  368. pinctrl_enet2: enet2grp {
  369. fsl,pins = <
  370. MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN 0x1b0b0
  371. MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER 0x1b0b0
  372. MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
  373. MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
  374. MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0a0
  375. MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0a0
  376. MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN 0x1b0b0
  377. MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x4001b0a8
  378. >;
  379. };
  380. pinctrl_enet2_mdc: enet2mdcgrp {
  381. fsl,pins = <
  382. /* mdio */
  383. MX6UL_PAD_GPIO1_IO07__ENET2_MDC 0x1b0b0
  384. MX6UL_PAD_GPIO1_IO06__ENET2_MDIO 0x1b0b0
  385. >;
  386. };
  387. pinctrl_expander_in0: expanderin0grp {
  388. fsl,pins = <
  389. MX6UL_PAD_CSI_DATA02__GPIO4_IO23 0x1b0b1
  390. >;
  391. };
  392. pinctrl_flexcan1: flexcan1grp {
  393. fsl,pins = <
  394. MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX 0x1b020
  395. MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX 0x1b020
  396. >;
  397. };
  398. pinctrl_flexcan2: flexcan2grp {
  399. fsl,pins = <
  400. MX6UL_PAD_UART2_RTS_B__FLEXCAN2_RX 0x1b020
  401. MX6UL_PAD_UART2_CTS_B__FLEXCAN2_TX 0x1b020
  402. >;
  403. };
  404. pinctrl_pwm2: pwm2grp {
  405. fsl,pins = <
  406. /* 100 k PD, DSE 120 OHM, SPPEED LO */
  407. MX6UL_PAD_GPIO1_IO09__PWM2_OUT 0x00003050
  408. >;
  409. };
  410. pinctrl_sai1: sai1grp {
  411. fsl,pins = <
  412. MX6UL_PAD_CSI_DATA05__SAI1_TX_BCLK 0x1b0b1
  413. MX6UL_PAD_CSI_DATA04__SAI1_TX_SYNC 0x1b0b1
  414. MX6UL_PAD_CSI_DATA07__SAI1_TX_DATA 0x1f0b8
  415. MX6UL_PAD_CSI_DATA06__SAI1_RX_DATA 0x110b0
  416. MX6UL_PAD_CSI_DATA01__SAI1_MCLK 0x1b0b1
  417. >;
  418. };
  419. pinctrl_uart1: uart1grp {
  420. fsl,pins = <
  421. MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX 0x1b0b1
  422. MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1
  423. >;
  424. };
  425. pinctrl_uart3: uart3grp {
  426. fsl,pins = <
  427. MX6UL_PAD_UART3_TX_DATA__UART3_DCE_TX 0x1b0b1
  428. MX6UL_PAD_UART3_RX_DATA__UART3_DCE_RX 0x1b0b1
  429. >;
  430. };
  431. pinctrl_uart6: uart6grp {
  432. fsl,pins = <
  433. MX6UL_PAD_CSI_MCLK__UART6_DCE_TX 0x1b0b1
  434. MX6UL_PAD_CSI_PIXCLK__UART6_DCE_RX 0x1b0b1
  435. MX6UL_PAD_CSI_VSYNC__UART6_DCE_RTS 0x1b0b1
  436. MX6UL_PAD_CSI_HSYNC__UART6_DCE_CTS 0x1b0b1
  437. >;
  438. };
  439. pinctrl_uart6dte: uart6dte {
  440. fsl,pins = <
  441. MX6UL_PAD_CSI_PIXCLK__UART6_DTE_TX 0x1b0b1
  442. MX6UL_PAD_CSI_MCLK__UART6_DTE_RX 0x1b0b1
  443. MX6UL_PAD_CSI_HSYNC__UART6_DTE_RTS 0x1b0b1
  444. MX6UL_PAD_CSI_VSYNC__UART6_DTE_CTS 0x1b0b1
  445. >;
  446. };
  447. pinctrl_usb_otg1: usbotg1grp {
  448. fsl,pins = <
  449. MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID 0x00017059
  450. MX6UL_PAD_GPIO1_IO01__USB_OTG1_OC 0x0001b0b0
  451. MX6UL_PAD_GPIO1_IO04__USB_OTG1_PWR 0x0001b099
  452. >;
  453. };
  454. pinctrl_usdhc1: usdhc1grp {
  455. fsl,pins = <
  456. MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x00017069
  457. MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x00017059
  458. MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x00017059
  459. MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x00017059
  460. MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x00017059
  461. MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x00017059
  462. /* WP */
  463. MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x0001b099
  464. /* CD */
  465. MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x0001b099
  466. >;
  467. };
  468. pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
  469. fsl,pins = <
  470. MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x00017069
  471. MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x000170b9
  472. MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x000170b9
  473. MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x000170b9
  474. MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x000170b9
  475. MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x000170b9
  476. /* WP */
  477. MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x0001b099
  478. /* CD */
  479. MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x0001b099
  480. >;
  481. };
  482. pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
  483. fsl,pins = <
  484. MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x00017069
  485. MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x000170f9
  486. MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x000170f9
  487. MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x000170f9
  488. MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x000170f9
  489. MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x000170f9
  490. /* WP */
  491. MX6UL_PAD_UART1_CTS_B__GPIO1_IO18 0x0001b099
  492. /* CD */
  493. MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x0001b099
  494. >;
  495. };
  496. pinctrl_wdog1: wdog1grp {
  497. fsl,pins = <
  498. MX6UL_PAD_GPIO1_IO08__WDOG1_WDOG_B 0x0001b099
  499. >;
  500. };
  501. };