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