1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright (C) 2016 Marvell Technology Group Ltd. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Device Tree file for MACCHIATOBin Armada 8040 community board platform 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun#include "armada-8040.dtsi" 9*4882a593Smuzhiyun 10*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun/ { 13*4882a593Smuzhiyun model = "Marvell 8040 MACCHIATOBin"; 14*4882a593Smuzhiyun compatible = "marvell,armada8040-mcbin", "marvell,armada8040", 15*4882a593Smuzhiyun "marvell,armada-ap806-quad", "marvell,armada-ap806"; 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun chosen { 18*4882a593Smuzhiyun stdout-path = "serial0:115200n8"; 19*4882a593Smuzhiyun }; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun memory@0 { 22*4882a593Smuzhiyun device_type = "memory"; 23*4882a593Smuzhiyun reg = <0x0 0x0 0x0 0x80000000>; 24*4882a593Smuzhiyun }; 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun aliases { 27*4882a593Smuzhiyun ethernet0 = &cp0_eth0; 28*4882a593Smuzhiyun ethernet1 = &cp1_eth0; 29*4882a593Smuzhiyun ethernet2 = &cp1_eth1; 30*4882a593Smuzhiyun ethernet3 = &cp1_eth2; 31*4882a593Smuzhiyun }; 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun /* Regulator labels correspond with schematics */ 34*4882a593Smuzhiyun v_3_3: regulator-3-3v { 35*4882a593Smuzhiyun compatible = "regulator-fixed"; 36*4882a593Smuzhiyun regulator-name = "v_3_3"; 37*4882a593Smuzhiyun regulator-min-microvolt = <3300000>; 38*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 39*4882a593Smuzhiyun regulator-always-on; 40*4882a593Smuzhiyun status = "okay"; 41*4882a593Smuzhiyun }; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun v_vddo_h: regulator-1-8v { 44*4882a593Smuzhiyun compatible = "regulator-fixed"; 45*4882a593Smuzhiyun regulator-name = "v_vddo_h"; 46*4882a593Smuzhiyun regulator-min-microvolt = <1800000>; 47*4882a593Smuzhiyun regulator-max-microvolt = <1800000>; 48*4882a593Smuzhiyun regulator-always-on; 49*4882a593Smuzhiyun status = "okay"; 50*4882a593Smuzhiyun }; 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun v_5v0_usb3_hst_vbus: regulator-usb3-vbus0 { 53*4882a593Smuzhiyun compatible = "regulator-fixed"; 54*4882a593Smuzhiyun enable-active-high; 55*4882a593Smuzhiyun gpio = <&cp0_gpio2 15 GPIO_ACTIVE_HIGH>; 56*4882a593Smuzhiyun pinctrl-names = "default"; 57*4882a593Smuzhiyun pinctrl-0 = <&cp0_xhci_vbus_pins>; 58*4882a593Smuzhiyun regulator-name = "v_5v0_usb3_hst_vbus"; 59*4882a593Smuzhiyun regulator-min-microvolt = <5000000>; 60*4882a593Smuzhiyun regulator-max-microvolt = <5000000>; 61*4882a593Smuzhiyun status = "okay"; 62*4882a593Smuzhiyun }; 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun sfp_eth0: sfp-eth0 { 65*4882a593Smuzhiyun /* CON15,16 - CPM lane 4 */ 66*4882a593Smuzhiyun compatible = "sff,sfp"; 67*4882a593Smuzhiyun i2c-bus = <&sfpp0_i2c>; 68*4882a593Smuzhiyun los-gpio = <&cp1_gpio1 28 GPIO_ACTIVE_HIGH>; 69*4882a593Smuzhiyun mod-def0-gpio = <&cp1_gpio1 27 GPIO_ACTIVE_LOW>; 70*4882a593Smuzhiyun tx-disable-gpio = <&cp1_gpio1 29 GPIO_ACTIVE_HIGH>; 71*4882a593Smuzhiyun tx-fault-gpio = <&cp1_gpio1 26 GPIO_ACTIVE_HIGH>; 72*4882a593Smuzhiyun pinctrl-names = "default"; 73*4882a593Smuzhiyun pinctrl-0 = <&cp1_sfpp0_pins>; 74*4882a593Smuzhiyun maximum-power-milliwatt = <2000>; 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun sfp_eth1: sfp-eth1 { 78*4882a593Smuzhiyun /* CON17,18 - CPS lane 4 */ 79*4882a593Smuzhiyun compatible = "sff,sfp"; 80*4882a593Smuzhiyun i2c-bus = <&sfpp1_i2c>; 81*4882a593Smuzhiyun los-gpio = <&cp1_gpio1 8 GPIO_ACTIVE_HIGH>; 82*4882a593Smuzhiyun mod-def0-gpio = <&cp1_gpio1 11 GPIO_ACTIVE_LOW>; 83*4882a593Smuzhiyun tx-disable-gpio = <&cp1_gpio1 10 GPIO_ACTIVE_HIGH>; 84*4882a593Smuzhiyun tx-fault-gpio = <&cp0_gpio2 30 GPIO_ACTIVE_HIGH>; 85*4882a593Smuzhiyun pinctrl-names = "default"; 86*4882a593Smuzhiyun pinctrl-0 = <&cp1_sfpp1_pins &cp0_sfpp1_pins>; 87*4882a593Smuzhiyun maximum-power-milliwatt = <2000>; 88*4882a593Smuzhiyun }; 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun sfp_eth3: sfp-eth3 { 91*4882a593Smuzhiyun /* CON13,14 - CPS lane 5 */ 92*4882a593Smuzhiyun compatible = "sff,sfp"; 93*4882a593Smuzhiyun i2c-bus = <&sfp_1g_i2c>; 94*4882a593Smuzhiyun los-gpio = <&cp0_gpio2 22 GPIO_ACTIVE_HIGH>; 95*4882a593Smuzhiyun mod-def0-gpio = <&cp0_gpio2 21 GPIO_ACTIVE_LOW>; 96*4882a593Smuzhiyun tx-disable-gpio = <&cp1_gpio1 24 GPIO_ACTIVE_HIGH>; 97*4882a593Smuzhiyun tx-fault-gpio = <&cp0_gpio2 19 GPIO_ACTIVE_HIGH>; 98*4882a593Smuzhiyun pinctrl-names = "default"; 99*4882a593Smuzhiyun pinctrl-0 = <&cp0_sfp_1g_pins &cp1_sfp_1g_pins>; 100*4882a593Smuzhiyun maximum-power-milliwatt = <2000>; 101*4882a593Smuzhiyun }; 102*4882a593Smuzhiyun}; 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun&uart0 { 105*4882a593Smuzhiyun status = "okay"; 106*4882a593Smuzhiyun pinctrl-0 = <&uart0_pins>; 107*4882a593Smuzhiyun pinctrl-names = "default"; 108*4882a593Smuzhiyun}; 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun&ap_sdhci0 { 111*4882a593Smuzhiyun bus-width = <8>; 112*4882a593Smuzhiyun /* 113*4882a593Smuzhiyun * Not stable in HS modes - phy needs "more calibration", so add 114*4882a593Smuzhiyun * the "slow-mode" and disable SDR104, SDR50 and DDR50 modes. 115*4882a593Smuzhiyun */ 116*4882a593Smuzhiyun marvell,xenon-phy-slow-mode; 117*4882a593Smuzhiyun no-1-8-v; 118*4882a593Smuzhiyun no-sd; 119*4882a593Smuzhiyun no-sdio; 120*4882a593Smuzhiyun non-removable; 121*4882a593Smuzhiyun status = "okay"; 122*4882a593Smuzhiyun vqmmc-supply = <&v_vddo_h>; 123*4882a593Smuzhiyun}; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun&cp0_i2c0 { 126*4882a593Smuzhiyun clock-frequency = <100000>; 127*4882a593Smuzhiyun pinctrl-names = "default"; 128*4882a593Smuzhiyun pinctrl-0 = <&cp0_i2c0_pins>; 129*4882a593Smuzhiyun status = "okay"; 130*4882a593Smuzhiyun}; 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun&cp0_i2c1 { 133*4882a593Smuzhiyun clock-frequency = <100000>; 134*4882a593Smuzhiyun pinctrl-names = "default"; 135*4882a593Smuzhiyun pinctrl-0 = <&cp0_i2c1_pins>; 136*4882a593Smuzhiyun status = "okay"; 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun i2c-switch@70 { 139*4882a593Smuzhiyun compatible = "nxp,pca9548"; 140*4882a593Smuzhiyun #address-cells = <1>; 141*4882a593Smuzhiyun #size-cells = <0>; 142*4882a593Smuzhiyun reg = <0x70>; 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun sfpp0_i2c: i2c@0 { 145*4882a593Smuzhiyun #address-cells = <1>; 146*4882a593Smuzhiyun #size-cells = <0>; 147*4882a593Smuzhiyun reg = <0>; 148*4882a593Smuzhiyun }; 149*4882a593Smuzhiyun sfpp1_i2c: i2c@1 { 150*4882a593Smuzhiyun #address-cells = <1>; 151*4882a593Smuzhiyun #size-cells = <0>; 152*4882a593Smuzhiyun reg = <1>; 153*4882a593Smuzhiyun }; 154*4882a593Smuzhiyun sfp_1g_i2c: i2c@2 { 155*4882a593Smuzhiyun #address-cells = <1>; 156*4882a593Smuzhiyun #size-cells = <0>; 157*4882a593Smuzhiyun reg = <2>; 158*4882a593Smuzhiyun }; 159*4882a593Smuzhiyun }; 160*4882a593Smuzhiyun}; 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun/* J25 UART header */ 163*4882a593Smuzhiyun&cp0_uart1 { 164*4882a593Smuzhiyun pinctrl-names = "default"; 165*4882a593Smuzhiyun pinctrl-0 = <&cp0_uart1_pins>; 166*4882a593Smuzhiyun status = "okay"; 167*4882a593Smuzhiyun}; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun&cp0_mdio { 170*4882a593Smuzhiyun pinctrl-names = "default"; 171*4882a593Smuzhiyun pinctrl-0 = <&cp0_ge_mdio_pins>; 172*4882a593Smuzhiyun status = "okay"; 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun ge_phy: ethernet-phy@0 { 175*4882a593Smuzhiyun reg = <0>; 176*4882a593Smuzhiyun }; 177*4882a593Smuzhiyun}; 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun&cp0_pcie0 { 180*4882a593Smuzhiyun pinctrl-names = "default"; 181*4882a593Smuzhiyun pinctrl-0 = <&cp0_pcie_pins>; 182*4882a593Smuzhiyun num-lanes = <4>; 183*4882a593Smuzhiyun num-viewport = <8>; 184*4882a593Smuzhiyun reset-gpios = <&cp0_gpio2 20 GPIO_ACTIVE_LOW>; 185*4882a593Smuzhiyun ranges = <0x82000000 0x0 0xc0000000 0x0 0xc0000000 0x0 0x20000000>; 186*4882a593Smuzhiyun phys = <&cp0_comphy0 0>, <&cp0_comphy1 0>, 187*4882a593Smuzhiyun <&cp0_comphy2 0>, <&cp0_comphy3 0>; 188*4882a593Smuzhiyun phy-names = "cp0-pcie0-x4-lane0-phy", "cp0-pcie0-x4-lane1-phy", 189*4882a593Smuzhiyun "cp0-pcie0-x4-lane2-phy", "cp0-pcie0-x4-lane3-phy"; 190*4882a593Smuzhiyun status = "okay"; 191*4882a593Smuzhiyun}; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun&cp0_pinctrl { 194*4882a593Smuzhiyun cp0_ge_mdio_pins: ge-mdio-pins { 195*4882a593Smuzhiyun marvell,pins = "mpp32", "mpp34"; 196*4882a593Smuzhiyun marvell,function = "ge"; 197*4882a593Smuzhiyun }; 198*4882a593Smuzhiyun cp0_i2c1_pins: i2c1-pins { 199*4882a593Smuzhiyun marvell,pins = "mpp35", "mpp36"; 200*4882a593Smuzhiyun marvell,function = "i2c1"; 201*4882a593Smuzhiyun }; 202*4882a593Smuzhiyun cp0_i2c0_pins: i2c0-pins { 203*4882a593Smuzhiyun marvell,pins = "mpp37", "mpp38"; 204*4882a593Smuzhiyun marvell,function = "i2c0"; 205*4882a593Smuzhiyun }; 206*4882a593Smuzhiyun cp0_uart1_pins: uart1-pins { 207*4882a593Smuzhiyun marvell,pins = "mpp40", "mpp41"; 208*4882a593Smuzhiyun marvell,function = "uart1"; 209*4882a593Smuzhiyun }; 210*4882a593Smuzhiyun cp0_xhci_vbus_pins: xhci0-vbus-pins { 211*4882a593Smuzhiyun marvell,pins = "mpp47"; 212*4882a593Smuzhiyun marvell,function = "gpio"; 213*4882a593Smuzhiyun }; 214*4882a593Smuzhiyun cp0_sfp_1g_pins: sfp-1g-pins { 215*4882a593Smuzhiyun marvell,pins = "mpp51", "mpp53", "mpp54"; 216*4882a593Smuzhiyun marvell,function = "gpio"; 217*4882a593Smuzhiyun }; 218*4882a593Smuzhiyun cp0_pcie_pins: pcie-pins { 219*4882a593Smuzhiyun marvell,pins = "mpp52"; 220*4882a593Smuzhiyun marvell,function = "gpio"; 221*4882a593Smuzhiyun }; 222*4882a593Smuzhiyun cp0_sdhci_pins: sdhci-pins { 223*4882a593Smuzhiyun marvell,pins = "mpp55", "mpp56", "mpp57", "mpp58", "mpp59", 224*4882a593Smuzhiyun "mpp60", "mpp61"; 225*4882a593Smuzhiyun marvell,function = "sdio"; 226*4882a593Smuzhiyun }; 227*4882a593Smuzhiyun cp0_sfpp1_pins: sfpp1-pins { 228*4882a593Smuzhiyun marvell,pins = "mpp62"; 229*4882a593Smuzhiyun marvell,function = "gpio"; 230*4882a593Smuzhiyun }; 231*4882a593Smuzhiyun}; 232*4882a593Smuzhiyun 233*4882a593Smuzhiyun&cp0_ethernet { 234*4882a593Smuzhiyun status = "okay"; 235*4882a593Smuzhiyun}; 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun&cp0_eth0 { 238*4882a593Smuzhiyun /* Generic PHY, providing serdes lanes */ 239*4882a593Smuzhiyun phys = <&cp0_comphy4 0>; 240*4882a593Smuzhiyun}; 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun&cp0_sata0 { 243*4882a593Smuzhiyun status = "okay"; 244*4882a593Smuzhiyun 245*4882a593Smuzhiyun /* CPM Lane 5 - U29 */ 246*4882a593Smuzhiyun sata-port@1 { 247*4882a593Smuzhiyun phys = <&cp0_comphy5 1>; 248*4882a593Smuzhiyun phy-names = "cp0-sata0-1-phy"; 249*4882a593Smuzhiyun }; 250*4882a593Smuzhiyun}; 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun&cp0_sdhci0 { 253*4882a593Smuzhiyun /* U6 */ 254*4882a593Smuzhiyun broken-cd; 255*4882a593Smuzhiyun bus-width = <4>; 256*4882a593Smuzhiyun pinctrl-names = "default"; 257*4882a593Smuzhiyun pinctrl-0 = <&cp0_sdhci_pins>; 258*4882a593Smuzhiyun status = "okay"; 259*4882a593Smuzhiyun vqmmc-supply = <&v_3_3>; 260*4882a593Smuzhiyun}; 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun&cp0_usb3_0 { 263*4882a593Smuzhiyun /* J38? - USB2.0 only */ 264*4882a593Smuzhiyun status = "okay"; 265*4882a593Smuzhiyun}; 266*4882a593Smuzhiyun 267*4882a593Smuzhiyun&cp0_usb3_1 { 268*4882a593Smuzhiyun /* J38? - USB2.0 only */ 269*4882a593Smuzhiyun status = "okay"; 270*4882a593Smuzhiyun}; 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun&cp1_ethernet { 273*4882a593Smuzhiyun status = "okay"; 274*4882a593Smuzhiyun}; 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun&cp1_eth0 { 277*4882a593Smuzhiyun /* Generic PHY, providing serdes lanes */ 278*4882a593Smuzhiyun phys = <&cp1_comphy4 0>; 279*4882a593Smuzhiyun}; 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun&cp1_eth1 { 282*4882a593Smuzhiyun /* CPS Lane 0 - J5 (Gigabit RJ45) */ 283*4882a593Smuzhiyun status = "okay"; 284*4882a593Smuzhiyun /* Network PHY */ 285*4882a593Smuzhiyun phy = <&ge_phy>; 286*4882a593Smuzhiyun phy-mode = "sgmii"; 287*4882a593Smuzhiyun /* Generic PHY, providing serdes lanes */ 288*4882a593Smuzhiyun phys = <&cp1_comphy0 1>; 289*4882a593Smuzhiyun}; 290*4882a593Smuzhiyun 291*4882a593Smuzhiyun&cp1_eth2 { 292*4882a593Smuzhiyun /* CPS Lane 5 */ 293*4882a593Smuzhiyun status = "okay"; 294*4882a593Smuzhiyun /* Network PHY */ 295*4882a593Smuzhiyun phy-mode = "2500base-x"; 296*4882a593Smuzhiyun managed = "in-band-status"; 297*4882a593Smuzhiyun /* Generic PHY, providing serdes lanes */ 298*4882a593Smuzhiyun phys = <&cp1_comphy5 2>; 299*4882a593Smuzhiyun sfp = <&sfp_eth3>; 300*4882a593Smuzhiyun}; 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun&cp1_pinctrl { 303*4882a593Smuzhiyun cp1_sfpp1_pins: sfpp1-pins { 304*4882a593Smuzhiyun marvell,pins = "mpp8", "mpp10", "mpp11"; 305*4882a593Smuzhiyun marvell,function = "gpio"; 306*4882a593Smuzhiyun }; 307*4882a593Smuzhiyun cp1_spi1_pins: spi1-pins { 308*4882a593Smuzhiyun marvell,pins = "mpp12", "mpp13", "mpp14", "mpp15", "mpp16"; 309*4882a593Smuzhiyun marvell,function = "spi1"; 310*4882a593Smuzhiyun }; 311*4882a593Smuzhiyun cp1_uart0_pins: uart0-pins { 312*4882a593Smuzhiyun marvell,pins = "mpp6", "mpp7"; 313*4882a593Smuzhiyun marvell,function = "uart0"; 314*4882a593Smuzhiyun }; 315*4882a593Smuzhiyun cp1_sfp_1g_pins: sfp-1g-pins { 316*4882a593Smuzhiyun marvell,pins = "mpp24"; 317*4882a593Smuzhiyun marvell,function = "gpio"; 318*4882a593Smuzhiyun }; 319*4882a593Smuzhiyun cp1_sfpp0_pins: sfpp0-pins { 320*4882a593Smuzhiyun marvell,pins = "mpp26", "mpp27", "mpp28", "mpp29"; 321*4882a593Smuzhiyun marvell,function = "gpio"; 322*4882a593Smuzhiyun }; 323*4882a593Smuzhiyun}; 324*4882a593Smuzhiyun 325*4882a593Smuzhiyun/* J27 UART header */ 326*4882a593Smuzhiyun&cp1_uart0 { 327*4882a593Smuzhiyun pinctrl-names = "default"; 328*4882a593Smuzhiyun pinctrl-0 = <&cp1_uart0_pins>; 329*4882a593Smuzhiyun status = "okay"; 330*4882a593Smuzhiyun}; 331*4882a593Smuzhiyun 332*4882a593Smuzhiyun&cp1_sata0 { 333*4882a593Smuzhiyun status = "okay"; 334*4882a593Smuzhiyun 335*4882a593Smuzhiyun /* CPS Lane 1 - U32 */ 336*4882a593Smuzhiyun sata-port@0 { 337*4882a593Smuzhiyun phys = <&cp1_comphy1 0>; 338*4882a593Smuzhiyun phy-names = "cp1-sata0-0-phy"; 339*4882a593Smuzhiyun }; 340*4882a593Smuzhiyun 341*4882a593Smuzhiyun /* CPS Lane 3 - U31 */ 342*4882a593Smuzhiyun sata-port@1 { 343*4882a593Smuzhiyun phys = <&cp1_comphy3 1>; 344*4882a593Smuzhiyun phy-names = "cp1-sata0-1-phy"; 345*4882a593Smuzhiyun }; 346*4882a593Smuzhiyun}; 347*4882a593Smuzhiyun 348*4882a593Smuzhiyun&cp1_spi1 { 349*4882a593Smuzhiyun pinctrl-names = "default"; 350*4882a593Smuzhiyun pinctrl-0 = <&cp1_spi1_pins>; 351*4882a593Smuzhiyun status = "okay"; 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun spi-flash@0 { 354*4882a593Smuzhiyun compatible = "st,w25q32"; 355*4882a593Smuzhiyun spi-max-frequency = <50000000>; 356*4882a593Smuzhiyun reg = <0>; 357*4882a593Smuzhiyun }; 358*4882a593Smuzhiyun}; 359*4882a593Smuzhiyun 360*4882a593Smuzhiyun&cp1_comphy2 { 361*4882a593Smuzhiyun cp1_usbh0_con: connector { 362*4882a593Smuzhiyun compatible = "usb-a-connector"; 363*4882a593Smuzhiyun phy-supply = <&v_5v0_usb3_hst_vbus>; 364*4882a593Smuzhiyun }; 365*4882a593Smuzhiyun}; 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun&cp1_usb3_0 { 368*4882a593Smuzhiyun /* CPS Lane 2 - CON7 */ 369*4882a593Smuzhiyun phys = <&cp1_comphy2 0>; 370*4882a593Smuzhiyun phy-names = "cp1-usb3h0-comphy"; 371*4882a593Smuzhiyun status = "okay"; 372*4882a593Smuzhiyun}; 373