imx8mm-kontron-bl-osm-s.dts 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376
  1. // SPDX-License-Identifier: GPL-2.0+ OR MIT
  2. /*
  3. * Copyright (C) 2022 Kontron Electronics GmbH
  4. */
  5. /dts-v1/;
  6. #include "imx8mm-kontron-osm-s.dtsi"
  7. / {
  8. model = "Kontron BL i.MX8MM OSM-S (N802X S)";
  9. compatible = "kontron,imx8mm-bl-osm-s", "kontron,imx8mm-osm-s", "fsl,imx8mm";
  10. aliases {
  11. ethernet1 = &usbnet;
  12. };
  13. /* fixed crystal dedicated to mcp2542fd */
  14. osc_can: clock-osc-can {
  15. compatible = "fixed-clock";
  16. #clock-cells = <0>;
  17. clock-frequency = <40000000>;
  18. clock-output-names = "osc-can";
  19. };
  20. leds {
  21. compatible = "gpio-leds";
  22. pinctrl-names = "default";
  23. pinctrl-0 = <&pinctrl_gpio_led>;
  24. led1 {
  25. label = "led1";
  26. gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;
  27. linux,default-trigger = "heartbeat";
  28. };
  29. led2 {
  30. label = "led2";
  31. gpios = <&gpio1 13 GPIO_ACTIVE_LOW>;
  32. };
  33. led3 {
  34. label = "led3";
  35. gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
  36. };
  37. };
  38. pwm-beeper {
  39. compatible = "pwm-beeper";
  40. pwms = <&pwm2 0 5000 0>;
  41. };
  42. reg_rst_eth2: regulator-rst-eth2 {
  43. compatible = "regulator-fixed";
  44. pinctrl-names = "default";
  45. pinctrl-0 = <&pinctrl_usb_eth2>;
  46. gpio = <&gpio3 2 GPIO_ACTIVE_HIGH>;
  47. enable-active-high;
  48. regulator-always-on;
  49. regulator-name = "rst-usb-eth2";
  50. };
  51. reg_usb1_vbus: regulator-usb1-vbus {
  52. compatible = "regulator-fixed";
  53. pinctrl-names = "default";
  54. pinctrl-0 = <&pinctrl_reg_usb1_vbus>;
  55. gpio = <&gpio3 25 GPIO_ACTIVE_LOW>;
  56. regulator-min-microvolt = <5000000>;
  57. regulator-max-microvolt = <5000000>;
  58. regulator-name = "usb1-vbus";
  59. };
  60. reg_vdd_5v: regulator-5v {
  61. compatible = "regulator-fixed";
  62. regulator-always-on;
  63. regulator-min-microvolt = <5000000>;
  64. regulator-max-microvolt = <5000000>;
  65. regulator-name = "vdd-5v";
  66. };
  67. };
  68. &ecspi2 {
  69. pinctrl-names = "default";
  70. pinctrl-0 = <&pinctrl_ecspi2>;
  71. cs-gpios = <&gpio5 13 GPIO_ACTIVE_LOW>;
  72. status = "okay";
  73. can@0 {
  74. compatible = "microchip,mcp251xfd";
  75. reg = <0>;
  76. pinctrl-names = "default";
  77. pinctrl-0 = <&pinctrl_can>;
  78. clocks = <&osc_can>;
  79. interrupts-extended = <&gpio4 28 IRQ_TYPE_LEVEL_LOW>;
  80. /*
  81. * Limit the SPI clock to 15 MHz to prevent issues
  82. * with corrupted data due to chip errata.
  83. */
  84. spi-max-frequency = <15000000>;
  85. vdd-supply = <&reg_vdd_3v3>;
  86. xceiver-supply = <&reg_vdd_5v>;
  87. };
  88. };
  89. &ecspi3 {
  90. pinctrl-names = "default";
  91. pinctrl-0 = <&pinctrl_ecspi3>;
  92. cs-gpios = <&gpio5 25 GPIO_ACTIVE_LOW>;
  93. status = "okay";
  94. eeram@0 {
  95. compatible = "microchip,48l640";
  96. reg = <0>;
  97. spi-max-frequency = <20000000>;
  98. };
  99. };
  100. &fec1 {
  101. pinctrl-names = "default";
  102. pinctrl-0 = <&pinctrl_enet>;
  103. phy-connection-type = "rgmii-rxid";
  104. phy-handle = <&ethphy>;
  105. status = "okay";
  106. mdio {
  107. #address-cells = <1>;
  108. #size-cells = <0>;
  109. ethphy: ethernet-phy@0 {
  110. reg = <0>;
  111. reset-assert-us = <1>;
  112. reset-deassert-us = <15000>;
  113. reset-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>;
  114. };
  115. };
  116. };
  117. &gpio1 {
  118. pinctrl-names = "default";
  119. pinctrl-0 = <&pinctrl_gpio1>;
  120. gpio-line-names = "", "", "", "dio1-out", "", "", "dio1-in", "dio2-out",
  121. "dio2-in", "dio3-out", "dio3-in", "dio4-out", "", "", "", "",
  122. "", "", "", "", "", "", "", "",
  123. "", "", "", "", "", "", "", "";
  124. };
  125. &gpio5 {
  126. pinctrl-names = "default";
  127. pinctrl-0 = <&pinctrl_gpio5>;
  128. gpio-line-names = "", "", "dio4-in", "", "", "", "", "",
  129. "", "", "", "", "", "", "", "",
  130. "", "", "", "", "", "", "", "",
  131. "", "", "", "", "", "", "", "";
  132. };
  133. &i2c4 {
  134. clock-frequency = <100000>;
  135. pinctrl-names = "default";
  136. pinctrl-0 = <&pinctrl_i2c4>;
  137. status = "okay";
  138. };
  139. &pwm2 {
  140. pinctrl-names = "default";
  141. pinctrl-0 = <&pinctrl_pwm2>;
  142. status = "okay";
  143. };
  144. &uart1 {
  145. pinctrl-names = "default";
  146. pinctrl-0 = <&pinctrl_uart1>;
  147. uart-has-rtscts;
  148. status = "okay";
  149. };
  150. &uart2 {
  151. pinctrl-names = "default";
  152. pinctrl-0 = <&pinctrl_uart2>;
  153. linux,rs485-enabled-at-boot-time;
  154. uart-has-rtscts;
  155. status = "okay";
  156. };
  157. &usbotg1 {
  158. dr_mode = "otg";
  159. disable-over-current;
  160. vbus-supply = <&reg_usb1_vbus>;
  161. status = "okay";
  162. };
  163. &usbotg2 {
  164. dr_mode = "host";
  165. disable-over-current;
  166. #address-cells = <1>;
  167. #size-cells = <0>;
  168. status = "okay";
  169. usb1@1 {
  170. compatible = "usb424,9514";
  171. reg = <1>;
  172. #address-cells = <1>;
  173. #size-cells = <0>;
  174. usbnet: ethernet@1 {
  175. compatible = "usb424,ec00";
  176. reg = <1>;
  177. local-mac-address = [ 00 00 00 00 00 00 ];
  178. };
  179. };
  180. };
  181. &usdhc2 {
  182. pinctrl-names = "default", "state_100mhz", "state_200mhz";
  183. pinctrl-0 = <&pinctrl_usdhc2>;
  184. pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
  185. pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
  186. vmmc-supply = <&reg_vdd_3v3>;
  187. vqmmc-supply = <&reg_nvcc_sd>;
  188. cd-gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
  189. status = "okay";
  190. };
  191. &iomuxc {
  192. pinctrl_can: cangrp {
  193. fsl,pins = <
  194. MX8MM_IOMUXC_SAI3_RXFS_GPIO4_IO28 0x19
  195. >;
  196. };
  197. pinctrl_ecspi2: ecspi2grp {
  198. fsl,pins = <
  199. MX8MM_IOMUXC_ECSPI2_MISO_ECSPI2_MISO 0x82
  200. MX8MM_IOMUXC_ECSPI2_MOSI_ECSPI2_MOSI 0x82
  201. MX8MM_IOMUXC_ECSPI2_SCLK_ECSPI2_SCLK 0x82
  202. MX8MM_IOMUXC_ECSPI2_SS0_GPIO5_IO13 0x19
  203. >;
  204. };
  205. pinctrl_ecspi3: ecspi3grp {
  206. fsl,pins = <
  207. MX8MM_IOMUXC_UART2_RXD_ECSPI3_MISO 0x82
  208. MX8MM_IOMUXC_UART1_TXD_ECSPI3_MOSI 0x82
  209. MX8MM_IOMUXC_UART1_RXD_ECSPI3_SCLK 0x82
  210. MX8MM_IOMUXC_UART2_TXD_GPIO5_IO25 0x19
  211. >;
  212. };
  213. pinctrl_enet: enetgrp {
  214. fsl,pins = <
  215. MX8MM_IOMUXC_ENET_MDC_ENET1_MDC 0x3
  216. MX8MM_IOMUXC_ENET_MDIO_ENET1_MDIO 0x3
  217. MX8MM_IOMUXC_ENET_TD3_ENET1_RGMII_TD3 0x1f
  218. MX8MM_IOMUXC_ENET_TD2_ENET1_RGMII_TD2 0x1f
  219. MX8MM_IOMUXC_ENET_TD1_ENET1_RGMII_TD1 0x1f
  220. MX8MM_IOMUXC_ENET_TD0_ENET1_RGMII_TD0 0x1f
  221. MX8MM_IOMUXC_ENET_RD3_ENET1_RGMII_RD3 0x91
  222. MX8MM_IOMUXC_ENET_RD2_ENET1_RGMII_RD2 0x91
  223. MX8MM_IOMUXC_ENET_RD1_ENET1_RGMII_RD1 0x91
  224. MX8MM_IOMUXC_ENET_RD0_ENET1_RGMII_RD0 0x91
  225. MX8MM_IOMUXC_ENET_TXC_ENET1_RGMII_TXC 0x1f
  226. MX8MM_IOMUXC_ENET_RXC_ENET1_RGMII_RXC 0x91
  227. MX8MM_IOMUXC_ENET_RX_CTL_ENET1_RGMII_RX_CTL 0x91
  228. MX8MM_IOMUXC_ENET_TX_CTL_ENET1_RGMII_TX_CTL 0x1f
  229. MX8MM_IOMUXC_GPIO1_IO01_GPIO1_IO1 0x19 /* PHY RST */
  230. MX8MM_IOMUXC_GPIO1_IO05_GPIO1_IO5 0x19 /* ETH IRQ */
  231. >;
  232. };
  233. pinctrl_gpio_led: gpioledgrp {
  234. fsl,pins = <
  235. MX8MM_IOMUXC_GPIO1_IO12_GPIO1_IO12 0x19
  236. MX8MM_IOMUXC_GPIO1_IO13_GPIO1_IO13 0x19
  237. MX8MM_IOMUXC_GPIO1_IO14_GPIO1_IO14 0x19
  238. >;
  239. };
  240. pinctrl_gpio1: gpio1grp {
  241. fsl,pins = <
  242. MX8MM_IOMUXC_GPIO1_IO03_GPIO1_IO3 0x19
  243. MX8MM_IOMUXC_GPIO1_IO07_GPIO1_IO7 0x19
  244. MX8MM_IOMUXC_GPIO1_IO09_GPIO1_IO9 0x19
  245. MX8MM_IOMUXC_GPIO1_IO11_GPIO1_IO11 0x19
  246. MX8MM_IOMUXC_GPIO1_IO06_GPIO1_IO6 0x19
  247. MX8MM_IOMUXC_GPIO1_IO08_GPIO1_IO8 0x19
  248. MX8MM_IOMUXC_GPIO1_IO10_GPIO1_IO10 0x19
  249. >;
  250. };
  251. pinctrl_gpio5: gpio5grp {
  252. fsl,pins = <
  253. MX8MM_IOMUXC_SAI3_MCLK_GPIO5_IO2 0x19
  254. >;
  255. };
  256. pinctrl_i2c4: i2c4grp {
  257. fsl,pins = <
  258. MX8MM_IOMUXC_I2C4_SCL_I2C4_SCL 0x400001c3
  259. MX8MM_IOMUXC_I2C4_SDA_I2C4_SDA 0x400001c3
  260. >;
  261. };
  262. pinctrl_pwm2: pwm2grp {
  263. fsl,pins = <
  264. MX8MM_IOMUXC_SPDIF_RX_PWM2_OUT 0x19
  265. >;
  266. };
  267. pinctrl_reg_usb1_vbus: regusb1vbusgrp {
  268. fsl,pins = <
  269. MX8MM_IOMUXC_SAI5_MCLK_GPIO3_IO25 0x19
  270. >;
  271. };
  272. pinctrl_uart1: uart1grp {
  273. fsl,pins = <
  274. MX8MM_IOMUXC_SAI2_RXC_UART1_DCE_RX 0x140
  275. MX8MM_IOMUXC_SAI2_RXFS_UART1_DCE_TX 0x140
  276. MX8MM_IOMUXC_SAI2_RXD0_UART1_DCE_RTS_B 0x140
  277. MX8MM_IOMUXC_SAI2_TXFS_UART1_DCE_CTS_B 0x140
  278. >;
  279. };
  280. pinctrl_uart2: uart2grp {
  281. fsl,pins = <
  282. MX8MM_IOMUXC_SAI3_TXFS_UART2_DCE_RX 0x140
  283. MX8MM_IOMUXC_SAI3_TXC_UART2_DCE_TX 0x140
  284. MX8MM_IOMUXC_SAI3_RXD_UART2_DCE_RTS_B 0x140
  285. MX8MM_IOMUXC_SAI3_RXC_UART2_DCE_CTS_B 0x140
  286. >;
  287. };
  288. pinctrl_usb_eth2: usbeth2grp {
  289. fsl,pins = <
  290. MX8MM_IOMUXC_NAND_CE1_B_GPIO3_IO2 0x19
  291. >;
  292. };
  293. pinctrl_usdhc2: usdhc2grp {
  294. fsl,pins = <
  295. MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x190
  296. MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d0
  297. MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d0
  298. MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d0
  299. MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d0
  300. MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d0
  301. MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x019
  302. MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
  303. >;
  304. };
  305. pinctrl_usdhc2_100mhz: usdhc2-100mhzgrp {
  306. fsl,pins = <
  307. MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x194
  308. MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d4
  309. MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d4
  310. MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d4
  311. MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d4
  312. MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d4
  313. MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x019
  314. MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
  315. >;
  316. };
  317. pinctrl_usdhc2_200mhz: usdhc2-200mhzgrp {
  318. fsl,pins = <
  319. MX8MM_IOMUXC_SD2_CLK_USDHC2_CLK 0x196
  320. MX8MM_IOMUXC_SD2_CMD_USDHC2_CMD 0x1d6
  321. MX8MM_IOMUXC_SD2_DATA0_USDHC2_DATA0 0x1d6
  322. MX8MM_IOMUXC_SD2_DATA1_USDHC2_DATA1 0x1d6
  323. MX8MM_IOMUXC_SD2_DATA2_USDHC2_DATA2 0x1d6
  324. MX8MM_IOMUXC_SD2_DATA3_USDHC2_DATA3 0x1d6
  325. MX8MM_IOMUXC_SD2_CD_B_GPIO2_IO12 0x019
  326. MX8MM_IOMUXC_GPIO1_IO04_USDHC2_VSELECT 0x1d0
  327. >;
  328. };
  329. };