imx28-duckbill-2-enocean.dts 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. // SPDX-License-Identifier: GPL-2.0-or-later
  2. /*
  3. * Copyright (C) 2015-2017 I2SE GmbH <[email protected]>
  4. * Copyright (C) 2016 Michael Heimpold <[email protected]>
  5. */
  6. /dts-v1/;
  7. #include <dt-bindings/interrupt-controller/irq.h>
  8. #include <dt-bindings/input/input.h>
  9. #include <dt-bindings/gpio/gpio.h>
  10. #include "imx28.dtsi"
  11. / {
  12. model = "I2SE Duckbill 2 EnOcean";
  13. compatible = "i2se,duckbill-2-enocean", "i2se,duckbill-2", "fsl,imx28";
  14. memory@40000000 {
  15. device_type = "memory";
  16. reg = <0x40000000 0x08000000>;
  17. };
  18. apb@80000000 {
  19. apbh@80000000 {
  20. ssp0: spi@80010000 {
  21. compatible = "fsl,imx28-mmc";
  22. pinctrl-names = "default";
  23. pinctrl-0 = <&mmc0_8bit_pins_a
  24. &mmc0_cd_cfg &mmc0_sck_cfg>;
  25. bus-width = <8>;
  26. vmmc-supply = <&reg_3p3v>;
  27. status = "okay";
  28. non-removable;
  29. };
  30. ssp2: spi@80014000 {
  31. compatible = "fsl,imx28-mmc";
  32. pinctrl-names = "default";
  33. pinctrl-0 = <&mmc2_4bit_pins_b
  34. &mmc2_cd_cfg &mmc2_sck_cfg_b>;
  35. bus-width = <4>;
  36. vmmc-supply = <&reg_3p3v>;
  37. status = "okay";
  38. };
  39. pinctrl@80018000 {
  40. pinctrl-names = "default";
  41. pinctrl-0 = <&hog_pins_a>;
  42. hog_pins_a: hog@0 {
  43. reg = <0>;
  44. fsl,pinmux-ids = <
  45. MX28_PAD_LCD_D17__GPIO_1_17 /* Revision detection */
  46. >;
  47. fsl,drive-strength = <MXS_DRIVE_4mA>;
  48. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  49. fsl,pull-up = <MXS_PULL_DISABLE>;
  50. };
  51. mac0_phy_reset_pin: mac0-phy-reset@0 {
  52. reg = <0>;
  53. fsl,pinmux-ids = <
  54. MX28_PAD_GPMI_ALE__GPIO_0_26 /* PHY Reset */
  55. >;
  56. fsl,drive-strength = <MXS_DRIVE_4mA>;
  57. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  58. fsl,pull-up = <MXS_PULL_DISABLE>;
  59. };
  60. mac0_phy_int_pin: mac0-phy-int@0 {
  61. reg = <0>;
  62. fsl,pinmux-ids = <
  63. MX28_PAD_GPMI_D07__GPIO_0_7 /* PHY Interrupt */
  64. >;
  65. fsl,drive-strength = <MXS_DRIVE_4mA>;
  66. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  67. fsl,pull-up = <MXS_PULL_DISABLE>;
  68. };
  69. led_pins: leds@0 {
  70. reg = <0>;
  71. fsl,pinmux-ids = <
  72. MX28_PAD_SAIF0_MCLK__GPIO_3_20
  73. MX28_PAD_SAIF0_LRCLK__GPIO_3_21
  74. MX28_PAD_AUART0_CTS__GPIO_3_2
  75. MX28_PAD_I2C0_SCL__GPIO_3_24
  76. MX28_PAD_I2C0_SDA__GPIO_3_25
  77. >;
  78. fsl,drive-strength = <MXS_DRIVE_4mA>;
  79. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  80. fsl,pull-up = <MXS_PULL_DISABLE>;
  81. };
  82. enocean_button: enocean-button@0 {
  83. reg = <0>;
  84. fsl,pinmux-ids = <
  85. MX28_PAD_AUART0_RTS__GPIO_3_3
  86. >;
  87. fsl,drive-strength = <MXS_DRIVE_4mA>;
  88. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  89. fsl,pull-up = <MXS_PULL_DISABLE>;
  90. };
  91. };
  92. };
  93. apbx@80040000 {
  94. lradc@80050000 {
  95. status = "okay";
  96. };
  97. auart0: serial@8006a000 {
  98. pinctrl-names = "default";
  99. pinctrl-0 = <&auart0_2pins_a>;
  100. status = "okay";
  101. };
  102. duart: serial@80074000 {
  103. pinctrl-names = "default";
  104. pinctrl-0 = <&duart_pins_a>;
  105. status = "okay";
  106. };
  107. usbphy0: usbphy@8007c000 {
  108. status = "okay";
  109. };
  110. };
  111. };
  112. ahb@80080000 {
  113. usb0: usb@80080000 {
  114. status = "okay";
  115. dr_mode = "peripheral";
  116. };
  117. mac0: ethernet@800f0000 {
  118. phy-mode = "rmii";
  119. pinctrl-names = "default";
  120. pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>;
  121. phy-supply = <&reg_3p3v>;
  122. phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
  123. phy-reset-duration = <25>;
  124. phy-handle = <&ethphy>;
  125. status = "okay";
  126. mdio {
  127. #address-cells = <1>;
  128. #size-cells = <0>;
  129. ethphy: ethernet-phy@0 {
  130. compatible = "ethernet-phy-ieee802.3-c22";
  131. reg = <0>;
  132. pinctrl-names = "default";
  133. pinctrl-0 = <&mac0_phy_int_pin>;
  134. interrupt-parent = <&gpio0>;
  135. interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
  136. max-speed = <100>;
  137. };
  138. };
  139. };
  140. };
  141. reg_3p3v: regulator-3p3v {
  142. compatible = "regulator-fixed";
  143. regulator-name = "3P3V";
  144. regulator-min-microvolt = <3300000>;
  145. regulator-max-microvolt = <3300000>;
  146. regulator-always-on;
  147. };
  148. leds {
  149. compatible = "gpio-leds";
  150. pinctrl-names = "default";
  151. pinctrl-0 = <&led_pins>;
  152. status-red {
  153. label = "duckbill:red:status";
  154. gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
  155. linux,default-trigger = "default-on";
  156. };
  157. status-green {
  158. label = "duckbill:green:status";
  159. gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
  160. linux,default-trigger = "heartbeat";
  161. };
  162. enocean-blue {
  163. label = "duckbill:blue:enocean";
  164. gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
  165. };
  166. enocean-red {
  167. label = "duckbill:red:enocean";
  168. gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
  169. };
  170. enocean-green {
  171. label = "duckbill:green:enocean";
  172. gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;
  173. };
  174. };
  175. gpio-keys {
  176. compatible = "gpio-keys";
  177. pinctrl-names = "default";
  178. pinctrl-0 = <&enocean_button>;
  179. key-enocean {
  180. label = "EnOcean";
  181. linux,code = <KEY_NEW>;
  182. gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
  183. };
  184. };
  185. };