| /* | 
 |  * Copyright (C) 2015-2017 I2SE GmbH <info@i2se.com> | 
 |  * Copyright (C) 2016 Michael Heimpold <mhei@heimpold.de> | 
 |  * | 
 |  * The code contained herein is licensed under the GNU General Public | 
 |  * License. You may obtain a copy of the GNU General Public License | 
 |  * Version 2 or later at the following locations: | 
 |  * | 
 |  * http://www.opensource.org/licenses/gpl-license.html | 
 |  * http://www.gnu.org/copyleft/gpl.html | 
 |  */ | 
 |  | 
 | /dts-v1/; | 
 | #include <dt-bindings/interrupt-controller/irq.h> | 
 | #include <dt-bindings/input/input.h> | 
 | #include <dt-bindings/gpio/gpio.h> | 
 | #include "imx28.dtsi" | 
 |  | 
 | / { | 
 | 	model = "I2SE Duckbill 2 EnOcean"; | 
 | 	compatible = "i2se,duckbill-2-enocean", "i2se,duckbill-2", "fsl,imx28"; | 
 |  | 
 | 	memory@40000000 { | 
 | 		reg = <0x40000000 0x08000000>; | 
 | 	}; | 
 |  | 
 | 	apb@80000000 { | 
 | 		apbh@80000000 { | 
 | 			ssp0: spi@80010000 { | 
 | 				compatible = "fsl,imx28-mmc"; | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&mmc0_8bit_pins_a | 
 | 					&mmc0_cd_cfg &mmc0_sck_cfg>; | 
 | 				bus-width = <8>; | 
 | 				vmmc-supply = <®_3p3v>; | 
 | 				status = "okay"; | 
 | 				non-removable; | 
 | 			}; | 
 |  | 
 | 			ssp2: spi@80014000 { | 
 | 				compatible = "fsl,imx28-mmc"; | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&mmc2_4bit_pins_b | 
 | 					&mmc2_cd_cfg &mmc2_sck_cfg_b>; | 
 | 				bus-width = <4>; | 
 | 				vmmc-supply = <®_3p3v>; | 
 | 				status = "okay"; | 
 | 			}; | 
 |  | 
 | 			pinctrl@80018000 { | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&hog_pins_a>; | 
 |  | 
 | 				hog_pins_a: hog@0 { | 
 | 					reg = <0>; | 
 | 					fsl,pinmux-ids = < | 
 | 						MX28_PAD_LCD_D17__GPIO_1_17    /* Revision detection */ | 
 | 					>; | 
 | 					fsl,drive-strength = <MXS_DRIVE_4mA>; | 
 | 					fsl,voltage = <MXS_VOLTAGE_HIGH>; | 
 | 					fsl,pull-up = <MXS_PULL_DISABLE>; | 
 | 				}; | 
 |  | 
 | 				mac0_phy_reset_pin: mac0-phy-reset@0 { | 
 | 					reg = <0>; | 
 | 					fsl,pinmux-ids = < | 
 | 						MX28_PAD_GPMI_ALE__GPIO_0_26    /* PHY Reset */ | 
 | 					>; | 
 | 					fsl,drive-strength = <MXS_DRIVE_4mA>; | 
 | 					fsl,voltage = <MXS_VOLTAGE_HIGH>; | 
 | 					fsl,pull-up = <MXS_PULL_DISABLE>; | 
 | 				}; | 
 |  | 
 | 				mac0_phy_int_pin: mac0-phy-int@0 { | 
 | 					reg = <0>; | 
 | 					fsl,pinmux-ids = < | 
 | 						MX28_PAD_GPMI_D07__GPIO_0_7    /* PHY Interrupt */ | 
 | 					>; | 
 | 					fsl,drive-strength = <MXS_DRIVE_4mA>; | 
 | 					fsl,voltage = <MXS_VOLTAGE_HIGH>; | 
 | 					fsl,pull-up = <MXS_PULL_DISABLE>; | 
 | 				}; | 
 |  | 
 | 				led_pins: leds@0 { | 
 | 					reg = <0>; | 
 | 					fsl,pinmux-ids = < | 
 | 						MX28_PAD_SAIF0_MCLK__GPIO_3_20 | 
 | 						MX28_PAD_SAIF0_LRCLK__GPIO_3_21 | 
 | 						MX28_PAD_AUART0_CTS__GPIO_3_2 | 
 | 						MX28_PAD_I2C0_SCL__GPIO_3_24 | 
 | 						MX28_PAD_I2C0_SDA__GPIO_3_25 | 
 | 					>; | 
 | 					fsl,drive-strength = <MXS_DRIVE_4mA>; | 
 | 					fsl,voltage = <MXS_VOLTAGE_HIGH>; | 
 | 					fsl,pull-up = <MXS_PULL_DISABLE>; | 
 | 				}; | 
 |  | 
 | 				enocean_button: enocean-button@0 { | 
 | 					reg = <0>; | 
 | 					fsl,pinmux-ids = < | 
 | 						MX28_PAD_AUART0_RTS__GPIO_3_3 | 
 | 					>; | 
 | 					fsl,drive-strength = <MXS_DRIVE_4mA>; | 
 | 					fsl,voltage = <MXS_VOLTAGE_HIGH>; | 
 | 					fsl,pull-up = <MXS_PULL_DISABLE>; | 
 | 				}; | 
 | 			}; | 
 | 		}; | 
 |  | 
 | 		apbx@80040000 { | 
 | 			lradc@80050000 { | 
 | 				status = "okay"; | 
 | 			}; | 
 |  | 
 | 			auart0: serial@8006a000 { | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&auart0_2pins_a>; | 
 | 				status = "okay"; | 
 | 			}; | 
 |  | 
 | 			duart: serial@80074000 { | 
 | 				pinctrl-names = "default"; | 
 | 				pinctrl-0 = <&duart_pins_a>; | 
 | 				status = "okay"; | 
 | 			}; | 
 |  | 
 | 			usbphy0: usbphy@8007c000 { | 
 | 				status = "okay"; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	ahb@80080000 { | 
 | 		usb0: usb@80080000 { | 
 | 			status = "okay"; | 
 | 			dr_mode = "peripheral"; | 
 | 		}; | 
 |  | 
 | 		mac0: ethernet@800f0000 { | 
 | 			phy-mode = "rmii"; | 
 | 			pinctrl-names = "default"; | 
 | 			pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>; | 
 | 			phy-supply = <®_3p3v>; | 
 | 			phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>; | 
 | 			phy-reset-duration = <25>; | 
 | 			phy-handle = <ðphy>; | 
 | 			status = "okay"; | 
 |  | 
 | 			mdio { | 
 | 				#address-cells = <1>; | 
 | 				#size-cells = <0>; | 
 |  | 
 | 				ethphy: ethernet-phy@0 { | 
 | 					compatible = "ethernet-phy-ieee802.3-c22"; | 
 | 					reg = <0>; | 
 | 					pinctrl-names = "default"; | 
 | 					pinctrl-0 = <&mac0_phy_int_pin>; | 
 | 					interrupt-parent = <&gpio0>; | 
 | 					interrupts = <7 IRQ_TYPE_EDGE_FALLING>; | 
 | 					max-speed = <100>; | 
 | 				}; | 
 | 			}; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	reg_3p3v: regulator-3p3v { | 
 | 		compatible = "regulator-fixed"; | 
 | 		regulator-name = "3P3V"; | 
 | 		regulator-min-microvolt = <3300000>; | 
 | 		regulator-max-microvolt = <3300000>; | 
 | 		regulator-always-on; | 
 | 	}; | 
 |  | 
 | 	leds { | 
 | 		compatible = "gpio-leds"; | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&led_pins>; | 
 |  | 
 | 		status-red { | 
 | 			label = "duckbill:red:status"; | 
 | 			gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; | 
 | 			linux,default-trigger = "default-on"; | 
 | 		}; | 
 |  | 
 | 		status-green { | 
 | 			label = "duckbill:green:status"; | 
 | 			gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>; | 
 | 			linux,default-trigger = "heartbeat"; | 
 | 		}; | 
 |  | 
 | 		enocean-blue { | 
 | 			label = "duckbill:blue:enocean"; | 
 | 			gpios = <&gpio3 24 GPIO_ACTIVE_LOW>; | 
 | 		}; | 
 |  | 
 | 		enocean-red { | 
 | 			label = "duckbill:red:enocean"; | 
 | 			gpios = <&gpio3 25 GPIO_ACTIVE_LOW>; | 
 | 		}; | 
 |  | 
 | 		enocean-green { | 
 | 			label = "duckbill:green:enocean"; | 
 | 			gpios = <&gpio3 2 GPIO_ACTIVE_LOW>; | 
 | 		}; | 
 | 	}; | 
 |  | 
 | 	gpio-keys { | 
 | 		compatible = "gpio-keys"; | 
 | 		pinctrl-names = "default"; | 
 | 		pinctrl-0 = <&enocean_button>; | 
 |  | 
 | 		enocean { | 
 | 			label = "EnOcean"; | 
 | 			linux,code = <KEY_NEW>; | 
 | 			gpios = <&gpio3 3 GPIO_ACTIVE_HIGH>; | 
 | 		}; | 
 | 	}; | 
 | }; |