GNU Linux-libre 4.19.264-gnu1
[releases.git] / arch / arm / boot / dts / imx28-eukrea-mbmx28lc.dtsi
1 /*
2  * Copyright 2013 Eukréa Electromatique <eric@eukrea.com>
3  * Copyright 2013 Eukréa Electromatique <denis@eukrea.com>
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  */
14
15 #include <dt-bindings/input/input.h>
16 #include <dt-bindings/gpio/gpio.h>
17 #include "imx28.dtsi"
18
19 / {
20         model = "Eukrea Electromatique MBMX28LC";
21         compatible = "eukrea,mbmx28lc", "fsl,imx28";
22
23         backlight {
24                 compatible = "pwm-backlight";
25                 pwms = <&pwm 4 1000000>;
26                 brightness-levels = <0 25 50 75 100 125 150 175 200 225 255>;
27                 default-brightness-level = <10>;
28         };
29
30         button-sw3 {
31                 compatible = "gpio-keys";
32                 pinctrl-names = "default";
33                 pinctrl-0 = <&gpio_button_sw3_pins_mbmx28lc>;
34
35                 sw3 {
36                         label = "SW3";
37                         gpios = <&gpio1 21 GPIO_ACTIVE_LOW>;
38                         linux,code = <BTN_MISC>;
39                         wakeup-source;
40                 };
41         };
42
43         button-sw4 {
44                 compatible = "gpio-keys";
45                 pinctrl-names = "default";
46                 pinctrl-0 = <&gpio_button_sw4_pins_mbmx28lc>;
47
48                 sw4 {
49                         label = "SW4";
50                         gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;
51                         linux,code = <BTN_MISC>;
52                         wakeup-source;
53                 };
54         };
55
56         led-d6 {
57                 compatible = "gpio-leds";
58                 pinctrl-names = "default";
59                 pinctrl-0 = <&led_d6_pins_mbmx28lc>;
60
61                 led1 {
62                         label = "d6";
63                         gpios = <&gpio1 23 GPIO_ACTIVE_LOW>;
64                         linux,default-trigger = "heartbeat";
65                 };
66         };
67
68         led-d7 {
69                 compatible = "gpio-leds";
70                 pinctrl-names = "default";
71                 pinctrl-0 = <&led_d7_pins_mbmx28lc>;
72
73                 led1 {
74                         label = "d7";
75                         gpios = <&gpio1 22 GPIO_ACTIVE_LOW>;
76                         linux,default-trigger = "default-on";
77                 };
78         };
79
80         regulators {
81                 compatible = "simple-bus";
82                 #address-cells = <1>;
83                 #size-cells = <0>;
84
85                 reg_3p3v: regulator@0 {
86                         compatible = "regulator-fixed";
87                         reg = <0>;
88                         regulator-name = "3P3V";
89                         regulator-min-microvolt = <3300000>;
90                         regulator-max-microvolt = <3300000>;
91                         regulator-always-on;
92                 };
93
94                 reg_lcd_3v3: regulator@1 {
95                         compatible = "regulator-fixed";
96                         reg = <1>;
97                         pinctrl-names = "default";
98                         pinctrl-0 = <&reg_lcd_3v3_pins_mbmx28lc>;
99                         regulator-name = "lcd-3v3";
100                         regulator-min-microvolt = <3300000>;
101                         regulator-max-microvolt = <3300000>;
102                         gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;
103                         enable-active-high;
104                 };
105
106                 reg_usb0_vbus: regulator@2 {
107                         compatible = "regulator-fixed";
108                         reg = <2>;
109                         pinctrl-names = "default";
110                         pinctrl-0 = <&reg_usb0_vbus_pins_mbmx28lc>;
111                         regulator-name = "usb0_vbus";
112                         regulator-min-microvolt = <5000000>;
113                         regulator-max-microvolt = <5000000>;
114                         gpio = <&gpio1 18 GPIO_ACTIVE_HIGH>;
115                         enable-active-high;
116                 };
117
118                 reg_usb1_vbus: regulator@3 {
119                         compatible = "regulator-fixed";
120                         reg = <3>;
121                         pinctrl-names = "default";
122                         pinctrl-0 = <&reg_usb1_vbus_pins_mbmx28lc>;
123                         regulator-name = "usb1_vbus";
124                         regulator-min-microvolt = <5000000>;
125                         regulator-max-microvolt = <5000000>;
126                         gpio = <&gpio1 19 GPIO_ACTIVE_HIGH>;
127                         enable-active-high;
128                 };
129         };
130
131         sound {
132                 compatible = "fsl,imx28-mbmx28lc-sgtl5000",
133                              "fsl,mxs-audio-sgtl5000";
134                 model = "imx28-mbmx28lc-sgtl5000";
135                 saif-controllers = <&saif0 &saif1>;
136                 audio-codec = <&sgtl5000>;
137         };
138 };
139
140 &duart {
141         pinctrl-names = "default";
142         pinctrl-0 = <&duart_4pins_a>;
143         status = "okay";
144 };
145
146 &i2c0 {
147         pinctrl-names = "default";
148         pinctrl-0 = <&i2c0_pins_a>;
149         status = "okay";
150
151         sgtl5000: codec@a {
152                 compatible = "fsl,sgtl5000";
153                 reg = <0x0a>;
154                 #sound-dai-cells = <0>;
155                 VDDA-supply = <&reg_3p3v>;
156                 VDDIO-supply = <&reg_3p3v>;
157                 clocks = <&saif0>;
158         };
159 };
160
161 &lcdif {
162         pinctrl-names = "default";
163         pinctrl-0 = <&lcdif_18bit_pins_a &lcdif_pins_mbmx28lc>;
164         lcd-supply = <&reg_lcd_3v3>;
165         display = <&display0>;
166         status = "okay";
167
168         display0: display0 {
169                 model = "43WVF1G-0";
170                 bits-per-pixel = <16>;
171                 bus-width = <18>;
172
173                 display-timings {
174                         native-mode = <&timing0>;
175                         timing0: timing0 {
176                                 clock-frequency = <9072000>;
177                                 hactive = <480>;
178                                 vactive = <272>;
179                                 hback-porch = <10>;
180                                 hfront-porch = <5>;
181                                 vback-porch = <8>;
182                                 vfront-porch = <8>;
183                                 hsync-len = <40>;
184                                 vsync-len = <10>;
185                                 hsync-active = <0>;
186                                 vsync-active = <0>;
187                                 de-active = <1>;
188                                 pixelclk-active = <1>;
189                         };
190                 };
191         };
192 };
193
194 &lradc {
195         fsl,lradc-touchscreen-wires = <4>;
196         status = "okay";
197 };
198
199 &pinctrl {
200         gpio_button_sw3_pins_mbmx28lc: gpio-button-sw3-mbmx28lc@0 {
201                 reg = <0>;
202                 fsl,pinmux-ids = <
203                         MX28_PAD_LCD_D21__GPIO_1_21
204                 >;
205                 fsl,drive-strength = <MXS_DRIVE_4mA>;
206                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
207                 fsl,pull-up = <MXS_PULL_DISABLE>;
208         };
209
210         gpio_button_sw4_pins_mbmx28lc: gpio-button-sw4-mbmx28lc@0 {
211                 reg = <0>;
212                 fsl,pinmux-ids = <
213                         MX28_PAD_LCD_D20__GPIO_1_20
214                 >;
215                 fsl,drive-strength = <MXS_DRIVE_4mA>;
216                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
217                 fsl,pull-up = <MXS_PULL_DISABLE>;
218         };
219
220         lcdif_pins_mbmx28lc: lcdif-mbmx28lc@0 {
221                 reg = <0>;
222                 fsl,pinmux-ids = <
223                         MX28_PAD_LCD_VSYNC__LCD_VSYNC
224                         MX28_PAD_LCD_HSYNC__LCD_HSYNC
225                         MX28_PAD_LCD_DOTCLK__LCD_DOTCLK
226                         MX28_PAD_LCD_ENABLE__LCD_ENABLE
227                 >;
228                 fsl,drive-strength = <MXS_DRIVE_4mA>;
229                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
230                 fsl,pull-up = <MXS_PULL_DISABLE>;
231         };
232
233         led_d6_pins_mbmx28lc: led-d6-mbmx28lc@0 {
234                 reg = <0>;
235                 fsl,pinmux-ids = <
236                         MX28_PAD_LCD_D23__GPIO_1_23
237                 >;
238                 fsl,drive-strength = <MXS_DRIVE_4mA>;
239                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
240                 fsl,pull-up = <MXS_PULL_DISABLE>;
241         };
242
243         led_d7_pins_mbmx28lc: led-d7-mbmx28lc@0 {
244                 reg = <0>;
245                 fsl,pinmux-ids = <
246                         MX28_PAD_LCD_D22__GPIO_1_22
247                 >;
248                 fsl,drive-strength = <MXS_DRIVE_4mA>;
249                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
250                 fsl,pull-up = <MXS_PULL_DISABLE>;
251         };
252
253         reg_lcd_3v3_pins_mbmx28lc: lcd-3v3-mbmx28lc@0 {
254                 reg = <0>;
255                 fsl,pinmux-ids = <
256                         MX28_PAD_LCD_RESET__GPIO_3_30
257                 >;
258                 fsl,drive-strength = <MXS_DRIVE_4mA>;
259                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
260                 fsl,pull-up = <MXS_PULL_DISABLE>;
261         };
262
263         reg_usb0_vbus_pins_mbmx28lc: reg-usb0-vbus-mbmx28lc@0 {
264                 reg = <0>;
265                 fsl,pinmux-ids = <
266                         MX28_PAD_LCD_D18__GPIO_1_18
267                 >;
268                 fsl,drive-strength = <MXS_DRIVE_4mA>;
269                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
270                 fsl,pull-up = <MXS_PULL_DISABLE>;
271         };
272
273         reg_usb1_vbus_pins_mbmx28lc: reg-usb1-vbus-mbmx28lc@0 {
274                 reg = <0>;
275                 fsl,pinmux-ids = <
276                         MX28_PAD_LCD_D19__GPIO_1_19
277                 >;
278                 fsl,drive-strength = <MXS_DRIVE_4mA>;
279                 fsl,voltage = <MXS_VOLTAGE_HIGH>;
280                 fsl,pull-up = <MXS_PULL_DISABLE>;
281         };
282 };
283
284 &pwm {
285         pinctrl-names = "default";
286         pinctrl-0 = <&pwm4_pins_a>;
287         status = "okay";
288 };
289
290 &saif0 {
291         pinctrl-names = "default";
292         pinctrl-0 = <&saif0_pins_a>;
293         status = "okay";
294 };
295
296 &saif1 {
297         pinctrl-names = "default";
298         pinctrl-0 = <&saif1_pins_a>;
299         fsl,saif-master = <&saif0>;
300         status = "okay";
301 };
302
303 &ssp0 {
304         compatible = "fsl,imx28-mmc";
305         pinctrl-names = "default";
306         pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_cd_cfg &mmc0_sck_cfg>;
307         bus-width = <4>;
308         cd-inverted;
309         status = "okay";
310 };
311
312 &usb0 {
313         disable-over-current;
314         vbus-supply = <&reg_usb0_vbus>;
315         status = "okay";
316         pinctrl-names = "default";
317         pinctrl-0 = <&usb0_id_pins_b>;
318 };
319
320 &usb1 {
321         vbus-supply = <&reg_usb1_vbus>;
322         status = "okay";
323 };
324
325 &usbphy0 {
326         status = "okay";
327 };
328
329 &usbphy1 {
330         status = "okay";
331 };