1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Copyright (C) 2013-2014,2016 Michael Heimpold <mhei@heimpold.de>
4 * Copyright (C) 2015-2017 I2SE GmbH <info@i2se.com>
5 */
6
7/dts-v1/;
8#include <dt-bindings/gpio/gpio.h>
9#include "imx28.dtsi"
10
11/ {
12	model = "I2SE Duckbill";
13	compatible = "i2se,duckbill", "fsl,imx28";
14
15	memory@40000000 {
16		device_type = "memory";
17		reg = <0x40000000 0x08000000>;
18	};
19
20	apb@80000000 {
21		apbh@80000000 {
22			ssp0: spi@80010000 {
23				compatible = "fsl,imx28-mmc";
24				pinctrl-names = "default";
25				pinctrl-0 = <&mmc0_4bit_pins_a
26					&mmc0_cd_cfg &mmc0_sck_cfg>;
27				bus-width = <4>;
28				vmmc-supply = <&reg_3p3v>;
29				status = "okay";
30			};
31
32			ssp2: spi@80014000 {
33				compatible = "fsl,imx28-spi";
34				pinctrl-names = "default";
35				pinctrl-0 = <&spi2_pins_a>;
36				status = "okay";
37			};
38
39			pinctrl@80018000 {
40				pinctrl-names = "default";
41				pinctrl-0 = <&hog_pins_a>;
42
43				hog_pins_a: hog@0 {
44					reg = <0>;
45					fsl,pinmux-ids = <
46						MX28_PAD_LCD_D17__GPIO_1_17    /* Revision detection */
47					>;
48					fsl,drive-strength = <MXS_DRIVE_4mA>;
49					fsl,voltage = <MXS_VOLTAGE_HIGH>;
50					fsl,pull-up = <MXS_PULL_DISABLE>;
51				};
52
53				mac0_phy_reset_pin: mac0-phy-reset@0 {
54					reg = <0>;
55					fsl,pinmux-ids = <
56						MX28_PAD_SSP0_DATA7__GPIO_2_7    /* PHY Reset */
57					>;
58					fsl,drive-strength = <MXS_DRIVE_4mA>;
59					fsl,voltage = <MXS_VOLTAGE_HIGH>;
60					fsl,pull-up = <MXS_PULL_DISABLE>;
61				};
62
63				led_pins: leds@0 {
64					reg = <0>;
65					fsl,pinmux-ids = <
66						MX28_PAD_AUART1_RX__GPIO_3_4
67						MX28_PAD_AUART1_TX__GPIO_3_5
68					>;
69					fsl,drive-strength = <MXS_DRIVE_4mA>;
70					fsl,voltage = <MXS_VOLTAGE_HIGH>;
71					fsl,pull-up = <MXS_PULL_DISABLE>;
72				};
73			};
74		};
75
76		apbx@80040000 {
77			lradc@80050000 {
78				status = "okay";
79			};
80
81			i2c0: i2c@80058000 {
82				pinctrl-names = "default";
83				pinctrl-0 = <&i2c0_pins_a>;
84				status = "okay";
85			};
86
87			auart0: serial@8006a000 {
88				pinctrl-names = "default";
89				pinctrl-0 = <&auart0_2pins_a>;
90				status = "okay";
91			};
92
93			duart: serial@80074000 {
94				pinctrl-names = "default";
95				pinctrl-0 = <&duart_pins_a>;
96				status = "okay";
97			};
98
99			usbphy0: usbphy@8007c000 {
100				status = "okay";
101			};
102		};
103	};
104
105	ahb@80080000 {
106		usb0: usb@80080000 {
107			status = "okay";
108			dr_mode = "peripheral";
109		};
110
111		mac0: ethernet@800f0000 {
112			phy-mode = "rmii";
113			pinctrl-names = "default";
114			pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>;
115			phy-supply = <&reg_3p3v>;
116			phy-reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
117			phy-reset-duration = <25>;
118			status = "okay";
119		};
120	};
121
122	reg_3p3v: regulator-3p3v {
123		compatible = "regulator-fixed";
124		regulator-name = "3P3V";
125		regulator-min-microvolt = <3300000>;
126		regulator-max-microvolt = <3300000>;
127		regulator-always-on;
128	};
129
130	leds {
131		compatible = "gpio-leds";
132		pinctrl-names = "default";
133		pinctrl-0 = <&led_pins>;
134
135		status-red {
136			label = "duckbill:red:status";
137			gpios = <&gpio3 4 GPIO_ACTIVE_HIGH>;
138			linux,default-trigger = "default-on";
139		};
140
141		status-green {
142			label = "duckbill:green:status";
143			gpios = <&gpio3 5 GPIO_ACTIVE_HIGH>;
144			linux,default-trigger = "heartbeat";
145		};
146	};
147};
148