Skip to content

Commit ad296c4

Browse files
passgatShawn Guo
authored andcommitted
ARM: dts: mxs: support i.MX28 Amarula rmm board
The board includes the following resources: - 256 Mbytes NAND Flash - 128 Mbytes DRAM DDR2 - CAN - USB 2.0 high-speed/full-speed - Ethernet MAC Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> Reviewed-by: Frank Li <Frank.Li@nxp.com> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
1 parent b63ae41 commit ad296c4

2 files changed

Lines changed: 301 additions & 0 deletions

File tree

arch/arm/boot/dts/nxp/mxs/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ dtb-$(CONFIG_ARCH_MXS) += \
55
imx23-sansa.dtb \
66
imx23-stmp378x_devb.dtb \
77
imx23-xfi3.dtb \
8+
imx28-amarula-rmm.dtb \
89
imx28-apf28.dtb \
910
imx28-apf28dev.dtb \
1011
imx28-apx4devkit.dtb \
Lines changed: 300 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,300 @@
1+
// SPDX-License-Identifier: GPL-2.0
2+
/*
3+
* Copyright (C) 2025 Amarula Solutions, Dario Binacchi <dario.binacchi@amarulasolutions.com>
4+
*/
5+
6+
/dts-v1/;
7+
8+
#include "imx28.dtsi"
9+
#include <dt-bindings/gpio/gpio.h>
10+
#include <dt-bindings/interrupt-controller/irq.h>
11+
12+
/ {
13+
compatible = "amarula,imx28-rmm", "fsl,imx28";
14+
model = "Amarula i.MX28 rmm";
15+
16+
memory@40000000 {
17+
reg = <0x40000000 0x08000000>;
18+
device_type = "memory";
19+
};
20+
21+
backlight {
22+
compatible = "pwm-backlight";
23+
pwms = <&pwm 4 5000000 0>;
24+
brightness-levels = <0 255>;
25+
num-interpolated-steps = <255>;
26+
default-brightness-level = <255>;
27+
power-supply = <&reg_5v>;
28+
};
29+
30+
beeper {
31+
compatible = "pwm-beeper";
32+
pwms = <&pwm 7 100000 0>;
33+
};
34+
35+
leds {
36+
compatible = "gpio-leds";
37+
pinctrl-names = "default";
38+
pinctrl-0 = <&leds_pins>;
39+
40+
led-0 {
41+
gpios = <&gpio2 7 GPIO_ACTIVE_HIGH>;
42+
default-state = "off";
43+
};
44+
45+
led-1 {
46+
gpios = <&gpio3 16 GPIO_ACTIVE_HIGH>;
47+
default-state = "off";
48+
};
49+
50+
led-2 {
51+
gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>;
52+
default-state = "off";
53+
};
54+
};
55+
56+
reg_1v8: regulator-1v8 {
57+
compatible = "regulator-fixed";
58+
regulator-name = "1v8";
59+
regulator-min-microvolt = <1800000>;
60+
regulator-max-microvolt = <1800000>;
61+
};
62+
63+
reg_3v3: regulator-3v3 {
64+
compatible = "regulator-fixed";
65+
regulator-name = "3v3";
66+
regulator-min-microvolt = <3300000>;
67+
regulator-max-microvolt = <3300000>;
68+
regulator-always-on;
69+
};
70+
71+
reg_5v: regulator-5v {
72+
compatible = "regulator-fixed";
73+
regulator-name = "5v";
74+
regulator-min-microvolt = <5000000>;
75+
regulator-max-microvolt = <5000000>;
76+
regulator-always-on;
77+
};
78+
79+
reg_fec_3v3: regulator-fec-3v3 {
80+
compatible = "regulator-fixed";
81+
pinctrl-names = "default";
82+
pinctrl-0 = <&fec_3v3_enable_pin>;
83+
regulator-name = "fec-3v3";
84+
regulator-min-microvolt = <3300000>;
85+
regulator-max-microvolt = <3300000>;
86+
gpios = <&gpio3 27 GPIO_ACTIVE_HIGH>;
87+
enable-active-high;
88+
startup-delay-us = <300000>;
89+
vin-supply = <&reg_5v>;
90+
};
91+
92+
reg_usb0_vbus: regulator-usb0-vbus {
93+
compatible = "regulator-fixed";
94+
pinctrl-names = "default";
95+
pinctrl-0 = <&usb0_vbus_enable_pin>;
96+
regulator-name = "usb0_vbus";
97+
regulator-min-microvolt = <5000000>;
98+
regulator-max-microvolt = <5000000>;
99+
gpio = <&gpio2 5 GPIO_ACTIVE_HIGH>;
100+
enable-active-high;
101+
regulator-always-on;
102+
};
103+
104+
reg_usb1_vbus: regulator-usb1-vbus {
105+
compatible = "regulator-fixed";
106+
pinctrl-names = "default";
107+
pinctrl-0 = <&usb1_vbus_enable_pin>;
108+
regulator-name = "usb1_vbus";
109+
regulator-min-microvolt = <5000000>;
110+
regulator-max-microvolt = <5000000>;
111+
gpio = <&gpio2 6 GPIO_ACTIVE_HIGH>;
112+
enable-active-high;
113+
regulator-always-on;
114+
};
115+
};
116+
117+
&auart0 {
118+
pinctrl-names = "default";
119+
pinctrl-0 = <&auart0_2pins_a>;
120+
status = "okay";
121+
};
122+
123+
&auart1 {
124+
pinctrl-names = "default";
125+
pinctrl-0 = <&auart1_pins_a>;
126+
status = "okay";
127+
};
128+
129+
&can0 {
130+
pinctrl-names = "default";
131+
pinctrl-0 = <&can0_pins_a>;
132+
status = "okay";
133+
};
134+
135+
&duart {
136+
pinctrl-names = "default";
137+
pinctrl-0 = <&duart_pins_b>;
138+
status = "okay";
139+
};
140+
141+
&duart_pins_b {
142+
fsl,voltage = <MXS_VOLTAGE_LOW>;
143+
};
144+
145+
&gpmi {
146+
#size-cells = <0>;
147+
pinctrl-names = "default";
148+
pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
149+
status = "okay";
150+
};
151+
152+
&i2c0 {
153+
pinctrl-names = "default";
154+
pinctrl-0 = <&i2c0_pins_a>;
155+
status = "okay";
156+
157+
touchscreen: touchscreen@38 {
158+
compatible = "edt,edt-ft5306";
159+
reg = <0x38>;
160+
pinctrl-names = "default";
161+
pinctrl-0 = <&edt_ft5x06_pins &edt_ft5x06_wake_pin>;
162+
interrupt-parent = <&gpio0>;
163+
interrupts = <19 IRQ_TYPE_EDGE_RISING>;
164+
reset-gpios = <&gpio0 21 GPIO_ACTIVE_LOW>;
165+
wake-gpios = <&gpio0 18 GPIO_ACTIVE_HIGH>;
166+
};
167+
};
168+
169+
&lradc {
170+
status = "okay";
171+
};
172+
173+
&mac0 {
174+
pinctrl-names = "default";
175+
pinctrl-0 = <&mac0_pins_a>;
176+
phy-mode = "rmii";
177+
phy-supply = <&reg_fec_3v3>;
178+
phy-handle = <&ethphy>;
179+
status = "okay";
180+
181+
mdio {
182+
#address-cells = <1>;
183+
#size-cells = <0>;
184+
185+
ethphy: ethernet-phy@0 {
186+
compatible = "ethernet-phy-ieee802.3-c22";
187+
reg = <0>;
188+
max-speed = <100>;
189+
reset-gpios = <&gpio3 28 GPIO_ACTIVE_LOW>;
190+
reset-assert-us = <4000>;
191+
reset-deassert-us = <4000>;
192+
};
193+
};
194+
};
195+
196+
&pinctrl {
197+
pinctrl-names = "default";
198+
pinctrl-0 = <&hog_pins_a>;
199+
200+
edt_ft5x06_pins: edt-ft5x06@0 {
201+
reg = <0>;
202+
fsl,pinmux-ids = <
203+
MX28_PAD_GPMI_RDY1__GPIO_0_21 /* Reset */
204+
MX28_PAD_GPMI_CE3N__GPIO_0_19 /* Interrupt */
205+
>;
206+
fsl,drive-strength = <MXS_DRIVE_4mA>;
207+
fsl,pull-up = <MXS_PULL_ENABLE>;
208+
fsl,voltage = <MXS_VOLTAGE_HIGH>;
209+
};
210+
211+
edt_ft5x06_wake_pin: edt-ft5x06-wake@0 {
212+
reg = <0>;
213+
fsl,pinmux-ids = <MX28_PAD_GPMI_CE2N__GPIO_0_18>;
214+
fsl,drive-strength = <MXS_DRIVE_16mA>;
215+
fsl,pull-up = <MXS_PULL_DISABLE>;
216+
fsl,voltage = <MXS_VOLTAGE_HIGH>;
217+
};
218+
219+
fec_3v3_enable_pin: fec-3v3-enable@0 {
220+
reg = <0>;
221+
fsl,pinmux-ids = <MX28_PAD_SPDIF__GPIO_3_27>;
222+
fsl,drive-strength = <MXS_DRIVE_4mA>;
223+
fsl,pull-up = <MXS_PULL_DISABLE>;
224+
fsl,voltage = <MXS_VOLTAGE_HIGH>;
225+
};
226+
227+
hog_pins_a: hog@0 {
228+
reg = <0>;
229+
fsl,pinmux-ids = <
230+
MX28_PAD_SSP2_SS1__GPIO_2_20 /* External power */
231+
>;
232+
fsl,drive-strength = <MXS_DRIVE_4mA>;
233+
fsl,pull-up = <MXS_PULL_DISABLE>;
234+
fsl,voltage = <MXS_VOLTAGE_HIGH>;
235+
};
236+
237+
leds_pins: leds@0 {
238+
reg = <0>;
239+
fsl,pinmux-ids = <
240+
MX28_PAD_SSP0_DATA7__GPIO_2_7
241+
MX28_PAD_PWM0__GPIO_3_16
242+
MX28_PAD_PWM1__GPIO_3_17
243+
>;
244+
fsl,drive-strength = <MXS_DRIVE_4mA>;
245+
fsl,pull-up = <MXS_PULL_DISABLE>;
246+
fsl,voltage = <MXS_VOLTAGE_HIGH>;
247+
};
248+
249+
usb0_vbus_enable_pin: usb0-vbus-enable@0 {
250+
reg = <0>;
251+
fsl,pinmux-ids = <MX28_PAD_SSP0_DATA5__GPIO_2_5>;
252+
fsl,drive-strength = <MXS_DRIVE_4mA>;
253+
fsl,pull-up = <MXS_PULL_DISABLE>;
254+
fsl,voltage = <MXS_VOLTAGE_HIGH>;
255+
};
256+
257+
usb1_vbus_enable_pin: usb1-vbus-enable@0 {
258+
reg = <0>;
259+
fsl,pinmux-ids = <MX28_PAD_SSP0_DATA6__GPIO_2_6>;
260+
fsl,drive-strength = <MXS_DRIVE_4mA>;
261+
fsl,pull-up = <MXS_PULL_DISABLE>;
262+
fsl,voltage = <MXS_VOLTAGE_HIGH>;
263+
};
264+
};
265+
266+
&pwm {
267+
pinctrl-names = "default";
268+
pinctrl-0 = <&pwm4_pins_a &pwm7_pins_a>;
269+
status = "okay";
270+
};
271+
272+
/* microSD */
273+
&ssp0 {
274+
compatible = "fsl,imx28-mmc";
275+
pinctrl-names = "default";
276+
pinctrl-0 = <&mmc0_4bit_pins_a &mmc0_sck_cfg>;
277+
broken-cd;
278+
bus-width = <4>;
279+
status = "okay";
280+
};
281+
282+
&usb0 {
283+
dr_mode = "host";
284+
vbus-supply = <&reg_usb0_vbus>;
285+
status = "okay";
286+
};
287+
288+
&usb1 {
289+
dr_mode = "host";
290+
vbus-supply = <&reg_usb1_vbus>;
291+
status = "okay";
292+
};
293+
294+
&usbphy0 {
295+
status = "okay";
296+
};
297+
298+
&usbphy1 {
299+
status = "okay";
300+
};

0 commit comments

Comments
 (0)