0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003 * Copyright (C) 2015-2017 I2SE GmbH <info@i2se.com>
0004 * Copyright (C) 2016 Michael Heimpold <mhei@heimpold.de>
0005 */
0006
0007 /dts-v1/;
0008 #include <dt-bindings/interrupt-controller/irq.h>
0009 #include <dt-bindings/input/input.h>
0010 #include <dt-bindings/gpio/gpio.h>
0011 #include "imx28.dtsi"
0012
0013 / {
0014 model = "I2SE Duckbill 2 EnOcean";
0015 compatible = "i2se,duckbill-2-enocean", "i2se,duckbill-2", "fsl,imx28";
0016
0017 memory@40000000 {
0018 device_type = "memory";
0019 reg = <0x40000000 0x08000000>;
0020 };
0021
0022 apb@80000000 {
0023 apbh@80000000 {
0024 ssp0: spi@80010000 {
0025 compatible = "fsl,imx28-mmc";
0026 pinctrl-names = "default";
0027 pinctrl-0 = <&mmc0_8bit_pins_a
0028 &mmc0_cd_cfg &mmc0_sck_cfg>;
0029 bus-width = <8>;
0030 vmmc-supply = <®_3p3v>;
0031 status = "okay";
0032 non-removable;
0033 };
0034
0035 ssp2: spi@80014000 {
0036 compatible = "fsl,imx28-mmc";
0037 pinctrl-names = "default";
0038 pinctrl-0 = <&mmc2_4bit_pins_b
0039 &mmc2_cd_cfg &mmc2_sck_cfg_b>;
0040 bus-width = <4>;
0041 vmmc-supply = <®_3p3v>;
0042 status = "okay";
0043 };
0044
0045 pinctrl@80018000 {
0046 pinctrl-names = "default";
0047 pinctrl-0 = <&hog_pins_a>;
0048
0049 hog_pins_a: hog@0 {
0050 reg = <0>;
0051 fsl,pinmux-ids = <
0052 MX28_PAD_LCD_D17__GPIO_1_17 /* Revision detection */
0053 >;
0054 fsl,drive-strength = <MXS_DRIVE_4mA>;
0055 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0056 fsl,pull-up = <MXS_PULL_DISABLE>;
0057 };
0058
0059 mac0_phy_reset_pin: mac0-phy-reset@0 {
0060 reg = <0>;
0061 fsl,pinmux-ids = <
0062 MX28_PAD_GPMI_ALE__GPIO_0_26 /* PHY Reset */
0063 >;
0064 fsl,drive-strength = <MXS_DRIVE_4mA>;
0065 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0066 fsl,pull-up = <MXS_PULL_DISABLE>;
0067 };
0068
0069 mac0_phy_int_pin: mac0-phy-int@0 {
0070 reg = <0>;
0071 fsl,pinmux-ids = <
0072 MX28_PAD_GPMI_D07__GPIO_0_7 /* PHY Interrupt */
0073 >;
0074 fsl,drive-strength = <MXS_DRIVE_4mA>;
0075 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0076 fsl,pull-up = <MXS_PULL_DISABLE>;
0077 };
0078
0079 led_pins: leds@0 {
0080 reg = <0>;
0081 fsl,pinmux-ids = <
0082 MX28_PAD_SAIF0_MCLK__GPIO_3_20
0083 MX28_PAD_SAIF0_LRCLK__GPIO_3_21
0084 MX28_PAD_AUART0_CTS__GPIO_3_2
0085 MX28_PAD_I2C0_SCL__GPIO_3_24
0086 MX28_PAD_I2C0_SDA__GPIO_3_25
0087 >;
0088 fsl,drive-strength = <MXS_DRIVE_4mA>;
0089 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0090 fsl,pull-up = <MXS_PULL_DISABLE>;
0091 };
0092
0093 enocean_button: enocean-button@0 {
0094 reg = <0>;
0095 fsl,pinmux-ids = <
0096 MX28_PAD_AUART0_RTS__GPIO_3_3
0097 >;
0098 fsl,drive-strength = <MXS_DRIVE_4mA>;
0099 fsl,voltage = <MXS_VOLTAGE_HIGH>;
0100 fsl,pull-up = <MXS_PULL_DISABLE>;
0101 };
0102 };
0103 };
0104
0105 apbx@80040000 {
0106 lradc@80050000 {
0107 status = "okay";
0108 };
0109
0110 auart0: serial@8006a000 {
0111 pinctrl-names = "default";
0112 pinctrl-0 = <&auart0_2pins_a>;
0113 status = "okay";
0114 };
0115
0116 duart: serial@80074000 {
0117 pinctrl-names = "default";
0118 pinctrl-0 = <&duart_pins_a>;
0119 status = "okay";
0120 };
0121
0122 usbphy0: usbphy@8007c000 {
0123 status = "okay";
0124 };
0125 };
0126 };
0127
0128 ahb@80080000 {
0129 usb0: usb@80080000 {
0130 status = "okay";
0131 dr_mode = "peripheral";
0132 };
0133
0134 mac0: ethernet@800f0000 {
0135 phy-mode = "rmii";
0136 pinctrl-names = "default";
0137 pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>;
0138 phy-supply = <®_3p3v>;
0139 phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>;
0140 phy-reset-duration = <25>;
0141 phy-handle = <ðphy>;
0142 status = "okay";
0143
0144 mdio {
0145 #address-cells = <1>;
0146 #size-cells = <0>;
0147
0148 ethphy: ethernet-phy@0 {
0149 compatible = "ethernet-phy-ieee802.3-c22";
0150 reg = <0>;
0151 pinctrl-names = "default";
0152 pinctrl-0 = <&mac0_phy_int_pin>;
0153 interrupt-parent = <&gpio0>;
0154 interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
0155 max-speed = <100>;
0156 };
0157 };
0158 };
0159 };
0160
0161 reg_3p3v: regulator-3p3v {
0162 compatible = "regulator-fixed";
0163 regulator-name = "3P3V";
0164 regulator-min-microvolt = <3300000>;
0165 regulator-max-microvolt = <3300000>;
0166 regulator-always-on;
0167 };
0168
0169 leds {
0170 compatible = "gpio-leds";
0171 pinctrl-names = "default";
0172 pinctrl-0 = <&led_pins>;
0173
0174 status-red {
0175 label = "duckbill:red:status";
0176 gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>;
0177 linux,default-trigger = "default-on";
0178 };
0179
0180 status-green {
0181 label = "duckbill:green:status";
0182 gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>;
0183 linux,default-trigger = "heartbeat";
0184 };
0185
0186 enocean-blue {
0187 label = "duckbill:blue:enocean";
0188 gpios = <&gpio3 24 GPIO_ACTIVE_LOW>;
0189 };
0190
0191 enocean-red {
0192 label = "duckbill:red:enocean";
0193 gpios = <&gpio3 25 GPIO_ACTIVE_LOW>;
0194 };
0195
0196 enocean-green {
0197 label = "duckbill:green:enocean";
0198 gpios = <&gpio3 2 GPIO_ACTIVE_LOW>;
0199 };
0200 };
0201
0202 gpio-keys {
0203 compatible = "gpio-keys";
0204 pinctrl-names = "default";
0205 pinctrl-0 = <&enocean_button>;
0206
0207 enocean {
0208 label = "EnOcean";
0209 linux,code = <KEY_NEW>;
0210 gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>;
0211 };
0212 };
0213 };