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