1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright 2012 Armadeus Systems - <support@armadeus.com>
4 */
5
6/* APF28Dev is a docking board for the APF28 SOM */
7#include "imx28-apf28.dts"
8
9/ {
10	model = "Armadeus Systems APF28Dev docking/development board";
11	compatible = "armadeus,imx28-apf28dev", "armadeus,imx28-apf28", "fsl,imx28";
12
13	regulators {
14		compatible = "simple-bus";
15		#address-cells = <1>;
16		#size-cells = <0>;
17
18		reg_usb0_vbus: regulator@0 {
19			compatible = "regulator-fixed";
20			reg = <0>;
21			regulator-name = "usb0_vbus";
22			regulator-min-microvolt = <5000000>;
23			regulator-max-microvolt = <5000000>;
24			gpio = <&gpio1 23 1>;
25			enable-active-high;
26		};
27
28		reg_can0_vcc: regulator@1 {
29			compatible = "regulator-fixed";
30			reg = <1>;
31			regulator-name = "can0_vcc";
32			regulator-min-microvolt = <5000000>;
33			regulator-max-microvolt = <5000000>;
34		};
35	};
36
37	leds {
38		compatible = "gpio-leds";
39
40		user {
41			label = "Heartbeat";
42			gpios = <&gpio0 21 0>;
43			linux,default-trigger = "heartbeat";
44		};
45	};
46
47	backlight {
48		compatible = "pwm-backlight";
49
50		pwms = <&pwm 3 191000>;
51		brightness-levels = <0 4 8 16 32 64 128 255>;
52		default-brightness-level = <6>;
53	};
54
55	gpio-keys {
56		compatible = "gpio-keys";
57
58		user-button {
59			label = "User button";
60			gpios = <&gpio0 17 GPIO_ACTIVE_LOW>;
61			linux,code = <0x100>;
62			wakeup-source;
63		};
64	};
65};
66
67&auart0 {
68	pinctrl-names = "default";
69	pinctrl-0 = <&auart0_pins_a>;
70	uart-has-rtscts;
71	status = "okay";
72};
73
74&can0 {
75	pinctrl-names = "default";
76	pinctrl-0 = <&can0_pins_a>;
77	xceiver-supply = <&reg_can0_vcc>;
78	status = "okay";
79};
80
81&i2c0 {
82	pinctrl-names = "default";
83	pinctrl-0 = <&i2c0_pins_a>;
84	status = "okay";
85};
86
87&lcdif {
88	pinctrl-names = "default";
89	pinctrl-0 = <&lcdif_16bit_pins_a
90		     &lcdif_pins_apf28dev>;
91	display = <&display0>;
92	status = "okay";
93
94	display0: display0 {
95		bits-per-pixel = <16>;
96		bus-width = <16>;
97
98		display-timings {
99			native-mode = <&timing0>;
100			timing0: timing0 {
101				clock-frequency = <33000033>;
102				hactive = <800>;
103				vactive = <480>;
104				hback-porch = <96>;
105				hfront-porch = <96>;
106				vback-porch = <20>;
107				vfront-porch = <21>;
108				hsync-len = <64>;
109				vsync-len = <4>;
110				hsync-active = <1>;
111				vsync-active = <1>;
112				de-active = <1>;
113				pixelclk-active = <0>;
114			};
115		};
116	};
117};
118
119&lradc {
120	fsl,lradc-touchscreen-wires = <4>;
121	status = "okay";
122};
123
124&mac1 {
125	phy-mode = "rmii";
126	pinctrl-names = "default";
127	pinctrl-0 = <&mac1_pins_a>;
128	phy-reset-gpios = <&gpio1 29 GPIO_ACTIVE_LOW>;
129	status = "okay";
130};
131
132&pinctrl {
133	pinctrl-names = "default";
134	pinctrl-0 = <&hog_pins_apf28dev>;
135
136	hog_pins_apf28dev: hog@0 {
137		reg = <0>;
138		fsl,pinmux-ids = <
139			MX28_PAD_LCD_D16__GPIO_1_16
140			MX28_PAD_LCD_D17__GPIO_1_17
141			MX28_PAD_LCD_D18__GPIO_1_18
142			MX28_PAD_LCD_D19__GPIO_1_19
143			MX28_PAD_LCD_D20__GPIO_1_20
144			MX28_PAD_LCD_D21__GPIO_1_21
145			MX28_PAD_LCD_D22__GPIO_1_22
146			MX28_PAD_GPMI_CE1N__GPIO_0_17
147		>;
148		fsl,drive-strength = <MXS_DRIVE_4mA>;
149		fsl,voltage = <MXS_VOLTAGE_HIGH>;
150		fsl,pull-up = <MXS_PULL_DISABLE>;
151	};
152
153	lcdif_pins_apf28dev: lcdif-apf28dev@0 {
154		reg = <0>;
155		fsl,pinmux-ids = <
156			MX28_PAD_LCD_RD_E__LCD_VSYNC
157			MX28_PAD_LCD_WR_RWN__LCD_HSYNC
158			MX28_PAD_LCD_RS__LCD_DOTCLK
159			MX28_PAD_LCD_CS__LCD_ENABLE
160		>;
161		fsl,drive-strength = <MXS_DRIVE_4mA>;
162		fsl,voltage = <MXS_VOLTAGE_HIGH>;
163		fsl,pull-up = <MXS_PULL_DISABLE>;
164	};
165
166	usb0_otg_apf28dev: otg-apf28dev@0 {
167		reg = <0>;
168		fsl,pinmux-ids = <
169			MX28_PAD_LCD_D23__GPIO_1_23
170		>;
171		fsl,drive-strength = <MXS_DRIVE_4mA>;
172		fsl,voltage = <MXS_VOLTAGE_HIGH>;
173		fsl,pull-up = <MXS_PULL_DISABLE>;
174	};
175};
176
177&pwm {
178	pinctrl-names = "default";
179	pinctrl-0 = <&pwm3_pins_a &pwm4_pins_a>;
180	status = "okay";
181};
182
183&ssp0 {
184	compatible = "fsl,imx28-mmc";
185	pinctrl-names = "default";
186	pinctrl-0 = <&mmc0_4bit_pins_a
187		     &mmc0_cd_cfg &mmc0_sck_cfg>;
188	bus-width = <4>;
189	status = "okay";
190};
191
192&ssp2 {
193	compatible = "fsl,imx28-spi";
194	pinctrl-names = "default";
195	pinctrl-0 = <&spi2_pins_a>;
196	status = "okay";
197};
198
199&usb0 {
200	pinctrl-names = "default";
201	pinctrl-0 = <&usb0_otg_apf28dev
202		     &usb0_id_pins_b>;
203	vbus-supply = <&reg_usb0_vbus>;
204	status = "okay";
205};
206
207&usb1 {
208	status = "okay";
209};
210
211&usbphy0 {
212	status = "okay";
213};
214
215&usbphy1 {
216	status = "okay";
217};
218