imx7d-flex-concentrator.dts 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Device Tree Source for Kamstrup OMNIA Flex Concentrator.
  4. *
  5. * Copyright (C) 2020 Kamstrup A/S
  6. * Author: Bruno Thomsen <[email protected]>
  7. */
  8. /dts-v1/;
  9. #include "imx7d-tqma7.dtsi"
  10. /* One I2C device on TQMa7 SoM is not mounted */
  11. /delete-node/ &ds1339;
  12. / {
  13. model = "Kamstrup OMNIA Flex Concentrator";
  14. compatible = "kam,imx7d-flex-concentrator", "fsl,imx7d";
  15. memory@80000000 {
  16. device_type = "memory";
  17. /* 1024 MB - TQMa7D board configuration */
  18. reg = <0x80000000 0x40000000>;
  19. };
  20. reg_usb_otg2_vbus: regulator-usb-otg2-vbus {
  21. compatible = "regulator-fixed";
  22. regulator-name = "VBUS_USBOTG2";
  23. regulator-min-microvolt = <5000000>;
  24. regulator-max-microvolt = <5000000>;
  25. gpio = <&gpio1 7 GPIO_ACTIVE_HIGH>;
  26. enable-active-high;
  27. };
  28. reg_vref_1v8: regulator-vref-1v8 {
  29. compatible = "regulator-fixed";
  30. regulator-name = "VCC1V8_REF";
  31. regulator-min-microvolt = <1800000>;
  32. regulator-max-microvolt = <1800000>;
  33. regulator-always-on;
  34. vin-supply = <&sw2_reg>;
  35. };
  36. /*
  37. * Human Machine Interface consists of 4 dual red/green LEDs.
  38. * hmi-a:green is controlled directly by the switch-mode power supply.
  39. * hmi-a:red is not used.
  40. */
  41. gpio-leds {
  42. compatible = "gpio-leds";
  43. pinctrl-names = "default";
  44. pinctrl-0 = <&pinctrl_leds>;
  45. led-0 {
  46. label = "hmi-b:red:heartbeat-degraded";
  47. gpios = <&gpio3 6 GPIO_ACTIVE_HIGH>;
  48. };
  49. led-1 {
  50. label = "hmi-b:green:heartbeat-running";
  51. gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
  52. linux,default-trigger = "heartbeat";
  53. };
  54. led-2 {
  55. label = "hmi-c:red:mesh-error";
  56. gpios = <&gpio2 29 GPIO_ACTIVE_HIGH>;
  57. };
  58. led-3 {
  59. label = "hmi-c:green:mesh-activity";
  60. gpios = <&gpio2 30 GPIO_ACTIVE_HIGH>;
  61. };
  62. led-4 {
  63. label = "hmi-d:red:omnia-error";
  64. gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>;
  65. };
  66. led-5 {
  67. label = "hmi-d:green:omnia-activity";
  68. gpios = <&gpio4 3 GPIO_ACTIVE_HIGH>;
  69. };
  70. };
  71. /*
  72. * Errata e10574 board restart workaround.
  73. */
  74. gpio-restart {
  75. pinctrl-names = "default";
  76. pinctrl-0 = <&pinctrl_restart>;
  77. compatible = "gpio-restart";
  78. gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
  79. priority = <200>;
  80. };
  81. };
  82. /*
  83. * Analog signals
  84. * ADC1_IN0: SMPS - 5V output monitor (voltage divider: 1/0.2806)
  85. */
  86. &adc1 {
  87. vref-supply = <&reg_vref_1v8>;
  88. status = "okay";
  89. };
  90. &ecspi2 {
  91. pinctrl-names = "default";
  92. pinctrl-0 = <&pinctrl_ecspi2>;
  93. num-chipselects = <1>;
  94. cs-gpios = <&gpio4 23 GPIO_ACTIVE_LOW>;
  95. status = "okay";
  96. pcf2127: rtc@0 {
  97. compatible = "nxp,pcf2127";
  98. reg = <0>;
  99. spi-max-frequency = <2000000>;
  100. reset-source;
  101. };
  102. };
  103. &ecspi4 {
  104. pinctrl-names = "default";
  105. pinctrl-0 = <&pinctrl_ecspi4>;
  106. num-chipselects = <1>;
  107. cs-gpios = <&gpio3 3 GPIO_ACTIVE_LOW>;
  108. status = "okay";
  109. /*
  110. * ST chip maximum SPI clock frequency is 33 MHz.
  111. *
  112. * TCG specification - Section 6.4.1 Clocking:
  113. * TPM shall support a SPI clock frequency range of 10-24 MHz.
  114. */
  115. st33htph: tpm-tis@0 {
  116. compatible = "st,st33htpm-spi", "tcg,tpm_tis-spi";
  117. reg = <0>;
  118. spi-max-frequency = <24000000>;
  119. };
  120. };
  121. &fec1 {
  122. pinctrl-names = "default";
  123. pinctrl-0 = <&pinctrl_enet1>;
  124. phy-mode = "rmii";
  125. phy-handle = <&ethphy>;
  126. status = "okay";
  127. /*
  128. * MDIO bus reset is used to generate PHY device reset before
  129. * Ethernet PHY type ID auto-detection. Otherwise this communication
  130. * fails as device does not answer when recommended reset circuit
  131. * is used.
  132. */
  133. mdio {
  134. #address-cells = <1>;
  135. #size-cells = <0>;
  136. reset-delay-us = <100000>;
  137. reset-post-delay-us = <500000>;
  138. reset-gpios = <&gpio7 15 GPIO_ACTIVE_LOW>;
  139. /* Microchip/Micrel KSZ8081RNB */
  140. ethphy: ethernet-phy@1 {
  141. compatible = "ethernet-phy-ieee802.3-c22";
  142. interrupt-parent = <&gpio1>;
  143. interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
  144. reg = <1>;
  145. };
  146. };
  147. };
  148. /*
  149. * Detection signals for internal USB modules.
  150. * Used for robust USB plug and play handling such as USB downstream port
  151. * power-cycle and USB hub reset in case of misbehaving or crashed modules.
  152. *
  153. * SMPS - AC input monitor based on zero crossing.
  154. * Used for last gasp notification.
  155. */
  156. &gpio3 {
  157. gpio-line-names = "", "", "", "", "", "", "", "",
  158. "", "", "", "", "smps-ac-monitor", "", "usb-hub-reset", "",
  159. "", "", "", "", "", "", "", "",
  160. "", "module-b-detection", "", "module-a-detection", "", "", "", "";
  161. };
  162. /*
  163. * Tamper IRQ trigger timestamp reading.
  164. * Used for sealed cover opened/closed notification.
  165. */
  166. &gpio5 {
  167. gpio-line-names = "", "", "", "", "", "", "", "",
  168. "", "", "", "", "rtc-tamper-irq", "", "", "",
  169. "", "", "", "", "", "", "", "",
  170. "", "", "", "", "", "", "", "";
  171. };
  172. &iomuxc {
  173. pinctrl-names = "default";
  174. pinctrl-0 = <&pinctrl_misc>;
  175. pinctrl_ecspi2: ecspi2grp {
  176. fsl,pins = <
  177. MX7D_PAD_ECSPI2_MISO__ECSPI2_MISO 0x7c /* X2-15 */
  178. MX7D_PAD_ECSPI2_MOSI__ECSPI2_MOSI 0x74 /* X2-18 */
  179. MX7D_PAD_ECSPI2_SCLK__ECSPI2_SCLK 0x74 /* X2-13 */
  180. MX7D_PAD_ECSPI2_SS0__GPIO4_IO23 0x74 /* X2-20 */
  181. /* RTC - Tamper IRQ */
  182. MX7D_PAD_SD2_CLK__GPIO5_IO12 0x3c /* X1-92 */
  183. >;
  184. };
  185. pinctrl_ecspi4: ecspi4grp {
  186. fsl,pins = <
  187. MX7D_PAD_LCD_CLK__ECSPI4_MISO 0x7c /* X2-72 */
  188. MX7D_PAD_LCD_ENABLE__ECSPI4_MOSI 0x74 /* X2-68 */
  189. MX7D_PAD_LCD_HSYNC__ECSPI4_SCLK 0x74 /* X2-76 */
  190. MX7D_PAD_LCD_VSYNC__GPIO3_IO3 0x74 /* X2-78 */
  191. >;
  192. };
  193. pinctrl_enet1: enet1grp {
  194. fsl,pins = <
  195. MX7D_PAD_GPIO1_IO10__ENET1_MDIO 0x03 /* X2-48 */
  196. MX7D_PAD_GPIO1_IO11__ENET1_MDC 0x03 /* X2-46 */
  197. MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 0x71 /* X2-53 */
  198. MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 0x71 /* X2-55 */
  199. MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL 0x71 /* X2-61 */
  200. MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 0x79 /* X2-56 */
  201. MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 0x79 /* X2-58 */
  202. MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL 0x79 /* X2-64 */
  203. MX7D_PAD_ENET1_RGMII_RXC__ENET1_RX_ER 0x73 /* X2-52 */
  204. /* PHY reset: SRE_FAST, DSE_X1 */
  205. MX7D_PAD_ENET1_COL__GPIO7_IO15 0x00 /* X1-96 */
  206. /* Clock from PHY to MAC: 100kPU */
  207. MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1 0x70 /* X3-4 */
  208. /* PHY interrupt: 100kPU, HYS */
  209. MX7D_PAD_GPIO1_IO09__GPIO1_IO9 0x78 /* X1-80 */
  210. >;
  211. };
  212. pinctrl_leds: ledsgrp {
  213. fsl,pins = <
  214. MX7D_PAD_LCD_DATA01__GPIO3_IO6 0x14 /* X2-82 */
  215. MX7D_PAD_EPDC_BDR0__GPIO2_IO28 0x14 /* X1-82 */
  216. MX7D_PAD_EPDC_BDR1__GPIO2_IO29 0x14 /* X1-84 */
  217. MX7D_PAD_EPDC_PWR_COM__GPIO2_IO30 0x14 /* X1-86 */
  218. MX7D_PAD_EPDC_PWR_STAT__GPIO2_IO31 0x14 /* X1-88 */
  219. MX7D_PAD_UART2_TX_DATA__GPIO4_IO3 0x14 /* X1-90 */
  220. >;
  221. };
  222. pinctrl_misc: miscgrp {
  223. fsl,pins = <
  224. /* Module A detection (low = present) */
  225. MX7D_PAD_LCD_DATA22__GPIO3_IO27 0x7c /* X2-105 */
  226. /* Module B detection (low = present) */
  227. MX7D_PAD_LCD_DATA20__GPIO3_IO25 0x7c /* X2-103 */
  228. /* SMPS - AC input monitor (high = failure) */
  229. MX7D_PAD_LCD_DATA07__GPIO3_IO12 0x7c /* X2-88 */
  230. /* USB - Hub reset */
  231. MX7D_PAD_LCD_DATA09__GPIO3_IO14 0x74 /* X2-92 */
  232. >;
  233. };
  234. pinctrl_restart: restartgrp {
  235. fsl,pins = <
  236. MX7D_PAD_ENET1_TX_CLK__GPIO7_IO12 0x74 /* X1-94 */
  237. >;
  238. };
  239. pinctrl_uart4: uart4grp {
  240. fsl,pins = <
  241. MX7D_PAD_SAI2_TX_SYNC__UART4_DCE_RX 0x7e /* X3-14 */
  242. MX7D_PAD_SAI2_TX_BCLK__UART4_DCE_TX 0x76 /* X3-16 */
  243. >;
  244. };
  245. };
  246. &iomuxc_lpsr {
  247. pinctrl_usbotg2: usbotg2grp {
  248. fsl,pins = <
  249. MX7D_PAD_LPSR_GPIO1_IO06__USB_OTG2_OC 0x5c /* X3-11 */
  250. MX7D_PAD_LPSR_GPIO1_IO07__GPIO1_IO7 0x59 /* X3-9 */
  251. >;
  252. };
  253. };
  254. &uart4 {
  255. pinctrl-names = "default";
  256. pinctrl-0 = <&pinctrl_uart4>;
  257. assigned-clocks = <&clks IMX7D_UART4_ROOT_SRC>;
  258. assigned-clock-parents = <&clks IMX7D_OSC_24M_CLK>;
  259. };
  260. &usbotg2 {
  261. pinctrl-names = "default";
  262. pinctrl-0 = <&pinctrl_usbotg2>;
  263. vbus-supply = <&reg_usb_otg2_vbus>;
  264. srp-disable;
  265. hnp-disable;
  266. adp-disable;
  267. over-current-active-low;
  268. dr_mode = "host";
  269. status = "okay";
  270. };
  271. /*
  272. * External watchdog feature provided by pcf2127.
  273. */
  274. &wdog1 {
  275. status = "disabled";
  276. };