imx28-duckbill-2-spi.dts 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  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/gpio/gpio.h>
  9. #include "imx28.dtsi"
  10. / {
  11. model = "I2SE Duckbill 2 SPI";
  12. compatible = "i2se,duckbill-2-spi", "i2se,duckbill-2", "fsl,imx28";
  13. aliases {
  14. ethernet1 = &qca7000;
  15. };
  16. memory@40000000 {
  17. device_type = "memory";
  18. reg = <0x40000000 0x08000000>;
  19. };
  20. apb@80000000 {
  21. apbh@80000000 {
  22. ssp0: spi@80010000 {
  23. compatible = "fsl,imx28-mmc";
  24. pinctrl-names = "default";
  25. pinctrl-0 = <&mmc0_8bit_pins_a
  26. &mmc0_cd_cfg &mmc0_sck_cfg>;
  27. bus-width = <8>;
  28. vmmc-supply = <&reg_3p3v>;
  29. status = "okay";
  30. non-removable;
  31. };
  32. ssp2: spi@80014000 {
  33. compatible = "fsl,imx28-spi";
  34. pinctrl-names = "default";
  35. pinctrl-0 = <&spi2_pins_a>;
  36. status = "okay";
  37. qca7000: ethernet@0 {
  38. reg = <0>;
  39. compatible = "qca,qca7000";
  40. pinctrl-names = "default";
  41. pinctrl-0 = <&qca7000_pins>;
  42. interrupt-parent = <&gpio3>;
  43. interrupts = <3 IRQ_TYPE_EDGE_RISING>;
  44. spi-cpha;
  45. spi-cpol;
  46. spi-max-frequency = <8000000>;
  47. };
  48. };
  49. pinctrl@80018000 {
  50. pinctrl-names = "default";
  51. pinctrl-0 = <&hog_pins_a>;
  52. hog_pins_a: hog@0 {
  53. reg = <0>;
  54. fsl,pinmux-ids = <
  55. MX28_PAD_LCD_D17__GPIO_1_17 /* Revision detection */
  56. >;
  57. fsl,drive-strength = <MXS_DRIVE_4mA>;
  58. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  59. fsl,pull-up = <MXS_PULL_DISABLE>;
  60. };
  61. mac0_phy_reset_pin: mac0-phy-reset@0 {
  62. reg = <0>;
  63. fsl,pinmux-ids = <
  64. MX28_PAD_GPMI_ALE__GPIO_0_26 /* PHY Reset */
  65. >;
  66. fsl,drive-strength = <MXS_DRIVE_4mA>;
  67. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  68. fsl,pull-up = <MXS_PULL_DISABLE>;
  69. };
  70. mac0_phy_int_pin: mac0-phy-int@0 {
  71. reg = <0>;
  72. fsl,pinmux-ids = <
  73. MX28_PAD_GPMI_D07__GPIO_0_7 /* PHY Interrupt */
  74. >;
  75. fsl,drive-strength = <MXS_DRIVE_4mA>;
  76. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  77. fsl,pull-up = <MXS_PULL_DISABLE>;
  78. };
  79. led_pins: led@0 {
  80. reg = <0>;
  81. fsl,pinmux-ids = <
  82. MX28_PAD_SAIF0_MCLK__GPIO_3_20
  83. MX28_PAD_SAIF0_LRCLK__GPIO_3_21
  84. >;
  85. fsl,drive-strength = <MXS_DRIVE_4mA>;
  86. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  87. fsl,pull-up = <MXS_PULL_DISABLE>;
  88. };
  89. qca7000_pins: qca7000@0 {
  90. reg = <0>;
  91. fsl,pinmux-ids = <
  92. MX28_PAD_AUART0_RTS__GPIO_3_3 /* Interrupt */
  93. MX28_PAD_LCD_D13__GPIO_1_13 /* QCA7K reset */
  94. MX28_PAD_LCD_D14__GPIO_1_14 /* GPIO 0 */
  95. MX28_PAD_LCD_D15__GPIO_1_15 /* GPIO 1 */
  96. MX28_PAD_LCD_D18__GPIO_1_18 /* GPIO 2 */
  97. MX28_PAD_LCD_D21__GPIO_1_21 /* GPIO 3 */
  98. >;
  99. fsl,drive-strength = <MXS_DRIVE_4mA>;
  100. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  101. fsl,pull-up = <MXS_PULL_DISABLE>;
  102. };
  103. };
  104. };
  105. apbx@80040000 {
  106. lradc@80050000 {
  107. status = "okay";
  108. };
  109. duart: serial@80074000 {
  110. pinctrl-names = "default";
  111. pinctrl-0 = <&duart_pins_a>;
  112. status = "okay";
  113. };
  114. usbphy0: usbphy@8007c000 {
  115. status = "okay";
  116. };
  117. };
  118. };
  119. ahb@80080000 {
  120. usb0: usb@80080000 {
  121. status = "okay";
  122. dr_mode = "peripheral";
  123. };
  124. mac0: ethernet@800f0000 {
  125. phy-mode = "rmii";
  126. pinctrl-names = "default";
  127. pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>;
  128. phy-supply = <&reg_3p3v>;
  129. phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
  130. phy-reset-duration = <25>;
  131. phy-handle = <&ethphy>;
  132. status = "okay";
  133. mdio {
  134. #address-cells = <1>;
  135. #size-cells = <0>;
  136. ethphy: ethernet-phy@0 {
  137. compatible = "ethernet-phy-ieee802.3-c22";
  138. reg = <0>;
  139. pinctrl-names = "default";
  140. pinctrl-0 = <&mac0_phy_int_pin>;
  141. interrupt-parent = <&gpio0>;
  142. interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
  143. max-speed = <100>;
  144. };
  145. };
  146. };
  147. };
  148. reg_3p3v: regulator-3p3v {
  149. compatible = "regulator-fixed";
  150. regulator-name = "3P3V";
  151. regulator-min-microvolt = <3300000>;
  152. regulator-max-microvolt = <3300000>;
  153. regulator-always-on;
  154. };
  155. leds {
  156. compatible = "gpio-leds";
  157. pinctrl-names = "default";
  158. pinctrl-0 = <&led_pins>;
  159. status-red {
  160. label = "duckbill:red:status";
  161. gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
  162. linux,default-trigger = "default-on";
  163. };
  164. status-green {
  165. label = "duckbill:green:status";
  166. gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
  167. linux,default-trigger = "heartbeat";
  168. };
  169. };
  170. };