imx6qdl-skov-cpu.dtsi 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487
  1. // SPDX-License-Identifier: (GPL-2.0 OR MIT)
  2. //
  3. // Copyright (C) 2020 Pengutronix, Ulrich Oelmann <[email protected]>
  4. #include <dt-bindings/gpio/gpio.h>
  5. #include <dt-bindings/leds/common.h>
  6. / {
  7. chosen {
  8. stdout-path = &uart2;
  9. };
  10. aliases {
  11. can0 = &can1;
  12. can1 = &can2;
  13. mdio-gpio0 = &mdio;
  14. nand = &gpmi;
  15. rtc0 = &i2c_rtc;
  16. rtc1 = &snvs;
  17. usb0 = &usbh1;
  18. usb1 = &usbotg;
  19. };
  20. iio-hwmon {
  21. compatible = "iio-hwmon";
  22. io-channels = <&adc 0>, /* 24V */
  23. <&adc 1>; /* temperature */
  24. };
  25. leds {
  26. compatible = "gpio-leds";
  27. led-0 {
  28. label = "D1";
  29. gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
  30. function = LED_FUNCTION_STATUS;
  31. default-state = "on";
  32. linux,default-trigger = "heartbeat";
  33. };
  34. led-1 {
  35. label = "D2";
  36. gpios = <&gpio1 0 GPIO_ACTIVE_HIGH>;
  37. default-state = "off";
  38. };
  39. led-2 {
  40. label = "D3";
  41. gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
  42. default-state = "on";
  43. };
  44. };
  45. mdio: mdio {
  46. compatible = "microchip,mdio-smi0";
  47. pinctrl-names = "default";
  48. pinctrl-0 = <&pinctrl_mdio>;
  49. #address-cells = <1>;
  50. #size-cells = <0>;
  51. gpios = <&gpio1 31 GPIO_ACTIVE_HIGH>,
  52. <&gpio1 22 GPIO_ACTIVE_HIGH>;
  53. switch@0 {
  54. compatible = "microchip,ksz8873";
  55. pinctrl-names = "default";
  56. pinctrl-0 = <&pinctrl_switch>;
  57. interrupt-parent = <&gpio3>;
  58. interrupt = <30 IRQ_TYPE_LEVEL_HIGH>;
  59. reset-gpios = <&gpio1 5 GPIO_ACTIVE_LOW>;
  60. reg = <0>;
  61. ports {
  62. #address-cells = <1>;
  63. #size-cells = <0>;
  64. ports@0 {
  65. reg = <0>;
  66. phy-mode = "internal";
  67. label = "lan1";
  68. };
  69. ports@1 {
  70. reg = <1>;
  71. phy-mode = "internal";
  72. label = "lan2";
  73. };
  74. ports@2 {
  75. reg = <2>;
  76. label = "cpu";
  77. ethernet = <&fec>;
  78. phy-mode = "rmii";
  79. fixed-link {
  80. speed = <100>;
  81. full-duplex;
  82. };
  83. };
  84. };
  85. };
  86. };
  87. clk50m_phy: phy-clock {
  88. compatible = "fixed-clock";
  89. #clock-cells = <0>;
  90. clock-frequency = <50000000>;
  91. };
  92. reg_3v3: regulator-3v3 {
  93. compatible = "regulator-fixed";
  94. vin-supply = <&reg_5v0>;
  95. regulator-name = "3v3";
  96. regulator-min-microvolt = <3300000>;
  97. regulator-max-microvolt = <3300000>;
  98. };
  99. reg_5v0: regulator-5v0 {
  100. compatible = "regulator-fixed";
  101. regulator-name = "5v0";
  102. regulator-min-microvolt = <5000000>;
  103. regulator-max-microvolt = <5000000>;
  104. };
  105. reg_24v0: regulator-24v0 {
  106. compatible = "regulator-fixed";
  107. regulator-name = "24v0";
  108. regulator-min-microvolt = <24000000>;
  109. regulator-max-microvolt = <24000000>;
  110. };
  111. reg_can1_stby: regulator-can1-stby {
  112. compatible = "regulator-fixed";
  113. pinctrl-names = "default";
  114. pinctrl-0 = <&pinctrl_can1_stby>;
  115. regulator-name = "can1-3v3";
  116. regulator-min-microvolt = <3300000>;
  117. regulator-max-microvolt = <3300000>;
  118. gpio = <&gpio3 31 GPIO_ACTIVE_LOW>;
  119. };
  120. reg_can2_stby: regulator-can2-stby {
  121. compatible = "regulator-fixed";
  122. pinctrl-names = "default";
  123. pinctrl-0 = <&pinctrl_can2_stby>;
  124. regulator-name = "can2-3v3";
  125. regulator-min-microvolt = <3300000>;
  126. regulator-max-microvolt = <3300000>;
  127. gpio = <&gpio4 11 GPIO_ACTIVE_LOW>;
  128. };
  129. reg_tft_vcom: regulator-tft-vcom {
  130. compatible = "pwm-regulator";
  131. pwms = <&pwm3 0 20000 0>;
  132. regulator-name = "tft_vcom";
  133. regulator-min-microvolt = <3600000>;
  134. regulator-max-microvolt = <3600000>;
  135. regulator-always-on;
  136. voltage-table = <3600000 26>;
  137. };
  138. reg_vcc_mmc: regulator-vcc-mmc {
  139. compatible = "regulator-fixed";
  140. pinctrl-names = "default";
  141. pinctrl-0 = <&pinctrl_vcc_mmc>;
  142. vin-supply = <&reg_3v3>;
  143. regulator-name = "mmc_vcc_supply";
  144. regulator-min-microvolt = <3300000>;
  145. regulator-max-microvolt = <3300000>;
  146. regulator-always-on;
  147. regulator-boot-on;
  148. gpio = <&gpio7 8 GPIO_ACTIVE_HIGH>;
  149. enable-active-high;
  150. startup-delay-us = <100>;
  151. };
  152. reg_vcc_mmc_io: regulator-vcc-mmc-io {
  153. compatible = "regulator-gpio";
  154. pinctrl-names = "default";
  155. pinctrl-0 = <&pinctrl_vcc_mmc_io>;
  156. vin-supply = <&reg_5v0>;
  157. regulator-name = "mmc_io_supply";
  158. regulator-type = "voltage";
  159. regulator-min-microvolt = <1800000>;
  160. regulator-max-microvolt = <3300000>;
  161. gpios = <&gpio7 13 GPIO_ACTIVE_HIGH>;
  162. enable-active-high;
  163. states = <1800000 0x1>, <3300000 0x0>;
  164. startup-delay-us = <100>;
  165. };
  166. };
  167. &can1 {
  168. pinctrl-names = "default";
  169. pinctrl-0 = <&pinctrl_can1>;
  170. xceiver-supply = <&reg_can1_stby>;
  171. status = "okay";
  172. };
  173. &can2 {
  174. pinctrl-names = "default";
  175. pinctrl-0 = <&pinctrl_can2>;
  176. xceiver-supply = <&reg_can2_stby>;
  177. status = "okay";
  178. };
  179. &ecspi1 {
  180. pinctrl-names = "default";
  181. pinctrl-0 = <&pinctrl_ecspi1>;
  182. cs-gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
  183. status = "okay";
  184. flash@0 {
  185. compatible = "jedec,spi-nor";
  186. spi-max-frequency = <54000000>;
  187. reg = <0>;
  188. };
  189. };
  190. &ecspi2 {
  191. pinctrl-names = "default";
  192. pinctrl-0 = <&pinctrl_ecspi2>;
  193. cs-gpios = <&gpio2 26 GPIO_ACTIVE_LOW>;
  194. status = "okay";
  195. adc: adc@0 {
  196. compatible = "microchip,mcp3002";
  197. reg = <0>;
  198. vref-supply = <&reg_3v3>;
  199. spi-max-frequency = <1000000>;
  200. #io-channel-cells = <1>;
  201. };
  202. };
  203. &fec {
  204. pinctrl-names = "default";
  205. pinctrl-0 = <&pinctrl_enet>;
  206. clocks = <&clks IMX6QDL_CLK_ENET>,
  207. <&clks IMX6QDL_CLK_ENET>,
  208. <&clk50m_phy>;
  209. clock-names = "ipg", "ahb", "ptp";
  210. phy-mode = "rmii";
  211. phy-supply = <&reg_3v3>;
  212. status = "okay";
  213. fixed-link {
  214. speed = <100>;
  215. full-duplex;
  216. };
  217. };
  218. &gpmi {
  219. pinctrl-names = "default";
  220. pinctrl-0 = <&pinctrl_gpmi_nand>;
  221. nand-on-flash-bbt;
  222. #address-cells = <1>;
  223. #size-cells = <0>;
  224. status = "okay";
  225. };
  226. &i2c3 {
  227. pinctrl-names = "default";
  228. pinctrl-0 = <&pinctrl_i2c3>;
  229. clock-frequency = <400000>;
  230. status = "okay";
  231. i2c_rtc: rtc@51 {
  232. compatible = "nxp,pcf85063";
  233. reg = <0x51>;
  234. quartz-load-femtofarads = <12500>;
  235. };
  236. };
  237. &pwm2 {
  238. pinctrl-names = "default";
  239. pinctrl-0 = <&pinctrl_pwm2>;
  240. #pwm-cells = <2>;
  241. status = "okay";
  242. };
  243. &pwm3 {
  244. /* used for LCD contrast control */
  245. pinctrl-names = "default";
  246. pinctrl-0 = <&pinctrl_pwm3>;
  247. status = "okay";
  248. };
  249. &uart2 {
  250. pinctrl-names = "default";
  251. pinctrl-0 = <&pinctrl_uart2>;
  252. status = "okay";
  253. };
  254. &usbh1 {
  255. vbus-supply = <&reg_5v0>;
  256. disable-over-current;
  257. status = "okay";
  258. };
  259. /* no usbh2 */
  260. &usbphynop1 {
  261. status = "disabled";
  262. };
  263. /* no usbh3 */
  264. &usbphynop2 {
  265. status = "disabled";
  266. };
  267. &usbotg {
  268. vbus-supply = <&reg_5v0>;
  269. disable-over-current;
  270. status = "okay";
  271. };
  272. &usdhc3 {
  273. pinctrl-names = "default";
  274. pinctrl-0 = <&pinctrl_usdhc3>;
  275. wp-gpios = <&gpio7 1 GPIO_ACTIVE_HIGH>;
  276. cd-gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
  277. cap-power-off-card;
  278. full-pwr-cycle;
  279. bus-width = <4>;
  280. max-frequency = <50000000>;
  281. cap-sd-highspeed;
  282. sd-uhs-sdr12;
  283. sd-uhs-sdr25;
  284. sd-uhs-sdr50;
  285. sd-uhs-ddr50;
  286. mmc-ddr-1_8v;
  287. vmmc-supply = <&reg_vcc_mmc>;
  288. vqmmc-supply = <&reg_vcc_mmc_io>;
  289. status = "okay";
  290. };
  291. &iomuxc {
  292. pinctrl_can1: can1grp {
  293. fsl,pins = <
  294. MX6QDL_PAD_GPIO_7__FLEXCAN1_TX 0x3008
  295. MX6QDL_PAD_GPIO_8__FLEXCAN1_RX 0x1b000
  296. >;
  297. };
  298. pinctrl_can1_stby: can1stbygrp {
  299. fsl,pins = <
  300. MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x13008
  301. >;
  302. };
  303. pinctrl_can2: can2grp {
  304. fsl,pins = <
  305. MX6QDL_PAD_KEY_COL4__FLEXCAN2_TX 0x3008
  306. MX6QDL_PAD_KEY_ROW4__FLEXCAN2_RX 0x1b000
  307. >;
  308. };
  309. pinctrl_can2_stby: can2stbygrp {
  310. fsl,pins = <
  311. MX6QDL_PAD_KEY_ROW2__GPIO4_IO11 0x13008
  312. >;
  313. };
  314. pinctrl_ecspi1: ecspi1grp {
  315. fsl,pins = <
  316. MX6QDL_PAD_EIM_D17__ECSPI1_MISO 0x100b1
  317. MX6QDL_PAD_EIM_D18__ECSPI1_MOSI 0xb1
  318. MX6QDL_PAD_EIM_D16__ECSPI1_SCLK 0xb1
  319. /* *no* external pull up */
  320. MX6QDL_PAD_EIM_D24__GPIO3_IO24 0x58
  321. >;
  322. };
  323. pinctrl_ecspi2: ecspi2grp {
  324. fsl,pins = <
  325. MX6QDL_PAD_EIM_OE__ECSPI2_MISO 0x100b1
  326. MX6QDL_PAD_EIM_CS1__ECSPI2_MOSI 0xb1
  327. MX6QDL_PAD_EIM_CS0__ECSPI2_SCLK 0xb1
  328. /* external pull up */
  329. MX6QDL_PAD_EIM_RW__GPIO2_IO26 0x58
  330. >;
  331. };
  332. pinctrl_enet: enetgrp {
  333. fsl,pins = <
  334. /* RMII 50 MHz */
  335. MX6QDL_PAD_ENET_CRS_DV__ENET_RX_EN 0x100f5
  336. MX6QDL_PAD_ENET_TX_EN__ENET_TX_EN 0x100f5
  337. MX6QDL_PAD_ENET_RXD0__ENET_RX_DATA0 0x100c0
  338. MX6QDL_PAD_ENET_RXD1__ENET_RX_DATA1 0x100c0
  339. MX6QDL_PAD_ENET_TXD0__ENET_TX_DATA0 0x100f5
  340. MX6QDL_PAD_ENET_TXD1__ENET_TX_DATA1 0x100f5
  341. MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x1b0b0
  342. MX6QDL_PAD_GPIO_5__GPIO1_IO05 0x58
  343. /* GPIO for "link active" */
  344. MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24 0x3038
  345. >;
  346. };
  347. pinctrl_gpmi_nand: gpminandgrp {
  348. fsl,pins = <
  349. MX6QDL_PAD_NANDF_CLE__NAND_CLE 0xb0b1
  350. MX6QDL_PAD_NANDF_ALE__NAND_ALE 0xb0b1
  351. MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0xb000
  352. MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0xb0b1
  353. MX6QDL_PAD_NANDF_CS1__NAND_CE1_B 0xb0b1
  354. MX6QDL_PAD_SD4_CMD__NAND_RE_B 0xb0b1
  355. MX6QDL_PAD_SD4_CLK__NAND_WE_B 0xb0b1
  356. MX6QDL_PAD_NANDF_D0__NAND_DATA00 0xb0b1
  357. MX6QDL_PAD_NANDF_D1__NAND_DATA01 0xb0b1
  358. MX6QDL_PAD_NANDF_D2__NAND_DATA02 0xb0b1
  359. MX6QDL_PAD_NANDF_D3__NAND_DATA03 0xb0b1
  360. MX6QDL_PAD_NANDF_D4__NAND_DATA04 0xb0b1
  361. MX6QDL_PAD_NANDF_D5__NAND_DATA05 0xb0b1
  362. MX6QDL_PAD_NANDF_D6__NAND_DATA06 0xb0b1
  363. MX6QDL_PAD_NANDF_D7__NAND_DATA07 0xb0b1
  364. >;
  365. };
  366. pinctrl_i2c3: i2c3grp {
  367. fsl,pins = <
  368. /* external 10 k pull up */
  369. MX6QDL_PAD_GPIO_3__I2C3_SCL 0x40010878
  370. /* external 10 k pull up */
  371. MX6QDL_PAD_GPIO_6__I2C3_SDA 0x40010878
  372. >;
  373. };
  374. pinctrl_mdio: mdiogrp {
  375. fsl,pins = <
  376. MX6QDL_PAD_ENET_MDIO__GPIO1_IO22 0x100b1
  377. MX6QDL_PAD_ENET_MDC__GPIO1_IO31 0xb1
  378. >;
  379. };
  380. pinctrl_pwm2: pwm2grp {
  381. fsl,pins = <
  382. MX6QDL_PAD_GPIO_1__PWM2_OUT 0x58
  383. >;
  384. };
  385. pinctrl_pwm3: pwm3grp {
  386. fsl,pins = <
  387. MX6QDL_PAD_SD1_DAT1__PWM3_OUT 0x58
  388. >;
  389. };
  390. pinctrl_switch: switchgrp {
  391. fsl,pins = <
  392. MX6QDL_PAD_EIM_D30__GPIO3_IO30 0xb0
  393. >;
  394. };
  395. pinctrl_uart2: uart2grp {
  396. fsl,pins = <
  397. MX6QDL_PAD_EIM_D26__UART2_TX_DATA 0x1b0b1
  398. MX6QDL_PAD_EIM_D27__UART2_RX_DATA 0x1b0b1
  399. >;
  400. };
  401. pinctrl_usdhc3: usdhc3grp {
  402. fsl,pins = <
  403. /* SoC internal pull up required */
  404. MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
  405. MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059
  406. MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
  407. MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
  408. MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
  409. MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
  410. /* SoC internal pull up required */
  411. MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x1b040
  412. /* SoC internal pull up required */
  413. MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x1b040
  414. >;
  415. };
  416. pinctrl_vcc_mmc: vccmmcgrp {
  417. fsl,pins = <
  418. MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x58
  419. >;
  420. };
  421. pinctrl_vcc_mmc_io: vccmmciogrp {
  422. fsl,pins = <
  423. MX6QDL_PAD_GPIO_18__GPIO7_IO13 0x58
  424. >;
  425. };
  426. };