1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Device Tree file for SolidRun Clearfog revision A1 rev 2.0 (88F6828) 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2015 Russell King 5*4882a593Smuzhiyun * 6*4882a593Smuzhiyun * This board is in development; the contents of this file work with 7*4882a593Smuzhiyun * the A1 rev 2.0 of the board, which does not represent final 8*4882a593Smuzhiyun * production board. Things will change, don't expect this file to 9*4882a593Smuzhiyun * remain compatible info the future. 10*4882a593Smuzhiyun * 11*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms 12*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual 13*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a 14*4882a593Smuzhiyun * whole. 15*4882a593Smuzhiyun * 16*4882a593Smuzhiyun * a) This file is free software; you can redistribute it and/or 17*4882a593Smuzhiyun * modify it under the terms of the GNU General Public License 18*4882a593Smuzhiyun * version 2 as published by the Free Software Foundation. 19*4882a593Smuzhiyun * 20*4882a593Smuzhiyun * This file is distributed in the hope that it will be useful 21*4882a593Smuzhiyun * but WITHOUT ANY WARRANTY; without even the implied warranty of 22*4882a593Smuzhiyun * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23*4882a593Smuzhiyun * GNU General Public License for more details. 24*4882a593Smuzhiyun * 25*4882a593Smuzhiyun * Or, alternatively 26*4882a593Smuzhiyun * 27*4882a593Smuzhiyun * b) Permission is hereby granted, free of charge, to any person 28*4882a593Smuzhiyun * obtaining a copy of this software and associated documentation 29*4882a593Smuzhiyun * files (the "Software"), to deal in the Software without 30*4882a593Smuzhiyun * restriction, including without limitation the rights to use 31*4882a593Smuzhiyun * copy, modify, merge, publish, distribute, sublicense, and/or 32*4882a593Smuzhiyun * sell copies of the Software, and to permit persons to whom the 33*4882a593Smuzhiyun * Software is furnished to do so, subject to the following 34*4882a593Smuzhiyun * conditions: 35*4882a593Smuzhiyun * 36*4882a593Smuzhiyun * The above copyright notice and this permission notice shall be 37*4882a593Smuzhiyun * included in all copies or substantial portions of the Software. 38*4882a593Smuzhiyun * 39*4882a593Smuzhiyun * THE SOFTWARE IS PROVIDED , WITHOUT WARRANTY OF ANY KIND 40*4882a593Smuzhiyun * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 41*4882a593Smuzhiyun * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 42*4882a593Smuzhiyun * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 43*4882a593Smuzhiyun * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY 44*4882a593Smuzhiyun * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 45*4882a593Smuzhiyun * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 46*4882a593Smuzhiyun * OTHER DEALINGS IN THE SOFTWARE. 47*4882a593Smuzhiyun */ 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun/dts-v1/; 50*4882a593Smuzhiyun#include <dt-bindings/input/input.h> 51*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 52*4882a593Smuzhiyun#include "armada-388.dtsi" 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun/ { 55*4882a593Smuzhiyun model = "SolidRun Clearfog A1"; 56*4882a593Smuzhiyun compatible = "solidrun,clearfog-a1", "marvell,armada388", 57*4882a593Smuzhiyun "marvell,armada385", "marvell,armada380"; 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun aliases { 60*4882a593Smuzhiyun /* So that mvebu u-boot can update the MAC addresses */ 61*4882a593Smuzhiyun ethernet1 = ð0; 62*4882a593Smuzhiyun ethernet2 = ð1; 63*4882a593Smuzhiyun ethernet3 = ð2; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun chosen { 67*4882a593Smuzhiyun stdout-path = "serial0:115200n8"; 68*4882a593Smuzhiyun }; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun memory { 71*4882a593Smuzhiyun device_type = "memory"; 72*4882a593Smuzhiyun reg = <0x00000000 0x10000000>; /* 256 MB */ 73*4882a593Smuzhiyun }; 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun reg_3p3v: regulator-3p3v { 76*4882a593Smuzhiyun compatible = "regulator-fixed"; 77*4882a593Smuzhiyun regulator-name = "3P3V"; 78*4882a593Smuzhiyun regulator-min-microvolt = <3300000>; 79*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 80*4882a593Smuzhiyun regulator-always-on; 81*4882a593Smuzhiyun }; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun soc { 84*4882a593Smuzhiyun ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000 85*4882a593Smuzhiyun MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000 86*4882a593Smuzhiyun MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000 87*4882a593Smuzhiyun MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun internal-regs { 90*4882a593Smuzhiyun ethernet@30000 { 91*4882a593Smuzhiyun mac-address = [00 50 43 02 02 02]; 92*4882a593Smuzhiyun phy-mode = "sgmii"; 93*4882a593Smuzhiyun status = "okay"; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun fixed-link { 96*4882a593Smuzhiyun speed = <1000>; 97*4882a593Smuzhiyun full-duplex; 98*4882a593Smuzhiyun }; 99*4882a593Smuzhiyun }; 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun ethernet@34000 { 102*4882a593Smuzhiyun mac-address = [00 50 43 02 02 03]; 103*4882a593Smuzhiyun managed = "in-band-status"; 104*4882a593Smuzhiyun phy-mode = "sgmii"; 105*4882a593Smuzhiyun status = "okay"; 106*4882a593Smuzhiyun }; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun ethernet@70000 { 109*4882a593Smuzhiyun mac-address = [00 50 43 02 02 01]; 110*4882a593Smuzhiyun pinctrl-0 = <&ge0_rgmii_pins>; 111*4882a593Smuzhiyun pinctrl-names = "default"; 112*4882a593Smuzhiyun phy = <&phy_dedicated>; 113*4882a593Smuzhiyun phy-mode = "rgmii-id"; 114*4882a593Smuzhiyun status = "okay"; 115*4882a593Smuzhiyun }; 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun i2c@11000 { 118*4882a593Smuzhiyun /* Is there anything on this? */ 119*4882a593Smuzhiyun clock-frequency = <100000>; 120*4882a593Smuzhiyun pinctrl-0 = <&i2c0_pins>; 121*4882a593Smuzhiyun pinctrl-names = "default"; 122*4882a593Smuzhiyun status = "okay"; 123*4882a593Smuzhiyun 124*4882a593Smuzhiyun /* 125*4882a593Smuzhiyun * PCA9655 GPIO expander, up to 1MHz clock. 126*4882a593Smuzhiyun * 0-CON3 CLKREQ# 127*4882a593Smuzhiyun * 1-CON3 PERST# 128*4882a593Smuzhiyun * 2-CON2 PERST# 129*4882a593Smuzhiyun * 3-CON3 W_DISABLE 130*4882a593Smuzhiyun * 4-CON2 CLKREQ# 131*4882a593Smuzhiyun * 5-USB3 overcurrent 132*4882a593Smuzhiyun * 6-USB3 power 133*4882a593Smuzhiyun * 7-CON2 W_DISABLE 134*4882a593Smuzhiyun * 8-JP4 P1 135*4882a593Smuzhiyun * 9-JP4 P4 136*4882a593Smuzhiyun * 10-JP4 P5 137*4882a593Smuzhiyun * 11-m.2 DEVSLP 138*4882a593Smuzhiyun * 12-SFP_LOS 139*4882a593Smuzhiyun * 13-SFP_TX_FAULT 140*4882a593Smuzhiyun * 14-SFP_TX_DISABLE 141*4882a593Smuzhiyun * 15-SFP_MOD_DEF0 142*4882a593Smuzhiyun */ 143*4882a593Smuzhiyun expander0: gpio-expander@20 { 144*4882a593Smuzhiyun /* 145*4882a593Smuzhiyun * This is how it should be: 146*4882a593Smuzhiyun * compatible = "onnn,pca9655", 147*4882a593Smuzhiyun * "nxp,pca9555"; 148*4882a593Smuzhiyun * but you can't do this because of 149*4882a593Smuzhiyun * the way I2C works. 150*4882a593Smuzhiyun */ 151*4882a593Smuzhiyun compatible = "nxp,pca9555"; 152*4882a593Smuzhiyun gpio-controller; 153*4882a593Smuzhiyun #gpio-cells = <2>; 154*4882a593Smuzhiyun reg = <0x20>; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun pcie1_0_clkreq { 157*4882a593Smuzhiyun gpio-hog; 158*4882a593Smuzhiyun gpios = <0 GPIO_ACTIVE_LOW>; 159*4882a593Smuzhiyun input; 160*4882a593Smuzhiyun line-name = "pcie1.0-clkreq"; 161*4882a593Smuzhiyun }; 162*4882a593Smuzhiyun pcie1_0_w_disable { 163*4882a593Smuzhiyun gpio-hog; 164*4882a593Smuzhiyun gpios = <3 GPIO_ACTIVE_LOW>; 165*4882a593Smuzhiyun output-low; 166*4882a593Smuzhiyun line-name = "pcie1.0-w-disable"; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun pcie2_0_clkreq { 169*4882a593Smuzhiyun gpio-hog; 170*4882a593Smuzhiyun gpios = <4 GPIO_ACTIVE_LOW>; 171*4882a593Smuzhiyun input; 172*4882a593Smuzhiyun line-name = "pcie2.0-clkreq"; 173*4882a593Smuzhiyun }; 174*4882a593Smuzhiyun pcie2_0_w_disable { 175*4882a593Smuzhiyun gpio-hog; 176*4882a593Smuzhiyun gpios = <7 GPIO_ACTIVE_LOW>; 177*4882a593Smuzhiyun output-low; 178*4882a593Smuzhiyun line-name = "pcie2.0-w-disable"; 179*4882a593Smuzhiyun }; 180*4882a593Smuzhiyun usb3_ilimit { 181*4882a593Smuzhiyun gpio-hog; 182*4882a593Smuzhiyun gpios = <5 GPIO_ACTIVE_LOW>; 183*4882a593Smuzhiyun input; 184*4882a593Smuzhiyun line-name = "usb3-current-limit"; 185*4882a593Smuzhiyun }; 186*4882a593Smuzhiyun usb3_power { 187*4882a593Smuzhiyun gpio-hog; 188*4882a593Smuzhiyun gpios = <6 GPIO_ACTIVE_HIGH>; 189*4882a593Smuzhiyun output-high; 190*4882a593Smuzhiyun line-name = "usb3-power"; 191*4882a593Smuzhiyun }; 192*4882a593Smuzhiyun m2_devslp { 193*4882a593Smuzhiyun gpio-hog; 194*4882a593Smuzhiyun gpios = <11 GPIO_ACTIVE_HIGH>; 195*4882a593Smuzhiyun output-low; 196*4882a593Smuzhiyun line-name = "m.2 devslp"; 197*4882a593Smuzhiyun }; 198*4882a593Smuzhiyun }; 199*4882a593Smuzhiyun 200*4882a593Smuzhiyun /* The MCP3021 is 100kHz clock only */ 201*4882a593Smuzhiyun mikrobus_adc: mcp3021@4c { 202*4882a593Smuzhiyun compatible = "microchip,mcp3021"; 203*4882a593Smuzhiyun reg = <0x4c>; 204*4882a593Smuzhiyun }; 205*4882a593Smuzhiyun 206*4882a593Smuzhiyun /* Also something at 0x64 */ 207*4882a593Smuzhiyun }; 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun i2c@11100 { 210*4882a593Smuzhiyun /* 211*4882a593Smuzhiyun * Routed to SFP, mikrobus, and PCIe. 212*4882a593Smuzhiyun * SFP limits this to 100kHz, and requires 213*4882a593Smuzhiyun * an AT24C01A/02/04 with address pins tied 214*4882a593Smuzhiyun * low, which takes addresses 0x50 and 0x51. 215*4882a593Smuzhiyun * Mikrobus doesn't specify beyond an I2C 216*4882a593Smuzhiyun * bus being present. 217*4882a593Smuzhiyun * PCIe uses ARP to assign addresses, or 218*4882a593Smuzhiyun * 0x63-0x64. 219*4882a593Smuzhiyun */ 220*4882a593Smuzhiyun clock-frequency = <100000>; 221*4882a593Smuzhiyun pinctrl-0 = <&clearfog_i2c1_pins>; 222*4882a593Smuzhiyun pinctrl-names = "default"; 223*4882a593Smuzhiyun status = "okay"; 224*4882a593Smuzhiyun }; 225*4882a593Smuzhiyun 226*4882a593Smuzhiyun mdio@72004 { 227*4882a593Smuzhiyun pinctrl-0 = <&mdio_pins>; 228*4882a593Smuzhiyun pinctrl-names = "default"; 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun phy_dedicated: ethernet-phy@0 { 231*4882a593Smuzhiyun /* 232*4882a593Smuzhiyun * Annoyingly, the marvell phy driver 233*4882a593Smuzhiyun * configures the LED register, rather 234*4882a593Smuzhiyun * than preserving reset-loaded setting. 235*4882a593Smuzhiyun * We undo that rubbish here. 236*4882a593Smuzhiyun */ 237*4882a593Smuzhiyun marvell,reg-init = <3 16 0 0x101e>; 238*4882a593Smuzhiyun reg = <0>; 239*4882a593Smuzhiyun }; 240*4882a593Smuzhiyun }; 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun pinctrl@18000 { 243*4882a593Smuzhiyun clearfog_dsa0_clk_pins: clearfog-dsa0-clk-pins { 244*4882a593Smuzhiyun marvell,pins = "mpp46"; 245*4882a593Smuzhiyun marvell,function = "ref"; 246*4882a593Smuzhiyun }; 247*4882a593Smuzhiyun clearfog_dsa0_pins: clearfog-dsa0-pins { 248*4882a593Smuzhiyun marvell,pins = "mpp23", "mpp41"; 249*4882a593Smuzhiyun marvell,function = "gpio"; 250*4882a593Smuzhiyun }; 251*4882a593Smuzhiyun clearfog_i2c1_pins: i2c1-pins { 252*4882a593Smuzhiyun /* SFP, PCIe, mSATA, mikrobus */ 253*4882a593Smuzhiyun marvell,pins = "mpp26", "mpp27"; 254*4882a593Smuzhiyun marvell,function = "i2c1"; 255*4882a593Smuzhiyun }; 256*4882a593Smuzhiyun clearfog_sdhci_cd_pins: clearfog-sdhci-cd-pins { 257*4882a593Smuzhiyun marvell,pins = "mpp20"; 258*4882a593Smuzhiyun marvell,function = "gpio"; 259*4882a593Smuzhiyun }; 260*4882a593Smuzhiyun clearfog_sdhci_pins: clearfog-sdhci-pins { 261*4882a593Smuzhiyun marvell,pins = "mpp21", "mpp28", 262*4882a593Smuzhiyun "mpp37", "mpp38", 263*4882a593Smuzhiyun "mpp39", "mpp40"; 264*4882a593Smuzhiyun marvell,function = "sd0"; 265*4882a593Smuzhiyun }; 266*4882a593Smuzhiyun clearfog_spi1_cs_pins: spi1-cs-pins { 267*4882a593Smuzhiyun marvell,pins = "mpp55"; 268*4882a593Smuzhiyun marvell,function = "spi1"; 269*4882a593Smuzhiyun }; 270*4882a593Smuzhiyun mikro_pins: mikro-pins { 271*4882a593Smuzhiyun /* int: mpp22 rst: mpp29 */ 272*4882a593Smuzhiyun marvell,pins = "mpp22", "mpp29"; 273*4882a593Smuzhiyun marvell,function = "gpio"; 274*4882a593Smuzhiyun }; 275*4882a593Smuzhiyun mikro_spi_pins: mikro-spi-pins { 276*4882a593Smuzhiyun marvell,pins = "mpp43"; 277*4882a593Smuzhiyun marvell,function = "spi1"; 278*4882a593Smuzhiyun }; 279*4882a593Smuzhiyun mikro_uart_pins: mikro-uart-pins { 280*4882a593Smuzhiyun marvell,pins = "mpp24", "mpp25"; 281*4882a593Smuzhiyun marvell,function = "ua1"; 282*4882a593Smuzhiyun }; 283*4882a593Smuzhiyun rear_button_pins: rear-button-pins { 284*4882a593Smuzhiyun marvell,pins = "mpp34"; 285*4882a593Smuzhiyun marvell,function = "gpio"; 286*4882a593Smuzhiyun }; 287*4882a593Smuzhiyun }; 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun rtc@a3800 { 290*4882a593Smuzhiyun /* 291*4882a593Smuzhiyun * If the rtc doesn't work, run "date reset" 292*4882a593Smuzhiyun * twice in u-boot. 293*4882a593Smuzhiyun */ 294*4882a593Smuzhiyun status = "okay"; 295*4882a593Smuzhiyun }; 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun sata@a8000 { 298*4882a593Smuzhiyun /* pinctrl? */ 299*4882a593Smuzhiyun status = "okay"; 300*4882a593Smuzhiyun }; 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun sata@e0000 { 303*4882a593Smuzhiyun /* pinctrl? */ 304*4882a593Smuzhiyun status = "okay"; 305*4882a593Smuzhiyun }; 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun sdhci@d8000 { 308*4882a593Smuzhiyun bus-width = <4>; 309*4882a593Smuzhiyun cd-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>; 310*4882a593Smuzhiyun no-1-8-v; 311*4882a593Smuzhiyun pinctrl-0 = <&clearfog_sdhci_pins 312*4882a593Smuzhiyun &clearfog_sdhci_cd_pins>; 313*4882a593Smuzhiyun pinctrl-names = "default"; 314*4882a593Smuzhiyun status = "okay"; 315*4882a593Smuzhiyun vmmc = <®_3p3v>; 316*4882a593Smuzhiyun wp-inverted; 317*4882a593Smuzhiyun }; 318*4882a593Smuzhiyun 319*4882a593Smuzhiyun serial@12000 { 320*4882a593Smuzhiyun pinctrl-0 = <&uart0_pins>; 321*4882a593Smuzhiyun pinctrl-names = "default"; 322*4882a593Smuzhiyun status = "okay"; 323*4882a593Smuzhiyun u-boot,dm-pre-reloc; 324*4882a593Smuzhiyun }; 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun serial@12100 { 327*4882a593Smuzhiyun /* mikrobus uart */ 328*4882a593Smuzhiyun pinctrl-0 = <&mikro_uart_pins>; 329*4882a593Smuzhiyun pinctrl-names = "default"; 330*4882a593Smuzhiyun status = "okay"; 331*4882a593Smuzhiyun }; 332*4882a593Smuzhiyun 333*4882a593Smuzhiyun spi@10680 { 334*4882a593Smuzhiyun /* 335*4882a593Smuzhiyun * We don't seem to have the W25Q32 on the 336*4882a593Smuzhiyun * A1 Rev 2.0 boards, so disable SPI. 337*4882a593Smuzhiyun * CS0: W25Q32 (doesn't appear to be present) 338*4882a593Smuzhiyun * CS1: 339*4882a593Smuzhiyun * CS2: mikrobus 340*4882a593Smuzhiyun */ 341*4882a593Smuzhiyun pinctrl-0 = <&spi1_pins &clearfog_spi1_cs_pins &mikro_spi_pins>; 342*4882a593Smuzhiyun pinctrl-names = "default"; 343*4882a593Smuzhiyun status = "okay"; 344*4882a593Smuzhiyun 345*4882a593Smuzhiyun spi-flash@0 { 346*4882a593Smuzhiyun #address-cells = <1>; 347*4882a593Smuzhiyun #size-cells = <0>; 348*4882a593Smuzhiyun compatible = "w25q32", "jedec,spi-nor"; 349*4882a593Smuzhiyun reg = <0>; /* Chip select 0 */ 350*4882a593Smuzhiyun spi-max-frequency = <3000000>; 351*4882a593Smuzhiyun status = "disabled"; 352*4882a593Smuzhiyun }; 353*4882a593Smuzhiyun }; 354*4882a593Smuzhiyun 355*4882a593Smuzhiyun usb3@f8000 { 356*4882a593Smuzhiyun status = "okay"; 357*4882a593Smuzhiyun }; 358*4882a593Smuzhiyun }; 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun pcie-controller { 361*4882a593Smuzhiyun status = "okay"; 362*4882a593Smuzhiyun /* 363*4882a593Smuzhiyun * The two PCIe units are accessible through 364*4882a593Smuzhiyun * the mini-PCIe connectors on the board. 365*4882a593Smuzhiyun */ 366*4882a593Smuzhiyun pcie@2,0 { 367*4882a593Smuzhiyun /* Port 1, Lane 0. CONN3, nearest power. */ 368*4882a593Smuzhiyun reset-gpios = <&expander0 1 GPIO_ACTIVE_LOW>; 369*4882a593Smuzhiyun status = "okay"; 370*4882a593Smuzhiyun }; 371*4882a593Smuzhiyun pcie@3,0 { 372*4882a593Smuzhiyun /* Port 2, Lane 0. CONN2, nearest CPU. */ 373*4882a593Smuzhiyun reset-gpios = <&expander0 2 GPIO_ACTIVE_LOW>; 374*4882a593Smuzhiyun status = "okay"; 375*4882a593Smuzhiyun }; 376*4882a593Smuzhiyun }; 377*4882a593Smuzhiyun }; 378*4882a593Smuzhiyun 379*4882a593Smuzhiyun sfp: sfp { 380*4882a593Smuzhiyun compatible = "sff,sfp"; 381*4882a593Smuzhiyun i2c-bus = <&i2c1>; 382*4882a593Smuzhiyun los-gpio = <&expander0 12 GPIO_ACTIVE_HIGH>; 383*4882a593Smuzhiyun moddef0-gpio = <&expander0 15 GPIO_ACTIVE_LOW>; 384*4882a593Smuzhiyun sfp,ethernet = <ð2>; 385*4882a593Smuzhiyun tx-disable-gpio = <&expander0 14 GPIO_ACTIVE_HIGH>; 386*4882a593Smuzhiyun tx-fault-gpio = <&expander0 13 GPIO_ACTIVE_HIGH>; 387*4882a593Smuzhiyun }; 388*4882a593Smuzhiyun 389*4882a593Smuzhiyun dsa@0 { 390*4882a593Smuzhiyun compatible = "marvell,dsa"; 391*4882a593Smuzhiyun dsa,ethernet = <ð1>; 392*4882a593Smuzhiyun dsa,mii-bus = <&mdio>; 393*4882a593Smuzhiyun pinctrl-0 = <&clearfog_dsa0_clk_pins &clearfog_dsa0_pins>; 394*4882a593Smuzhiyun pinctrl-names = "default"; 395*4882a593Smuzhiyun #address-cells = <2>; 396*4882a593Smuzhiyun #size-cells = <0>; 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun switch@0 { 399*4882a593Smuzhiyun #address-cells = <1>; 400*4882a593Smuzhiyun #size-cells = <0>; 401*4882a593Smuzhiyun reg = <4 0>; 402*4882a593Smuzhiyun 403*4882a593Smuzhiyun port@0 { 404*4882a593Smuzhiyun reg = <0>; 405*4882a593Smuzhiyun label = "lan1"; 406*4882a593Smuzhiyun }; 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun port@1 { 409*4882a593Smuzhiyun reg = <1>; 410*4882a593Smuzhiyun label = "lan2"; 411*4882a593Smuzhiyun }; 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun port@2 { 414*4882a593Smuzhiyun reg = <2>; 415*4882a593Smuzhiyun label = "lan3"; 416*4882a593Smuzhiyun }; 417*4882a593Smuzhiyun 418*4882a593Smuzhiyun port@3 { 419*4882a593Smuzhiyun reg = <3>; 420*4882a593Smuzhiyun label = "lan4"; 421*4882a593Smuzhiyun }; 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun port@4 { 424*4882a593Smuzhiyun reg = <4>; 425*4882a593Smuzhiyun label = "lan5"; 426*4882a593Smuzhiyun }; 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun port@5 { 429*4882a593Smuzhiyun reg = <5>; 430*4882a593Smuzhiyun label = "cpu"; 431*4882a593Smuzhiyun }; 432*4882a593Smuzhiyun 433*4882a593Smuzhiyun port@6 { 434*4882a593Smuzhiyun /* 88E1512 external phy */ 435*4882a593Smuzhiyun reg = <6>; 436*4882a593Smuzhiyun label = "lan6"; 437*4882a593Smuzhiyun fixed-link { 438*4882a593Smuzhiyun speed = <1000>; 439*4882a593Smuzhiyun full-duplex; 440*4882a593Smuzhiyun }; 441*4882a593Smuzhiyun }; 442*4882a593Smuzhiyun }; 443*4882a593Smuzhiyun }; 444*4882a593Smuzhiyun 445*4882a593Smuzhiyun gpio-keys { 446*4882a593Smuzhiyun compatible = "gpio-keys"; 447*4882a593Smuzhiyun pinctrl-0 = <&rear_button_pins>; 448*4882a593Smuzhiyun pinctrl-names = "default"; 449*4882a593Smuzhiyun 450*4882a593Smuzhiyun button_0 { 451*4882a593Smuzhiyun /* The rear SW3 button */ 452*4882a593Smuzhiyun label = "Rear Button"; 453*4882a593Smuzhiyun gpios = <&gpio1 2 GPIO_ACTIVE_LOW>; 454*4882a593Smuzhiyun linux,can-disable; 455*4882a593Smuzhiyun linux,code = <BTN_0>; 456*4882a593Smuzhiyun }; 457*4882a593Smuzhiyun }; 458*4882a593Smuzhiyun}; 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun/* 461*4882a593Smuzhiyun+#define A38x_CUSTOMER_BOARD_1_MPP16_23 0x00400011 462*4882a593SmuzhiyunMPP18: gpio ? (pca9655 int?) 463*4882a593SmuzhiyunMPP19: gpio ? (clkreq?) 464*4882a593SmuzhiyunMPP20: gpio ? (sd0 detect) 465*4882a593SmuzhiyunMPP21: sd0:cmd x sd0 466*4882a593SmuzhiyunMPP22: gpio x mikro int 467*4882a593SmuzhiyunMPP23: gpio x switch irq 468*4882a593Smuzhiyun+#define A38x_CUSTOMER_BOARD_1_MPP24_31 0x22043333 469*4882a593SmuzhiyunMPP24: ua1:rxd x mikro rx 470*4882a593SmuzhiyunMPP25: ua1:txd x mikro tx 471*4882a593SmuzhiyunMPP26: i2c1:sck x mikro sck 472*4882a593SmuzhiyunMPP27: i2c1:sda x mikro sda 473*4882a593SmuzhiyunMPP28: sd0:clk x sd0 474*4882a593SmuzhiyunMPP29: gpio x mikro rst 475*4882a593SmuzhiyunMPP30: ge1:txd2 ? (config) 476*4882a593SmuzhiyunMPP31: ge1:txd3 ? (config) 477*4882a593Smuzhiyun+#define A38x_CUSTOMER_BOARD_1_MPP32_39 0x44400002 478*4882a593SmuzhiyunMPP32: ge1:txctl ? (unused) 479*4882a593SmuzhiyunMPP33: gpio ? (pic_com0) 480*4882a593SmuzhiyunMPP34: gpio x rear button (pic_com1) 481*4882a593SmuzhiyunMPP35: gpio ? (pic_com2) 482*4882a593SmuzhiyunMPP36: gpio ? (unused) 483*4882a593SmuzhiyunMPP37: sd0:d3 x sd0 484*4882a593SmuzhiyunMPP38: sd0:d0 x sd0 485*4882a593SmuzhiyunMPP39: sd0:d1 x sd0 486*4882a593Smuzhiyun+#define A38x_CUSTOMER_BOARD_1_MPP40_47 0x41144004 487*4882a593SmuzhiyunMPP40: sd0:d2 x sd0 488*4882a593SmuzhiyunMPP41: gpio x switch reset 489*4882a593SmuzhiyunMPP42: gpio ? sw1-1 490*4882a593SmuzhiyunMPP43: spi1:cs2 x mikro cs 491*4882a593SmuzhiyunMPP44: sata3:prsnt ? (unused) 492*4882a593SmuzhiyunMPP45: ref:clk_out0 ? 493*4882a593SmuzhiyunMPP46: ref:clk_out1 x switch clk 494*4882a593SmuzhiyunMPP47: 4 ? (unused) 495*4882a593Smuzhiyun+#define A38x_CUSTOMER_BOARD_1_MPP48_55 0x40333333 496*4882a593SmuzhiyunMPP48: tdm:pclk 497*4882a593SmuzhiyunMPP49: tdm:fsync 498*4882a593SmuzhiyunMPP50: tdm:drx 499*4882a593SmuzhiyunMPP51: tdm:dtx 500*4882a593SmuzhiyunMPP52: tdm:int 501*4882a593SmuzhiyunMPP53: tdm:rst 502*4882a593SmuzhiyunMPP54: gpio ? (pwm) 503*4882a593SmuzhiyunMPP55: spi1:cs1 x slic 504*4882a593Smuzhiyun+#define A38x_CUSTOMER_BOARD_1_MPP56_63 0x00004444 505*4882a593SmuzhiyunMPP56: spi1:mosi x mikro mosi 506*4882a593SmuzhiyunMPP57: spi1:sck x mikro sck 507*4882a593SmuzhiyunMPP58: spi1:miso x mikro miso 508*4882a593SmuzhiyunMPP59: spi1:cs0 x w25q32 509*4882a593Smuzhiyun*/ 510