1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0-or-later 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright (C) 2015-2017 I2SE GmbH <info@i2se.com> 4*4882a593Smuzhiyun * Copyright (C) 2016 Michael Heimpold <mhei@heimpold.de> 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun/dts-v1/; 8*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h> 9*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 10*4882a593Smuzhiyun#include "imx28.dtsi" 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun/ { 13*4882a593Smuzhiyun model = "I2SE Duckbill 2 SPI"; 14*4882a593Smuzhiyun compatible = "i2se,duckbill-2-spi", "i2se,duckbill-2", "fsl,imx28"; 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun aliases { 17*4882a593Smuzhiyun ethernet1 = &qca7000; 18*4882a593Smuzhiyun }; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun memory@40000000 { 21*4882a593Smuzhiyun device_type = "memory"; 22*4882a593Smuzhiyun reg = <0x40000000 0x08000000>; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun apb@80000000 { 26*4882a593Smuzhiyun apbh@80000000 { 27*4882a593Smuzhiyun ssp0: spi@80010000 { 28*4882a593Smuzhiyun compatible = "fsl,imx28-mmc"; 29*4882a593Smuzhiyun pinctrl-names = "default"; 30*4882a593Smuzhiyun pinctrl-0 = <&mmc0_8bit_pins_a 31*4882a593Smuzhiyun &mmc0_cd_cfg &mmc0_sck_cfg>; 32*4882a593Smuzhiyun bus-width = <8>; 33*4882a593Smuzhiyun vmmc-supply = <®_3p3v>; 34*4882a593Smuzhiyun status = "okay"; 35*4882a593Smuzhiyun non-removable; 36*4882a593Smuzhiyun }; 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun ssp2: spi@80014000 { 39*4882a593Smuzhiyun compatible = "fsl,imx28-spi"; 40*4882a593Smuzhiyun pinctrl-names = "default"; 41*4882a593Smuzhiyun pinctrl-0 = <&spi2_pins_a>; 42*4882a593Smuzhiyun status = "okay"; 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun qca7000: ethernet@0 { 45*4882a593Smuzhiyun reg = <0>; 46*4882a593Smuzhiyun compatible = "qca,qca7000"; 47*4882a593Smuzhiyun pinctrl-names = "default"; 48*4882a593Smuzhiyun pinctrl-0 = <&qca7000_pins>; 49*4882a593Smuzhiyun interrupt-parent = <&gpio3>; 50*4882a593Smuzhiyun interrupts = <3 IRQ_TYPE_EDGE_RISING>; 51*4882a593Smuzhiyun spi-cpha; 52*4882a593Smuzhiyun spi-cpol; 53*4882a593Smuzhiyun spi-max-frequency = <8000000>; 54*4882a593Smuzhiyun }; 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun pinctrl@80018000 { 58*4882a593Smuzhiyun pinctrl-names = "default"; 59*4882a593Smuzhiyun pinctrl-0 = <&hog_pins_a>; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun hog_pins_a: hog@0 { 62*4882a593Smuzhiyun reg = <0>; 63*4882a593Smuzhiyun fsl,pinmux-ids = < 64*4882a593Smuzhiyun MX28_PAD_LCD_D17__GPIO_1_17 /* Revision detection */ 65*4882a593Smuzhiyun >; 66*4882a593Smuzhiyun fsl,drive-strength = <MXS_DRIVE_4mA>; 67*4882a593Smuzhiyun fsl,voltage = <MXS_VOLTAGE_HIGH>; 68*4882a593Smuzhiyun fsl,pull-up = <MXS_PULL_DISABLE>; 69*4882a593Smuzhiyun }; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun mac0_phy_reset_pin: mac0-phy-reset@0 { 72*4882a593Smuzhiyun reg = <0>; 73*4882a593Smuzhiyun fsl,pinmux-ids = < 74*4882a593Smuzhiyun MX28_PAD_GPMI_ALE__GPIO_0_26 /* PHY Reset */ 75*4882a593Smuzhiyun >; 76*4882a593Smuzhiyun fsl,drive-strength = <MXS_DRIVE_4mA>; 77*4882a593Smuzhiyun fsl,voltage = <MXS_VOLTAGE_HIGH>; 78*4882a593Smuzhiyun fsl,pull-up = <MXS_PULL_DISABLE>; 79*4882a593Smuzhiyun }; 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun mac0_phy_int_pin: mac0-phy-int@0 { 82*4882a593Smuzhiyun reg = <0>; 83*4882a593Smuzhiyun fsl,pinmux-ids = < 84*4882a593Smuzhiyun MX28_PAD_GPMI_D07__GPIO_0_7 /* PHY Interrupt */ 85*4882a593Smuzhiyun >; 86*4882a593Smuzhiyun fsl,drive-strength = <MXS_DRIVE_4mA>; 87*4882a593Smuzhiyun fsl,voltage = <MXS_VOLTAGE_HIGH>; 88*4882a593Smuzhiyun fsl,pull-up = <MXS_PULL_DISABLE>; 89*4882a593Smuzhiyun }; 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun led_pins: led@0 { 92*4882a593Smuzhiyun reg = <0>; 93*4882a593Smuzhiyun fsl,pinmux-ids = < 94*4882a593Smuzhiyun MX28_PAD_SAIF0_MCLK__GPIO_3_20 95*4882a593Smuzhiyun MX28_PAD_SAIF0_LRCLK__GPIO_3_21 96*4882a593Smuzhiyun >; 97*4882a593Smuzhiyun fsl,drive-strength = <MXS_DRIVE_4mA>; 98*4882a593Smuzhiyun fsl,voltage = <MXS_VOLTAGE_HIGH>; 99*4882a593Smuzhiyun fsl,pull-up = <MXS_PULL_DISABLE>; 100*4882a593Smuzhiyun }; 101*4882a593Smuzhiyun 102*4882a593Smuzhiyun qca7000_pins: qca7000@0 { 103*4882a593Smuzhiyun reg = <0>; 104*4882a593Smuzhiyun fsl,pinmux-ids = < 105*4882a593Smuzhiyun MX28_PAD_AUART0_RTS__GPIO_3_3 /* Interrupt */ 106*4882a593Smuzhiyun MX28_PAD_LCD_D13__GPIO_1_13 /* QCA7K reset */ 107*4882a593Smuzhiyun MX28_PAD_LCD_D14__GPIO_1_14 /* GPIO 0 */ 108*4882a593Smuzhiyun MX28_PAD_LCD_D15__GPIO_1_15 /* GPIO 1 */ 109*4882a593Smuzhiyun MX28_PAD_LCD_D18__GPIO_1_18 /* GPIO 2 */ 110*4882a593Smuzhiyun MX28_PAD_LCD_D21__GPIO_1_21 /* GPIO 3 */ 111*4882a593Smuzhiyun >; 112*4882a593Smuzhiyun fsl,drive-strength = <MXS_DRIVE_4mA>; 113*4882a593Smuzhiyun fsl,voltage = <MXS_VOLTAGE_HIGH>; 114*4882a593Smuzhiyun fsl,pull-up = <MXS_PULL_DISABLE>; 115*4882a593Smuzhiyun }; 116*4882a593Smuzhiyun }; 117*4882a593Smuzhiyun }; 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun apbx@80040000 { 120*4882a593Smuzhiyun lradc@80050000 { 121*4882a593Smuzhiyun status = "okay"; 122*4882a593Smuzhiyun }; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun duart: serial@80074000 { 125*4882a593Smuzhiyun pinctrl-names = "default"; 126*4882a593Smuzhiyun pinctrl-0 = <&duart_pins_a>; 127*4882a593Smuzhiyun status = "okay"; 128*4882a593Smuzhiyun }; 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun usbphy0: usbphy@8007c000 { 131*4882a593Smuzhiyun status = "okay"; 132*4882a593Smuzhiyun }; 133*4882a593Smuzhiyun }; 134*4882a593Smuzhiyun }; 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun ahb@80080000 { 137*4882a593Smuzhiyun usb0: usb@80080000 { 138*4882a593Smuzhiyun status = "okay"; 139*4882a593Smuzhiyun dr_mode = "peripheral"; 140*4882a593Smuzhiyun }; 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun mac0: ethernet@800f0000 { 143*4882a593Smuzhiyun phy-mode = "rmii"; 144*4882a593Smuzhiyun pinctrl-names = "default"; 145*4882a593Smuzhiyun pinctrl-0 = <&mac0_pins_a>, <&mac0_phy_reset_pin>; 146*4882a593Smuzhiyun phy-supply = <®_3p3v>; 147*4882a593Smuzhiyun phy-reset-gpios = <&gpio0 26 GPIO_ACTIVE_LOW>; 148*4882a593Smuzhiyun phy-reset-duration = <25>; 149*4882a593Smuzhiyun phy-handle = <ðphy>; 150*4882a593Smuzhiyun status = "okay"; 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun mdio { 153*4882a593Smuzhiyun #address-cells = <1>; 154*4882a593Smuzhiyun #size-cells = <0>; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun ethphy: ethernet-phy@0 { 157*4882a593Smuzhiyun compatible = "ethernet-phy-ieee802.3-c22"; 158*4882a593Smuzhiyun reg = <0>; 159*4882a593Smuzhiyun pinctrl-names = "default"; 160*4882a593Smuzhiyun pinctrl-0 = <&mac0_phy_int_pin>; 161*4882a593Smuzhiyun interrupt-parent = <&gpio0>; 162*4882a593Smuzhiyun interrupts = <7 IRQ_TYPE_EDGE_FALLING>; 163*4882a593Smuzhiyun max-speed = <100>; 164*4882a593Smuzhiyun }; 165*4882a593Smuzhiyun }; 166*4882a593Smuzhiyun }; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun reg_3p3v: regulator-3p3v { 170*4882a593Smuzhiyun compatible = "regulator-fixed"; 171*4882a593Smuzhiyun regulator-name = "3P3V"; 172*4882a593Smuzhiyun regulator-min-microvolt = <3300000>; 173*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 174*4882a593Smuzhiyun regulator-always-on; 175*4882a593Smuzhiyun }; 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun leds { 178*4882a593Smuzhiyun compatible = "gpio-leds"; 179*4882a593Smuzhiyun pinctrl-names = "default"; 180*4882a593Smuzhiyun pinctrl-0 = <&led_pins>; 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun status-red { 183*4882a593Smuzhiyun label = "duckbill:red:status"; 184*4882a593Smuzhiyun gpios = <&gpio3 21 GPIO_ACTIVE_HIGH>; 185*4882a593Smuzhiyun linux,default-trigger = "default-on"; 186*4882a593Smuzhiyun }; 187*4882a593Smuzhiyun 188*4882a593Smuzhiyun status-green { 189*4882a593Smuzhiyun label = "duckbill:green:status"; 190*4882a593Smuzhiyun gpios = <&gpio3 20 GPIO_ACTIVE_HIGH>; 191*4882a593Smuzhiyun linux,default-trigger = "heartbeat"; 192*4882a593Smuzhiyun }; 193*4882a593Smuzhiyun }; 194*4882a593Smuzhiyun}; 195