1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Device tree for Winterland IceBoard 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * https://mcgillcosmology.com 6*4882a593Smuzhiyun * https://threespeedlogic.com 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * This is an ARM + FPGA instrumentation board used at telescopes in 9*4882a593Smuzhiyun * Antarctica (the South Pole Telescope), Chile (POLARBEAR), and at the DRAO 10*4882a593Smuzhiyun * observatory in British Columbia (CHIME). 11*4882a593Smuzhiyun * 12*4882a593Smuzhiyun * Copyright (c) 2019 Three-Speed Logic, Inc. <gsmecher@threespeedlogic.com> 13*4882a593Smuzhiyun */ 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun/dts-v1/; 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun#include "dm814x.dtsi" 18*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/irq.h> 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun/ { 21*4882a593Smuzhiyun model = "Winterland IceBoard"; 22*4882a593Smuzhiyun compatible = "ti,dm8148", "ti,dm814"; 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun chosen { 25*4882a593Smuzhiyun stdout-path = "serial1:115200n8"; 26*4882a593Smuzhiyun bootargs = "earlycon"; 27*4882a593Smuzhiyun }; 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun memory@80000000 { 30*4882a593Smuzhiyun device_type = "memory"; 31*4882a593Smuzhiyun reg = <0x80000000 0x40000000>; /* 1 GB */ 32*4882a593Smuzhiyun }; 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun vmmcsd_fixed: fixedregulator0 { 35*4882a593Smuzhiyun compatible = "regulator-fixed"; 36*4882a593Smuzhiyun regulator-name = "vmmcsd_fixed"; 37*4882a593Smuzhiyun regulator-min-microvolt = <3300000>; 38*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 39*4882a593Smuzhiyun regulator-always-on; 40*4882a593Smuzhiyun }; 41*4882a593Smuzhiyun}; 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun/* The MAC provides internal delay for the transmit path ONLY, which is enabled 44*4882a593Smuzhiyun * provided no -id/-txid/-rxid suffix is provided to "phy-mode". 45*4882a593Smuzhiyun * 46*4882a593Smuzhiyun * The receive path is delayed at the PHY. The recommended register settings 47*4882a593Smuzhiyun * are 0xf0 for the control bits, and 0x7777 for the data bits. However, the 48*4882a593Smuzhiyun * conversion code in the kernel lies: the PHY's registers are 120 ps per tap, 49*4882a593Smuzhiyun * and the kernel assumes 200 ps per tap. So we have fudged the numbers here to 50*4882a593Smuzhiyun * obtain the correct register settings. 51*4882a593Smuzhiyun */ 52*4882a593Smuzhiyun&mac { dual_emac = <1>; }; 53*4882a593Smuzhiyun&cpsw_emac0 { 54*4882a593Smuzhiyun phy-handle = <ðphy0>; 55*4882a593Smuzhiyun phy-mode = "rgmii"; 56*4882a593Smuzhiyun dual_emac_res_vlan = <1>; 57*4882a593Smuzhiyun}; 58*4882a593Smuzhiyun&cpsw_emac1 { 59*4882a593Smuzhiyun phy-handle = <ðphy1>; 60*4882a593Smuzhiyun phy-mode = "rgmii"; 61*4882a593Smuzhiyun dual_emac_res_vlan = <2>; 62*4882a593Smuzhiyun}; 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun&davinci_mdio { 65*4882a593Smuzhiyun ethphy0: ethernet-phy@0 { 66*4882a593Smuzhiyun reg = <0x2>; 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun rxc-skew-ps = <3000>; 69*4882a593Smuzhiyun rxdv-skew-ps = <0>; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun rxd3-skew-ps = <0>; 72*4882a593Smuzhiyun rxd2-skew-ps = <0>; 73*4882a593Smuzhiyun rxd1-skew-ps = <0>; 74*4882a593Smuzhiyun rxd0-skew-ps = <0>; 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun phy-reset-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>; 77*4882a593Smuzhiyun }; 78*4882a593Smuzhiyun 79*4882a593Smuzhiyun ethphy1: ethernet-phy@1 { 80*4882a593Smuzhiyun reg = <0x1>; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun rxc-skew-ps = <3000>; 83*4882a593Smuzhiyun rxdv-skew-ps = <0>; 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun rxd3-skew-ps = <0>; 86*4882a593Smuzhiyun rxd2-skew-ps = <0>; 87*4882a593Smuzhiyun rxd1-skew-ps = <0>; 88*4882a593Smuzhiyun rxd0-skew-ps = <0>; 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun phy-reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>; 91*4882a593Smuzhiyun }; 92*4882a593Smuzhiyun}; 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun&mmc1 { status = "disabled"; }; 95*4882a593Smuzhiyun&mmc2 { 96*4882a593Smuzhiyun pinctrl-names = "default"; 97*4882a593Smuzhiyun pinctrl-0 = <&mmc2_pins>; 98*4882a593Smuzhiyun vmmc-supply = <&vmmcsd_fixed>; 99*4882a593Smuzhiyun bus-width = <4>; 100*4882a593Smuzhiyun}; 101*4882a593Smuzhiyun&mmc3 { status = "disabled"; }; 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun&i2c1 { 104*4882a593Smuzhiyun /* Most I2C activity happens through this port, with the sole exception 105*4882a593Smuzhiyun * of the backplane. Since there are multiply assigned addresses, the 106*4882a593Smuzhiyun * "i2c-mux-idle-disconnect" is important. 107*4882a593Smuzhiyun */ 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun pca9548@70 { 110*4882a593Smuzhiyun compatible = "nxp,pca9548"; 111*4882a593Smuzhiyun reg = <0x70>; 112*4882a593Smuzhiyun #address-cells = <1>; 113*4882a593Smuzhiyun #size-cells = <0>; 114*4882a593Smuzhiyun i2c-mux-idle-disconnect; 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun i2c@0 { 117*4882a593Smuzhiyun /* FMC A */ 118*4882a593Smuzhiyun #address-cells = <1>; 119*4882a593Smuzhiyun #size-cells = <0>; 120*4882a593Smuzhiyun reg = <0>; 121*4882a593Smuzhiyun }; 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun i2c@1 { 124*4882a593Smuzhiyun /* FMC B */ 125*4882a593Smuzhiyun #address-cells = <1>; 126*4882a593Smuzhiyun #size-cells = <0>; 127*4882a593Smuzhiyun reg = <1>; 128*4882a593Smuzhiyun }; 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun i2c@2 { 131*4882a593Smuzhiyun /* QSFP A */ 132*4882a593Smuzhiyun #address-cells = <1>; 133*4882a593Smuzhiyun #size-cells = <0>; 134*4882a593Smuzhiyun reg = <2>; 135*4882a593Smuzhiyun }; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun i2c@3 { 138*4882a593Smuzhiyun /* QSFP B */ 139*4882a593Smuzhiyun #address-cells = <1>; 140*4882a593Smuzhiyun #size-cells = <0>; 141*4882a593Smuzhiyun reg = <3>; 142*4882a593Smuzhiyun }; 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun i2c@4 { 145*4882a593Smuzhiyun /* SFP */ 146*4882a593Smuzhiyun #address-cells = <1>; 147*4882a593Smuzhiyun #size-cells = <0>; 148*4882a593Smuzhiyun reg = <4>; 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun i2c@5 { 152*4882a593Smuzhiyun #address-cells = <1>; 153*4882a593Smuzhiyun #size-cells = <0>; 154*4882a593Smuzhiyun reg = <5>; 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun ina230@40 { compatible = "ti,ina230"; reg = <0x40>; shunt-resistor = <5000>; }; 157*4882a593Smuzhiyun ina230@41 { compatible = "ti,ina230"; reg = <0x41>; shunt-resistor = <5000>; }; 158*4882a593Smuzhiyun ina230@42 { compatible = "ti,ina230"; reg = <0x42>; shunt-resistor = <5000>; }; 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun ina230@44 { compatible = "ti,ina230"; reg = <0x44>; shunt-resistor = <5000>; }; 161*4882a593Smuzhiyun ina230@45 { compatible = "ti,ina230"; reg = <0x45>; shunt-resistor = <5000>; }; 162*4882a593Smuzhiyun ina230@46 { compatible = "ti,ina230"; reg = <0x46>; shunt-resistor = <5000>; }; 163*4882a593Smuzhiyun 164*4882a593Smuzhiyun ina230@47 { compatible = "ti,ina230"; reg = <0x47>; shunt-resistor = <5500>; }; 165*4882a593Smuzhiyun ina230@48 { compatible = "ti,ina230"; reg = <0x48>; shunt-resistor = <2360>; }; 166*4882a593Smuzhiyun ina230@49 { compatible = "ti,ina230"; reg = <0x49>; shunt-resistor = <2360>; }; 167*4882a593Smuzhiyun ina230@43 { compatible = "ti,ina230"; reg = <0x43>; shunt-resistor = <2360>; }; 168*4882a593Smuzhiyun ina230@4b { compatible = "ti,ina230"; reg = <0x4b>; shunt-resistor = <5500>; }; 169*4882a593Smuzhiyun ina230@4c { compatible = "ti,ina230"; reg = <0x4c>; shunt-resistor = <2360>; }; 170*4882a593Smuzhiyun ina230@4d { compatible = "ti,ina230"; reg = <0x4d>; shunt-resistor = <770>; }; 171*4882a593Smuzhiyun ina230@4e { compatible = "ti,ina230"; reg = <0x4e>; shunt-resistor = <770>; }; 172*4882a593Smuzhiyun ina230@4f { compatible = "ti,ina230"; reg = <0x4f>; shunt-resistor = <770>; }; 173*4882a593Smuzhiyun }; 174*4882a593Smuzhiyun 175*4882a593Smuzhiyun i2c@6 { 176*4882a593Smuzhiyun /* Backplane */ 177*4882a593Smuzhiyun #address-cells = <1>; 178*4882a593Smuzhiyun #size-cells = <0>; 179*4882a593Smuzhiyun reg = <6>; 180*4882a593Smuzhiyun }; 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun i2c@7 { 183*4882a593Smuzhiyun #address-cells = <1>; 184*4882a593Smuzhiyun #size-cells = <0>; 185*4882a593Smuzhiyun reg = <7>; 186*4882a593Smuzhiyun 187*4882a593Smuzhiyun u41: pca9575@20 { 188*4882a593Smuzhiyun compatible = "nxp,pca9575"; 189*4882a593Smuzhiyun reg = <0x20>; 190*4882a593Smuzhiyun gpio-controller; 191*4882a593Smuzhiyun #gpio-cells = <2>; 192*4882a593Smuzhiyun 193*4882a593Smuzhiyun gpio-line-names = 194*4882a593Smuzhiyun "FMCA_EN_12V0", "FMCA_EN_3V3", "FMCA_EN_VADJ", "FMCA_PG_M2C", 195*4882a593Smuzhiyun "FMCA_PG_C2M", "FMCA_PRSNT_M2C_L", "FMCA_CLK_DIR", "SFP_LOS", 196*4882a593Smuzhiyun "FMCB_EN_12V0", "FMCB_EN_3V3", "FMCB_EN_VADJ", "FMCB_PG_M2C", 197*4882a593Smuzhiyun "FMCB_PG_C2M", "FMCB_PRSNT_M2C_L", "FMCB_CLK_DIR", "SFP_ModPrsL"; 198*4882a593Smuzhiyun reset-gpios = <&gpio2 11 GPIO_ACTIVE_LOW>; 199*4882a593Smuzhiyun }; 200*4882a593Smuzhiyun 201*4882a593Smuzhiyun u42: pca9575@21 { 202*4882a593Smuzhiyun compatible = "nxp,pca9575"; 203*4882a593Smuzhiyun reg = <0x21>; 204*4882a593Smuzhiyun gpio-controller; 205*4882a593Smuzhiyun #gpio-cells = <2>; 206*4882a593Smuzhiyun gpio-line-names = 207*4882a593Smuzhiyun "QSFPA_ModPrsL", "QSFPA_IntL", "QSFPA_ResetL", "QSFPA_ModSelL", 208*4882a593Smuzhiyun "QSFPA_LPMode", "QSFPB_ModPrsL", "QSFPB_IntL", "QSFPB_ResetL", 209*4882a593Smuzhiyun "SFP_TxFault", "SFP_TxDisable", "SFP_RS0", "SFP_RS1", 210*4882a593Smuzhiyun "QSFPB_ModSelL", "QSFPB_LPMode", "SEL_SFP", "ARM_MR"; 211*4882a593Smuzhiyun reset-gpios = <&gpio2 11 GPIO_ACTIVE_LOW>; 212*4882a593Smuzhiyun }; 213*4882a593Smuzhiyun 214*4882a593Smuzhiyun u48: pca9575@22 { 215*4882a593Smuzhiyun compatible = "nxp,pca9575"; 216*4882a593Smuzhiyun reg=<0x22>; 217*4882a593Smuzhiyun gpio-controller; 218*4882a593Smuzhiyun #gpio-cells = <2>; 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun sw-gpios = <&u48 0 0>, <&u48 1 0>, <&u48 2 0>, <&u48 3 0>, 221*4882a593Smuzhiyun <&u48 4 0>, <&u48 5 0>, <&u48 6 0>, <&u48 7 0>; 222*4882a593Smuzhiyun led-gpios = <&u48 7 0>, <&u48 6 0>, <&u48 5 0>, <&u48 4 0>, 223*4882a593Smuzhiyun <&u48 3 0>, <&u48 2 0>, <&u48 1 0>, <&u48 0 0>; 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun gpio-line-names = 226*4882a593Smuzhiyun "GP_SW1", "GP_SW2", "GP_SW3", "GP_SW4", 227*4882a593Smuzhiyun "GP_SW5", "GP_SW6", "GP_SW7", "GP_SW8", 228*4882a593Smuzhiyun "GP_LED8", "GP_LED7", "GP_LED6", "GP_LED5", 229*4882a593Smuzhiyun "GP_LED4", "GP_LED3", "GP_LED2", "GP_LED1"; 230*4882a593Smuzhiyun reset-gpios = <&gpio2 11 GPIO_ACTIVE_LOW>; 231*4882a593Smuzhiyun }; 232*4882a593Smuzhiyun 233*4882a593Smuzhiyun u59: pca9575@23 { 234*4882a593Smuzhiyun compatible = "nxp,pca9575"; 235*4882a593Smuzhiyun reg=<0x23>; 236*4882a593Smuzhiyun gpio-controller; 237*4882a593Smuzhiyun #gpio-cells = <2>; 238*4882a593Smuzhiyun gpio-line-names = 239*4882a593Smuzhiyun "GP_LED9", "GP_LED10", "GP_LED11", "GP_LED12", 240*4882a593Smuzhiyun "GTX1V8PowerFault", "PHYAPowerFault", "PHYBPowerFault", "ArmPowerFault", 241*4882a593Smuzhiyun "BP_SLOW_GPIO0", "BP_SLOW_GPIO1", "BP_SLOW_GPIO2", "BP_SLOW_GPIO3", 242*4882a593Smuzhiyun "BP_SLOW_GPIO4", "BP_SLOW_GPIO5", "__unused_u59_p16", "__unused_u59_p17"; 243*4882a593Smuzhiyun reset-gpios = <&gpio2 11 GPIO_ACTIVE_LOW>; 244*4882a593Smuzhiyun }; 245*4882a593Smuzhiyun 246*4882a593Smuzhiyun tmp100@48 { compatible = "ti,tmp100"; reg = <0x48>; }; 247*4882a593Smuzhiyun tmp100@4a { compatible = "ti,tmp100"; reg = <0x4a>; }; 248*4882a593Smuzhiyun tmp100@4b { compatible = "ti,tmp100"; reg = <0x4b>; }; 249*4882a593Smuzhiyun tmp100@4c { compatible = "ti,tmp100"; reg = <0x4c>; }; 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun /* EEPROM bank and serial number are treated as separate devices */ 252*4882a593Smuzhiyun at24c01@57 { compatible = "atmel,24c01"; reg = <0x57>; }; 253*4882a593Smuzhiyun at24cs01@5f { compatible = "atmel,24cs01"; reg = <0x5f>; }; 254*4882a593Smuzhiyun }; 255*4882a593Smuzhiyun }; 256*4882a593Smuzhiyun}; 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun&i2c2 { 259*4882a593Smuzhiyun pca9548@71 { 260*4882a593Smuzhiyun compatible = "nxp,pca9548"; 261*4882a593Smuzhiyun reg = <0x71>; 262*4882a593Smuzhiyun #address-cells = <1>; 263*4882a593Smuzhiyun #size-cells = <0>; 264*4882a593Smuzhiyun 265*4882a593Smuzhiyun i2c@6 { 266*4882a593Smuzhiyun /* Backplane */ 267*4882a593Smuzhiyun #address-cells = <1>; 268*4882a593Smuzhiyun #size-cells = <0>; 269*4882a593Smuzhiyun reg = <6>; 270*4882a593Smuzhiyun multi-master; 271*4882a593Smuzhiyun 272*4882a593Smuzhiyun /* All backplanes should have this -- it's how we know they're there. */ 273*4882a593Smuzhiyun at24c08@54 { compatible="atmel,24c08"; reg=<0x54>; }; 274*4882a593Smuzhiyun at24cs08@5c { compatible="atmel,24cs08"; reg=<0x5c>; }; 275*4882a593Smuzhiyun 276*4882a593Smuzhiyun /* 16 slot backplane */ 277*4882a593Smuzhiyun tmp421@4d { compatible="ti,tmp421"; reg=<0x4d>; }; 278*4882a593Smuzhiyun tmp421@4e { compatible="ti,tmp421"; reg=<0x4e>; }; 279*4882a593Smuzhiyun ina230@40 { compatible = "ti,ina230"; reg = <0x40>; shunt-resistor = <2360>; }; 280*4882a593Smuzhiyun amc6821@18 { compatible = "ti,amc6821"; reg = <0x18>; }; 281*4882a593Smuzhiyun 282*4882a593Smuzhiyun /* Single slot backplane */ 283*4882a593Smuzhiyun }; 284*4882a593Smuzhiyun }; 285*4882a593Smuzhiyun}; 286*4882a593Smuzhiyun 287*4882a593Smuzhiyun&pincntl { 288*4882a593Smuzhiyun mmc2_pins: pinmux_mmc2_pins { 289*4882a593Smuzhiyun pinctrl-single,pins = < 290*4882a593Smuzhiyun DM814X_IOPAD(0x0800, PIN_INPUT | 0x1) /* SD1_CLK */ 291*4882a593Smuzhiyun DM814X_IOPAD(0x0804, PIN_INPUT_PULLUP | 0x1) /* SD1_CMD */ 292*4882a593Smuzhiyun DM814X_IOPAD(0x0808, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[0] */ 293*4882a593Smuzhiyun DM814X_IOPAD(0x080c, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[1] */ 294*4882a593Smuzhiyun DM814X_IOPAD(0x0810, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[2] */ 295*4882a593Smuzhiyun DM814X_IOPAD(0x0814, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[3] */ 296*4882a593Smuzhiyun DM814X_IOPAD(0x0924, PIN_INPUT_PULLUP | 0x40) /* SD1_POW */ 297*4882a593Smuzhiyun DM814X_IOPAD(0x0928, PIN_INPUT | 0x40) /* SD1_SDWP */ 298*4882a593Smuzhiyun DM814X_IOPAD(0x093C, PIN_INPUT | 0x2) /* SD1_SDCD */ 299*4882a593Smuzhiyun >; 300*4882a593Smuzhiyun }; 301*4882a593Smuzhiyun 302*4882a593Smuzhiyun usb0_pins: pinmux_usb0_pins { 303*4882a593Smuzhiyun pinctrl-single,pins = < 304*4882a593Smuzhiyun DM814X_IOPAD(0x0c34, PIN_OUTPUT | 0x1) /* USB0_DRVVBUS */ 305*4882a593Smuzhiyun >; 306*4882a593Smuzhiyun }; 307*4882a593Smuzhiyun 308*4882a593Smuzhiyun usb1_pins: pinmux_usb1_pins { 309*4882a593Smuzhiyun pinctrl-single,pins = < 310*4882a593Smuzhiyun DM814X_IOPAD(0x0834, PIN_OUTPUT | 0x80) /* USB1_DRVVBUS */ 311*4882a593Smuzhiyun >; 312*4882a593Smuzhiyun }; 313*4882a593Smuzhiyun 314*4882a593Smuzhiyun gpio1_pins: pinmux_gpio1_pins { 315*4882a593Smuzhiyun pinctrl-single,pins = < 316*4882a593Smuzhiyun DM814X_IOPAD(0x081c, PIN_OUTPUT | 0x80) /* PROGRAM_B */ 317*4882a593Smuzhiyun DM814X_IOPAD(0x0820, PIN_INPUT | 0x80) /* INIT_B */ 318*4882a593Smuzhiyun DM814X_IOPAD(0x0824, PIN_INPUT | 0x80) /* DONE */ 319*4882a593Smuzhiyun 320*4882a593Smuzhiyun DM814X_IOPAD(0x0838, PIN_INPUT_PULLUP | 0x80) /* FMCA_TMS */ 321*4882a593Smuzhiyun DM814X_IOPAD(0x083c, PIN_INPUT_PULLUP | 0x80) /* FMCA_TCK */ 322*4882a593Smuzhiyun DM814X_IOPAD(0x0898, PIN_INPUT_PULLUP | 0x80) /* FMCA_TDO */ 323*4882a593Smuzhiyun DM814X_IOPAD(0x089c, PIN_INPUT_PULLUP | 0x80) /* FMCA_TDI */ 324*4882a593Smuzhiyun DM814X_IOPAD(0x08ac, PIN_INPUT_PULLUP | 0x80) /* FMCA_TRST */ 325*4882a593Smuzhiyun 326*4882a593Smuzhiyun DM814X_IOPAD(0x08b0, PIN_INPUT_PULLUP | 0x80) /* FMCB_TMS */ 327*4882a593Smuzhiyun DM814X_IOPAD(0x0a88, PIN_INPUT_PULLUP | 0x80) /* FMCB_TCK */ 328*4882a593Smuzhiyun DM814X_IOPAD(0x0a8c, PIN_INPUT_PULLUP | 0x80) /* FMCB_TDO */ 329*4882a593Smuzhiyun DM814X_IOPAD(0x08bc, PIN_INPUT_PULLUP | 0x80) /* FMCB_TDI */ 330*4882a593Smuzhiyun DM814X_IOPAD(0x0a94, PIN_INPUT_PULLUP | 0x80) /* FMCB_TRST */ 331*4882a593Smuzhiyun 332*4882a593Smuzhiyun DM814X_IOPAD(0x08d4, PIN_INPUT_PULLUP | 0x80) /* FPGA_TMS */ 333*4882a593Smuzhiyun DM814X_IOPAD(0x0aa8, PIN_INPUT_PULLUP | 0x80) /* FPGA_TCK */ 334*4882a593Smuzhiyun DM814X_IOPAD(0x0adc, PIN_INPUT_PULLUP | 0x80) /* FPGA_TDO */ 335*4882a593Smuzhiyun DM814X_IOPAD(0x0ab0, PIN_INPUT_PULLUP | 0x80) /* FPGA_TDI */ 336*4882a593Smuzhiyun >; 337*4882a593Smuzhiyun }; 338*4882a593Smuzhiyun 339*4882a593Smuzhiyun gpio2_pins: pinmux_gpio2_pins { 340*4882a593Smuzhiyun pinctrl-single,pins = < 341*4882a593Smuzhiyun DM814X_IOPAD(0x090c, PIN_INPUT_PULLUP | 0x80) /* PHY A IRQ */ 342*4882a593Smuzhiyun DM814X_IOPAD(0x0910, PIN_INPUT_PULLUP | 0x80) /* PHY A RESET */ 343*4882a593Smuzhiyun DM814X_IOPAD(0x08f4, PIN_INPUT_PULLUP | 0x80) /* PHY B IRQ */ 344*4882a593Smuzhiyun DM814X_IOPAD(0x08f8, PIN_INPUT_PULLUP | 0x80) /* PHY B RESET */ 345*4882a593Smuzhiyun 346*4882a593Smuzhiyun //DM814X_IOPAD(0x0a14, PIN_INPUT_PULLUP | 0x80) /* ARM IRQ */ 347*4882a593Smuzhiyun //DM814X_IOPAD(0x0900, PIN_INPUT | 0x80) /* GPIO IRQ */ 348*4882a593Smuzhiyun DM814X_IOPAD(0x0a2c, PIN_INPUT_PULLUP | 0x80) /* GPIO RESET */ 349*4882a593Smuzhiyun >; 350*4882a593Smuzhiyun }; 351*4882a593Smuzhiyun 352*4882a593Smuzhiyun gpio4_pins: pinmux_gpio4_pins { 353*4882a593Smuzhiyun pinctrl-single,pins = < 354*4882a593Smuzhiyun /* The PLL doesn't react well to the SPI controller reset, so 355*4882a593Smuzhiyun * we force the CS lines to pull up as GPIOs until we're ready. 356*4882a593Smuzhiyun * See https://e2e.ti.com/support/processors/f/791/t/276011?Linux-support-for-AM3874-DM8148-in-Arago-linux-omap3 357*4882a593Smuzhiyun */ 358*4882a593Smuzhiyun DM814X_IOPAD(0x0b3c, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO0 */ 359*4882a593Smuzhiyun DM814X_IOPAD(0x0b40, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO1 */ 360*4882a593Smuzhiyun DM814X_IOPAD(0x0b44, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO2 */ 361*4882a593Smuzhiyun DM814X_IOPAD(0x0b48, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO3 */ 362*4882a593Smuzhiyun DM814X_IOPAD(0x0b4c, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO4 */ 363*4882a593Smuzhiyun DM814X_IOPAD(0x0b50, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO5 */ 364*4882a593Smuzhiyun >; 365*4882a593Smuzhiyun }; 366*4882a593Smuzhiyun 367*4882a593Smuzhiyun spi2_pins: pinmux_spi2_pins { 368*4882a593Smuzhiyun pinctrl-single,pins = < 369*4882a593Smuzhiyun DM814X_IOPAD(0x0950, PIN_INPUT_PULLUP | 0x80) /* PLL SPI CS1 as GPIO */ 370*4882a593Smuzhiyun DM814X_IOPAD(0x0818, PIN_INPUT_PULLUP | 0x80) /* PLL SPI CS2 as GPIO */ 371*4882a593Smuzhiyun >; 372*4882a593Smuzhiyun }; 373*4882a593Smuzhiyun 374*4882a593Smuzhiyun spi4_pins: pinmux_spi4_pins { 375*4882a593Smuzhiyun pinctrl-single,pins = < 376*4882a593Smuzhiyun DM814X_IOPAD(0x0a7c, 0x20) 377*4882a593Smuzhiyun DM814X_IOPAD(0x0b74, 0x20) 378*4882a593Smuzhiyun DM814X_IOPAD(0x0b78, PIN_OUTPUT | 0x20) 379*4882a593Smuzhiyun DM814X_IOPAD(0x0b7c, PIN_OUTPUT_PULLDOWN | 0x20) 380*4882a593Smuzhiyun DM814X_IOPAD(0x0b80, PIN_INPUT | 0x20) 381*4882a593Smuzhiyun >; 382*4882a593Smuzhiyun }; 383*4882a593Smuzhiyun}; 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun&gpio1 { 386*4882a593Smuzhiyun pinctrl-names = "default"; 387*4882a593Smuzhiyun pinctrl-0 = <&gpio1_pins>; 388*4882a593Smuzhiyun gpio-line-names = 389*4882a593Smuzhiyun "", "PROGRAM_B", "INIT_B", "DONE", /* 0-3 */ 390*4882a593Smuzhiyun "", "", "", "", /* 4-7 */ 391*4882a593Smuzhiyun "FMCA_TMS", "FMCA_TCK", "FMCA_TDO", "FMCA_TDI", /* 8-11 */ 392*4882a593Smuzhiyun "", "", "", "FMCA_TRST", /* 12-15 */ 393*4882a593Smuzhiyun "FMCB_TMS", "FMCB_TCK", "FMCB_TDO", "FMCB_TDI", /* 16-19 */ 394*4882a593Smuzhiyun "FMCB_TRST", "", "", "", /* 20-23 */ 395*4882a593Smuzhiyun "FPGA_TMS", "FPGA_TCK", "FPGA_TDO", "FPGA_TDI", /* 24-27 */ 396*4882a593Smuzhiyun "", "", "", ""; /* 28-31 */ 397*4882a593Smuzhiyun}; 398*4882a593Smuzhiyun 399*4882a593Smuzhiyun&gpio2 { 400*4882a593Smuzhiyun pinctrl-names = "default"; 401*4882a593Smuzhiyun pinctrl-0 = <&gpio2_pins>; 402*4882a593Smuzhiyun gpio-line-names = 403*4882a593Smuzhiyun "PHYA_IRQ_N", "PHYA_RESET_N", "", "", /* 0-3 */ 404*4882a593Smuzhiyun "", "", "", "PHYB_IRQ_N", /* 4-7 */ 405*4882a593Smuzhiyun "PHYB_RESET_N", "ARM_IRQ", "GPIO_IRQ", ""; /* 8-11 */ 406*4882a593Smuzhiyun}; 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun&gpio3 { 409*4882a593Smuzhiyun pinctrl-names = "default"; 410*4882a593Smuzhiyun /*pinctrl-0 = <&gpio3_pins>;*/ 411*4882a593Smuzhiyun gpio-line-names = 412*4882a593Smuzhiyun "", "", "ARMClkSel0", "", /* 0-3 */ 413*4882a593Smuzhiyun "EnFPGARef", "", "", "ARMClkSel1"; /* 4-7 */ 414*4882a593Smuzhiyun}; 415*4882a593Smuzhiyun 416*4882a593Smuzhiyun&gpio4 { 417*4882a593Smuzhiyun pinctrl-names = "default"; 418*4882a593Smuzhiyun pinctrl-0 = <&gpio4_pins>; 419*4882a593Smuzhiyun gpio-line-names = 420*4882a593Smuzhiyun "BP_ARM_GPIO0", "BP_ARM_GPIO1", "BP_ARM_GPIO2", "BP_ARM_GPIO3", 421*4882a593Smuzhiyun "BP_ARM_GPIO4", "BP_ARM_GPIO5"; 422*4882a593Smuzhiyun}; 423*4882a593Smuzhiyun 424*4882a593Smuzhiyun&usb0 { 425*4882a593Smuzhiyun pinctrl-names = "default"; 426*4882a593Smuzhiyun pinctrl-0 = <&usb0_pins>; 427*4882a593Smuzhiyun dr_mode = "host"; 428*4882a593Smuzhiyun}; 429*4882a593Smuzhiyun 430*4882a593Smuzhiyun&usb1 { 431*4882a593Smuzhiyun pinctrl-names = "default"; 432*4882a593Smuzhiyun pinctrl-0 = <&usb1_pins>; 433*4882a593Smuzhiyun dr_mode = "host"; 434*4882a593Smuzhiyun}; 435*4882a593Smuzhiyun 436*4882a593Smuzhiyun&mcspi1 { 437*4882a593Smuzhiyun s25fl256@0 { 438*4882a593Smuzhiyun #address-cells = <1>; 439*4882a593Smuzhiyun #size-cells = <1>; 440*4882a593Smuzhiyun compatible = "jedec,spi-nor"; 441*4882a593Smuzhiyun reg = <0>; 442*4882a593Smuzhiyun spi-max-frequency = <40000000>; 443*4882a593Smuzhiyun 444*4882a593Smuzhiyun fsbl@0 { 445*4882a593Smuzhiyun /* 256 kB */ 446*4882a593Smuzhiyun label = "U-Boot-min"; 447*4882a593Smuzhiyun reg = <0 0x40000>; 448*4882a593Smuzhiyun }; 449*4882a593Smuzhiyun ssbl@1 { 450*4882a593Smuzhiyun /* 512 kB */ 451*4882a593Smuzhiyun label = "U-Boot"; 452*4882a593Smuzhiyun reg = <0x40000 0x80000>; 453*4882a593Smuzhiyun }; 454*4882a593Smuzhiyun bootenv@2 { 455*4882a593Smuzhiyun /* 256 kB */ 456*4882a593Smuzhiyun label = "U-Boot Env"; 457*4882a593Smuzhiyun reg = <0xc0000 0x40000>; 458*4882a593Smuzhiyun }; 459*4882a593Smuzhiyun kernel@3 { 460*4882a593Smuzhiyun /* 4 MB */ 461*4882a593Smuzhiyun label = "Kernel"; 462*4882a593Smuzhiyun reg = <0x100000 0x400000>; 463*4882a593Smuzhiyun }; 464*4882a593Smuzhiyun ipmi@4 { 465*4882a593Smuzhiyun label = "IPMI FRU"; 466*4882a593Smuzhiyun reg = <0x500000 0x40000>; 467*4882a593Smuzhiyun }; 468*4882a593Smuzhiyun fs@5 { 469*4882a593Smuzhiyun label = "File System"; 470*4882a593Smuzhiyun reg = <0x540000 0x1ac0000>; 471*4882a593Smuzhiyun }; 472*4882a593Smuzhiyun }; 473*4882a593Smuzhiyun}; 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun&mcspi3 { 476*4882a593Smuzhiyun /* DMA event numbers stolen from MCASP */ 477*4882a593Smuzhiyun dmas = <&edma_xbar 8 0 16 &edma_xbar 9 0 17 478*4882a593Smuzhiyun &edma_xbar 10 0 18 &edma_xbar 11 0 19>; 479*4882a593Smuzhiyun dma-names = "tx0", "rx0", "tx1", "rx1"; 480*4882a593Smuzhiyun}; 481*4882a593Smuzhiyun 482*4882a593Smuzhiyun&mcspi4 { 483*4882a593Smuzhiyun pinctrl-names = "default"; 484*4882a593Smuzhiyun pinctrl-0 = <&spi4_pins>; 485*4882a593Smuzhiyun 486*4882a593Smuzhiyun /* DMA event numbers stolen from MCASP, MCBSP */ 487*4882a593Smuzhiyun dmas = <&edma_xbar 12 0 20 &edma_xbar 13 0 21>; 488*4882a593Smuzhiyun dma-names = "tx0", "rx0"; 489*4882a593Smuzhiyun}; 490