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/gpio/gpio.h>
10#include "imx28.dtsi"
11
12/ {
13	model = "I2SE Duckbill 2";
14	compatible = "i2se,duckbill-2", "fsl,imx28";
15
16	memory@40000000 {
17		device_type = "memory";
18		reg = <0x40000000 0x08000000>;
19	};
20
21	reg_3p3v: regulator-3p3v {
22		compatible = "regulator-fixed";
23		regulator-name = "3P3V";
24		regulator-min-microvolt = <3300000>;
25		regulator-max-microvolt = <3300000>;
26		regulator-always-on;
27	};
28
29	leds {
30		compatible = "gpio-leds";
31		pinctrl-names = "default";
32		pinctrl-0 = <&led_pins>;
33
34		status-red {
35			label = "duckbill:red:status";
36			gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
37			linux,default-trigger = "default-on";
38		};
39
40		status-green {
41			label = "duckbill:green:status";
42			gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
43			linux,default-trigger = "heartbeat";
44		};
45	};
46};
47
48&auart0 {
49	pinctrl-names = "default";
50	pinctrl-0 = <&auart0_2pins_a>;
51	status = "okay";
52};
53
54&duart {
55	pinctrl-names = "default";
56	pinctrl-0 = <&duart_pins_a>;
57	status = "okay";
58};
59
60&i2c0 {
61	pinctrl-names = "default";
62	pinctrl-0 = <&i2c0_pins_a>;
63	status = "okay";
64};
65
66&lradc {
67	status = "okay";
68};
69
70&mac0 {
71	phy-mode = "rmii";
72	pinctrl-names = "default";
73	pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>;
74	phy-supply = <&reg_3p3v>;
75	phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
76	phy-reset-duration = <25>;
77	phy-handle = <&ethphy>;
78	status = "okay";
79
80	mdio {
81		#address-cells = <1>;
82		#size-cells = <0>;
83
84		ethphy: ethernet-phy@0 {
85			compatible = "ethernet-phy-ieee802.3-c22";
86			reg = <0>;
87			pinctrl-names = "default";
88			pinctrl-0 = <&mac0_phy_int_pin>;
89			interrupt-parent = <&gpio0>;
90			interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
91			max-speed = <100>;
92		};
93	};
94};
95
96&pinctrl {
97	pinctrl-names = "default";
98	pinctrl-0 = <&hog_pins_a>;
99
100	hog_pins_a: hog@0 {
101		reg = <0>;
102		fsl,pinmux-ids = <
103			MX28_PAD_LCD_D17__GPIO_1_17    /* Revision detection */
104		>;
105		fsl,drive-strength = <MXS_DRIVE_4mA>;
106		fsl,voltage = <MXS_VOLTAGE_HIGH>;
107		fsl,pull-up = <MXS_PULL_DISABLE>;
108	};
109
110	mac0_phy_reset_pin: mac0-phy-reset@0 {
111		reg = <0>;
112		fsl,pinmux-ids = <
113			MX28_PAD_GPMI_ALE__GPIO_0_26    /* PHY Reset */
114		>;
115		fsl,drive-strength = <MXS_DRIVE_4mA>;
116		fsl,voltage = <MXS_VOLTAGE_HIGH>;
117		fsl,pull-up = <MXS_PULL_DISABLE>;
118	};
119
120	mac0_phy_int_pin: mac0-phy-int@0 {
121		reg = <0>;
122		fsl,pinmux-ids = <
123			MX28_PAD_GPMI_D07__GPIO_0_7    /* PHY Interrupt */
124		>;
125		fsl,drive-strength = <MXS_DRIVE_4mA>;
126		fsl,voltage = <MXS_VOLTAGE_HIGH>;
127		fsl,pull-up = <MXS_PULL_DISABLE>;
128	};
129
130	led_pins: leds@0 {
131		reg = <0>;
132		fsl,pinmux-ids = <
133			MX28_PAD_SAIF0_MCLK__GPIO_3_20
134			MX28_PAD_SAIF0_LRCLK__GPIO_3_21
135		>;
136		fsl,drive-strength = <MXS_DRIVE_4mA>;
137		fsl,voltage = <MXS_VOLTAGE_HIGH>;
138		fsl,pull-up = <MXS_PULL_DISABLE>;
139	};
140};
141
142&ssp0 {
143	compatible = "fsl,imx28-mmc";
144	pinctrl-names = "default";
145	pinctrl-0 = <&mmc0_8bit_pins_a
146		&mmc0_cd_cfg &mmc0_sck_cfg>;
147	bus-width = <8>;
148	vmmc-supply = <&reg_3p3v>;
149	status = "okay";
150	non-removable;
151};
152
153&ssp2 {
154	compatible = "fsl,imx28-mmc";
155	pinctrl-names = "default";
156	pinctrl-0 = <&mmc2_4bit_pins_b
157		&mmc2_cd_cfg &mmc2_sck_cfg_b>;
158	bus-width = <4>;
159	vmmc-supply = <&reg_3p3v>;
160	status = "okay";
161};
162
163&usb0 {
164	status = "okay";
165	dr_mode = "peripheral";
166};
167
168&usbphy0 {
169	status = "okay";
170};
171