imx8mq-tqma8mq-mba8mx.dts 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. // SPDX-License-Identifier: (GPL-2.0-or-later OR MIT)
  2. /*
  3. * Copyright 2019-2021 TQ-Systems GmbH
  4. */
  5. /dts-v1/;
  6. #include "imx8mq-tqma8mq.dtsi"
  7. #include "mba8mx.dtsi"
  8. / {
  9. model = "TQ-Systems GmbH i.MX8MQ TQMa8MQ on MBa8Mx";
  10. compatible = "tq,imx8mq-tqma8mq-mba8mx", "tq,imx8mq-tqma8mq", "fsl,imx8mq";
  11. aliases {
  12. eeprom0 = &eeprom3;
  13. mmc0 = &usdhc1;
  14. mmc1 = &usdhc2;
  15. rtc0 = &pcf85063;
  16. rtc1 = &snvs_rtc;
  17. };
  18. extcon_usbotg: extcon-usbotg0 {
  19. compatible = "linux,extcon-usb-gpio";
  20. pinctrl-names = "default";
  21. pinctrl-0 = <&pinctrl_usbcon0>;
  22. id-gpio = <&gpio1 10 GPIO_ACTIVE_HIGH>;
  23. };
  24. pcie0_refclk: pcie0-refclk {
  25. compatible = "fixed-clock";
  26. #clock-cells = <0>;
  27. clock-frequency = <100000000>;
  28. };
  29. pcie1_refclk: pcie1-refclk {
  30. compatible = "fixed-clock";
  31. #clock-cells = <0>;
  32. clock-frequency = <100000000>;
  33. };
  34. reg_otg_vbus: regulator-otg-vbus {
  35. compatible = "regulator-fixed";
  36. pinctrl-names = "default";
  37. pinctrl-0 = <&pinctrl_regotgvbus>;
  38. regulator-name = "MBA8MQ_OTG_VBUS";
  39. regulator-min-microvolt = <5000000>;
  40. regulator-max-microvolt = <5000000>;
  41. gpio = <&gpio1 12 GPIO_ACTIVE_HIGH>;
  42. enable-active-high;
  43. };
  44. reg_usdhc2_vmmc: regulator-vmmc {
  45. compatible = "regulator-fixed";
  46. regulator-name = "VSD_3V3";
  47. regulator-min-microvolt = <3300000>;
  48. regulator-max-microvolt = <3300000>;
  49. gpio = <&gpio2 19 GPIO_ACTIVE_HIGH>;
  50. enable-active-high;
  51. };
  52. };
  53. &btn2 {
  54. gpios = <&gpio3 17 GPIO_ACTIVE_LOW>;
  55. };
  56. &gpio_leds {
  57. led3 {
  58. label = "led3";
  59. gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
  60. };
  61. };
  62. &i2c1 {
  63. expander2: gpio@25 {
  64. compatible = "nxp,pca9555";
  65. reg = <0x25>;
  66. gpio-controller;
  67. #gpio-cells = <2>;
  68. vcc-supply = <&reg_vcc_3v3>;
  69. pinctrl-names = "default";
  70. pinctrl-0 = <&pinctrl_expander>;
  71. interrupt-parent = <&gpio1>;
  72. interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
  73. interrupt-controller;
  74. #interrupt-cells = <2>;
  75. mpcie-rst-hog {
  76. gpio-hog;
  77. gpios = <13 0>;
  78. output-high;
  79. line-name = "MPCIE_RST#";
  80. };
  81. };
  82. };
  83. &irqsteer {
  84. status = "okay";
  85. };
  86. &led2 {
  87. gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
  88. };
  89. &pcie0 {
  90. reset-gpio = <&expander0 14 GPIO_ACTIVE_LOW>;
  91. clocks = <&clk IMX8MQ_CLK_PCIE1_ROOT>,
  92. <&clk IMX8MQ_CLK_PCIE1_AUX>,
  93. <&clk IMX8MQ_CLK_PCIE1_PHY>,
  94. <&pcie0_refclk>;
  95. clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
  96. epdev_on-supply = <&reg_vcc_3v3>;
  97. hard-wired = <1>;
  98. status = "okay";
  99. };
  100. /*
  101. * miniPCIe, also usable for cards with USB. Therefore configure the reset as
  102. * static gpio hog.
  103. */
  104. &pcie1 {
  105. clocks = <&clk IMX8MQ_CLK_PCIE2_ROOT>,
  106. <&clk IMX8MQ_CLK_PCIE2_AUX>,
  107. <&clk IMX8MQ_CLK_PCIE2_PHY>,
  108. <&pcie1_refclk>;
  109. clock-names = "pcie", "pcie_aux", "pcie_phy", "pcie_bus";
  110. epdev_on-supply = <&reg_vcc_3v3>;
  111. hard-wired = <1>;
  112. status = "okay";
  113. };
  114. &sai3 {
  115. assigned-clocks = <&clk IMX8MQ_CLK_SAI3>;
  116. assigned-clock-parents = <&clk IMX8MQ_AUDIO_PLL1_OUT>;
  117. clock-names = "bus", "mclk0", "mclk1", "mclk2", "mclk3", "pll8k", "pll11k";
  118. clocks = <&clk IMX8MQ_CLK_SAI3_IPG>, <&clk IMX8MQ_CLK_DUMMY>,
  119. <&clk IMX8MQ_CLK_SAI3_ROOT>, <&clk IMX8MQ_CLK_DUMMY>,
  120. <&clk IMX8MQ_CLK_DUMMY>, <&clk IMX8MQ_AUDIO_PLL1_OUT>,
  121. <&clk IMX8MQ_AUDIO_PLL2_OUT>;
  122. };
  123. &tlv320aic3x04 {
  124. clock-names = "mclk";
  125. clocks = <&clk IMX8MQ_CLK_SAI3_ROOT>;
  126. };
  127. &uart1 {
  128. assigned-clocks = <&clk IMX8MQ_CLK_UART1>;
  129. assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>;
  130. };
  131. &uart2 {
  132. assigned-clocks = <&clk IMX8MQ_CLK_UART2>;
  133. assigned-clock-parents = <&clk IMX8MQ_SYS1_PLL_80M>;
  134. };
  135. /* console */
  136. &uart3 {
  137. assigned-clocks = <&clk IMX8MQ_CLK_UART3>;
  138. assigned-clock-parents = <&clk IMX8MQ_CLK_25M>;
  139. };
  140. &usb3_phy0 {
  141. vbus-supply = <&reg_otg_vbus>;
  142. status = "okay";
  143. };
  144. &usb_dwc3_0 {
  145. /* we implement dual role but not full featured OTG */
  146. extcon = <&extcon_usbotg>;
  147. hnp-disable;
  148. srp-disable;
  149. adp-disable;
  150. /* OC not supported due to non matching active polarity */
  151. disable-over-current;
  152. dr_mode = "otg";
  153. status = "okay";
  154. };
  155. &usb3_phy1 {
  156. status = "okay";
  157. };
  158. &usb_dwc3_1 {
  159. status = "okay";
  160. dr_mode = "host";
  161. };
  162. &wdog1 {
  163. pinctrl-names = "default";
  164. pinctrl-0 = <&pinctrl_wdog>;
  165. fsl,ext-reset-output;
  166. status = "okay";
  167. };
  168. &iomuxc {
  169. pinctrl_ecspi1: ecspi1grp {
  170. fsl,pins = <MX8MQ_IOMUXC_ECSPI1_SCLK_ECSPI1_SCLK 0x0000004e>,
  171. <MX8MQ_IOMUXC_ECSPI1_MOSI_ECSPI1_MOSI 0x0000004e>,
  172. <MX8MQ_IOMUXC_ECSPI1_MISO_ECSPI1_MISO 0x0000004e>,
  173. <MX8MQ_IOMUXC_ECSPI1_SS0_GPIO5_IO9 0x0000004e>;
  174. };
  175. pinctrl_ecspi2: ecspi2grp {
  176. fsl,pins = <MX8MQ_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x0000004e>,
  177. <MX8MQ_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x0000004e>,
  178. <MX8MQ_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x0000004e>,
  179. <MX8MQ_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x0000004e>;
  180. };
  181. pinctrl_expander: expandergrp {
  182. fsl,pins = <MX8MQ_IOMUXC_GPIO1_IO09_GPIO1_IO9 0xd6>;
  183. };
  184. pinctrl_fec1: fec1grp {
  185. fsl,pins = <MX8MQ_IOMUXC_ENET_MDC_ENET1_MDC 0x3>,
  186. <MX8MQ_IOMUXC_ENET_MDIO_ENET1_MDIO 0x23>,
  187. <MX8MQ_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f>,
  188. <MX8MQ_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f>,
  189. <MX8MQ_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f>,
  190. <MX8MQ_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f>,
  191. <MX8MQ_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91>,
  192. <MX8MQ_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91>,
  193. <MX8MQ_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91>,
  194. <MX8MQ_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91>,
  195. <MX8MQ_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f>,
  196. <MX8MQ_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91>,
  197. <MX8MQ_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91>,
  198. <MX8MQ_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f>;
  199. };
  200. pinctrl_gpiobutton: gpiobuttongrp {
  201. fsl,pins = <MX8MQ_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x41>,
  202. <MX8MQ_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x41>,
  203. <MX8MQ_IOMUXC_NAND_WE_B_GPIO3_IO17 0x41>;
  204. };
  205. pinctrl_gpioled: gpioledgrp {
  206. fsl,pins = <MX8MQ_IOMUXC_GPIO1_IO00_GPIO1_IO0 0x41>,
  207. <MX8MQ_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x41>,
  208. <MX8MQ_IOMUXC_NAND_READY_B_GPIO3_IO16 0x41>;
  209. };
  210. pinctrl_i2c2: i2c2grp {
  211. fsl,pins = <MX8MQ_IOMUXC_I2C2_SCL_I2C2_SCL 0x40000067>,
  212. <MX8MQ_IOMUXC_I2C2_SDA_I2C2_SDA 0x40000067>;
  213. };
  214. pinctrl_i2c2_gpio: i2c2gpiogrp {
  215. fsl,pins = <MX8MQ_IOMUXC_I2C2_SCL_GPIO5_IO16 0x40000067>,
  216. <MX8MQ_IOMUXC_I2C2_SDA_GPIO5_IO17 0x40000067>;
  217. };
  218. pinctrl_i2c3: i2c3grp {
  219. fsl,pins = <MX8MQ_IOMUXC_I2C3_SCL_I2C3_SCL 0x40000067>,
  220. <MX8MQ_IOMUXC_I2C3_SDA_I2C3_SDA 0x40000067>;
  221. };
  222. pinctrl_i2c3_gpio: i2c3gpiogrp {
  223. fsl,pins = <MX8MQ_IOMUXC_I2C3_SCL_GPIO5_IO18 0x40000067>,
  224. <MX8MQ_IOMUXC_I2C3_SDA_GPIO5_IO19 0x40000067>;
  225. };
  226. pinctrl_pwm3: pwm3grp {
  227. fsl,pins = <MX8MQ_IOMUXC_GPIO1_IO14_PWM3_OUT 0x16>;
  228. };
  229. pinctrl_pwm4: pwm4grp {
  230. fsl,pins = <MX8MQ_IOMUXC_GPIO1_IO15_PWM4_OUT 0x16>;
  231. };
  232. pinctrl_regotgvbus: reggotgvbusgrp {
  233. /* USB1 OTG PWR as GPIO */
  234. fsl,pins = <MX8MQ_IOMUXC_GPIO1_IO12_GPIO1_IO12 0x06>;
  235. };
  236. pinctrl_reg_usdhc2_vmmc: regusdhc2vmmcgrp {
  237. fsl,pins = <MX8MQ_IOMUXC_SD2_RESET_B_GPIO2_IO19 0xc1>;
  238. };
  239. pinctrl_sai3: sai3grp {
  240. fsl,pins = <MX8MQ_IOMUXC_SAI3_MCLK_SAI3_MCLK 0xd6>,
  241. <MX8MQ_IOMUXC_SAI3_RXC_SAI3_RX_BCLK 0xd6>,
  242. <MX8MQ_IOMUXC_SAI3_RXFS_SAI3_RX_SYNC 0xd6>,
  243. <MX8MQ_IOMUXC_SAI3_RXD_SAI3_RX_DATA0 0xd6>,
  244. <MX8MQ_IOMUXC_SAI3_TXFS_SAI3_TX_SYNC 0xd6>,
  245. <MX8MQ_IOMUXC_SAI3_TXD_SAI3_TX_DATA0 0xd6>,
  246. <MX8MQ_IOMUXC_SAI3_TXC_SAI3_TX_BCLK 0xd6>;
  247. };
  248. pinctrl_uart1: uart1grp {
  249. fsl,pins = <MX8MQ_IOMUXC_UART1_RXD_UART1_DCE_RX 0x79>,
  250. <MX8MQ_IOMUXC_UART1_TXD_UART1_DCE_TX 0x79>;
  251. };
  252. pinctrl_uart2: uart2grp {
  253. fsl,pins = <MX8MQ_IOMUXC_UART2_RXD_UART2_DCE_RX 0x79>,
  254. <MX8MQ_IOMUXC_UART2_TXD_UART2_DCE_TX 0x79>;
  255. };
  256. pinctrl_uart3: uart3grp {
  257. fsl,pins = <MX8MQ_IOMUXC_UART3_RXD_UART3_DCE_RX 0x79>,
  258. <MX8MQ_IOMUXC_UART3_TXD_UART3_DCE_TX 0x79>;
  259. };
  260. pinctrl_uart4: uart4grp {
  261. fsl,pins = <MX8MQ_IOMUXC_UART4_RXD_UART4_DCE_RX 0x79>,
  262. <MX8MQ_IOMUXC_UART4_TXD_UART4_DCE_TX 0x79>;
  263. };
  264. pinctrl_usbcon0: usb0congrp {
  265. /* ID: floating / high: device, low: host -> use PU */
  266. fsl,pins = <MX8MQ_IOMUXC_GPIO1_IO10_GPIO1_IO10 0xe6>;
  267. };
  268. pinctrl_usdhc2: usdhc2grp {
  269. fsl,pins = <MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x83>,
  270. <MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc3>,
  271. <MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc3>,
  272. <MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc3>,
  273. <MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc3>,
  274. <MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc3>,
  275. <MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1>;
  276. };
  277. pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
  278. fsl,pins = <MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x85>,
  279. <MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc5>,
  280. <MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc5>,
  281. <MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc5>,
  282. <MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc5>,
  283. <MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc5>,
  284. <MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1>;
  285. };
  286. pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
  287. fsl,pins = <MX8MQ_IOMUXC_SD2_CLK_USDHC2_CLK 0x9f>,
  288. <MX8MQ_IOMUXC_SD2_CMD_USDHC2_CMD 0xc7>,
  289. <MX8MQ_IOMUXC_SD2_DATA0_USDHC2_DATA0 0xc7>,
  290. <MX8MQ_IOMUXC_SD2_DATA1_USDHC2_DATA1 0xc7>,
  291. <MX8MQ_IOMUXC_SD2_DATA2_USDHC2_DATA2 0xc7>,
  292. <MX8MQ_IOMUXC_SD2_DATA3_USDHC2_DATA3 0xc7>,
  293. <MX8MQ_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0xc1>;
  294. };
  295. pinctrl_usdhc2_gpio: usdhc2-gpiogrp {
  296. fsl,pins = <MX8MQ_IOMUXC_SD2_CD_B_GPIO2_IO12 0x41>;
  297. };
  298. };