1*2baf3b61STao Ren// SPDX-License-Identifier: GPL-2.0+ 2*2baf3b61STao Ren// Copyright (c) 2019 Facebook Inc. 3*2baf3b61STao Ren/dts-v1/; 4*2baf3b61STao Ren 5*2baf3b61STao Ren#include <dt-bindings/gpio/aspeed-gpio.h> 6*2baf3b61STao Ren#include "ast2500-facebook-netbmc-common.dtsi" 7*2baf3b61STao Ren 8*2baf3b61STao Ren/ { 9*2baf3b61STao Ren model = "Facebook Wedge 400 BMC (64MB Datastore)"; 10*2baf3b61STao Ren compatible = "facebook,wedge400-data64-bmc", "aspeed,ast2500"; 11*2baf3b61STao Ren 12*2baf3b61STao Ren aliases { 13*2baf3b61STao Ren /* 14*2baf3b61STao Ren * PCA9548 (2-0070) provides 8 channels connecting to 15*2baf3b61STao Ren * SCM (System Controller Module). 16*2baf3b61STao Ren */ 17*2baf3b61STao Ren i2c16 = &imux16; 18*2baf3b61STao Ren i2c17 = &imux17; 19*2baf3b61STao Ren i2c18 = &imux18; 20*2baf3b61STao Ren i2c19 = &imux19; 21*2baf3b61STao Ren i2c20 = &imux20; 22*2baf3b61STao Ren i2c21 = &imux21; 23*2baf3b61STao Ren i2c22 = &imux22; 24*2baf3b61STao Ren i2c23 = &imux23; 25*2baf3b61STao Ren 26*2baf3b61STao Ren /* 27*2baf3b61STao Ren * PCA9548 (8-0070) provides 8 channels connecting to 28*2baf3b61STao Ren * SMB (Switch Main Board). 29*2baf3b61STao Ren */ 30*2baf3b61STao Ren i2c24 = &imux24; 31*2baf3b61STao Ren i2c25 = &imux25; 32*2baf3b61STao Ren i2c26 = &imux26; 33*2baf3b61STao Ren i2c27 = &imux27; 34*2baf3b61STao Ren i2c28 = &imux28; 35*2baf3b61STao Ren i2c29 = &imux29; 36*2baf3b61STao Ren i2c30 = &imux30; 37*2baf3b61STao Ren i2c31 = &imux31; 38*2baf3b61STao Ren 39*2baf3b61STao Ren /* 40*2baf3b61STao Ren * PCA9548 (11-0076) provides 8 channels connecting to 41*2baf3b61STao Ren * FCM (Fan Controller Module). 42*2baf3b61STao Ren */ 43*2baf3b61STao Ren i2c32 = &imux32; 44*2baf3b61STao Ren i2c33 = &imux33; 45*2baf3b61STao Ren i2c34 = &imux34; 46*2baf3b61STao Ren i2c35 = &imux35; 47*2baf3b61STao Ren i2c36 = &imux36; 48*2baf3b61STao Ren i2c37 = &imux37; 49*2baf3b61STao Ren i2c38 = &imux38; 50*2baf3b61STao Ren i2c39 = &imux39; 51*2baf3b61STao Ren 52*2baf3b61STao Ren spi2 = &spi_gpio; 53*2baf3b61STao Ren }; 54*2baf3b61STao Ren 55*2baf3b61STao Ren chosen { 56*2baf3b61STao Ren stdout-path = &uart1; 57*2baf3b61STao Ren }; 58*2baf3b61STao Ren 59*2baf3b61STao Ren ast-adc-hwmon { 60*2baf3b61STao Ren compatible = "iio-hwmon"; 61*2baf3b61STao Ren io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>, <&adc 4>, 62*2baf3b61STao Ren <&adc 5>, <&adc 6>, <&adc 7>, <&adc 8>; 63*2baf3b61STao Ren }; 64*2baf3b61STao Ren 65*2baf3b61STao Ren /* 66*2baf3b61STao Ren * GPIO-based SPI Master is required to access SPI TPM, because 67*2baf3b61STao Ren * full-duplex SPI transactions are not supported by ASPEED SPI 68*2baf3b61STao Ren * Controllers. 69*2baf3b61STao Ren */ 70*2baf3b61STao Ren spi_gpio: spi { 71*2baf3b61STao Ren status = "okay"; 72*2baf3b61STao Ren compatible = "spi-gpio"; 73*2baf3b61STao Ren #address-cells = <1>; 74*2baf3b61STao Ren #size-cells = <0>; 75*2baf3b61STao Ren 76*2baf3b61STao Ren cs-gpios = <&gpio ASPEED_GPIO(R, 2) GPIO_ACTIVE_LOW>; 77*2baf3b61STao Ren sck-gpios = <&gpio ASPEED_GPIO(R, 3) GPIO_ACTIVE_HIGH>; 78*2baf3b61STao Ren mosi-gpios = <&gpio ASPEED_GPIO(R, 4) GPIO_ACTIVE_HIGH>; 79*2baf3b61STao Ren miso-gpios = <&gpio ASPEED_GPIO(R, 5) GPIO_ACTIVE_HIGH>; 80*2baf3b61STao Ren num-chipselects = <1>; 81*2baf3b61STao Ren 82*2baf3b61STao Ren tpm@0 { 83*2baf3b61STao Ren compatible = "infineon,slb9670", "tcg,tpm_tis-spi"; 84*2baf3b61STao Ren spi-max-frequency = <33000000>; 85*2baf3b61STao Ren reg = <0>; 86*2baf3b61STao Ren }; 87*2baf3b61STao Ren }; 88*2baf3b61STao Ren}; 89*2baf3b61STao Ren 90*2baf3b61STao Ren/* 91*2baf3b61STao Ren * Both firmware flashes are 128MB on Wedge400 BMC. 92*2baf3b61STao Ren */ 93*2baf3b61STao Ren&fmc_flash0 { 94*2baf3b61STao Ren#include "facebook-bmc-flash-layout-128-data64.dtsi" 95*2baf3b61STao Ren}; 96*2baf3b61STao Ren 97*2baf3b61STao Ren&fmc_flash1 { 98*2baf3b61STao Ren partitions { 99*2baf3b61STao Ren compatible = "fixed-partitions"; 100*2baf3b61STao Ren #address-cells = <1>; 101*2baf3b61STao Ren #size-cells = <1>; 102*2baf3b61STao Ren 103*2baf3b61STao Ren flash1@0 { 104*2baf3b61STao Ren reg = <0x0 0x8000000>; 105*2baf3b61STao Ren label = "flash1"; 106*2baf3b61STao Ren }; 107*2baf3b61STao Ren }; 108*2baf3b61STao Ren}; 109*2baf3b61STao Ren 110*2baf3b61STao Ren&uart2 { 111*2baf3b61STao Ren status = "okay"; 112*2baf3b61STao Ren pinctrl-names = "default"; 113*2baf3b61STao Ren pinctrl-0 = <&pinctrl_txd2_default 114*2baf3b61STao Ren &pinctrl_rxd2_default>; 115*2baf3b61STao Ren}; 116*2baf3b61STao Ren 117*2baf3b61STao Ren&uart4 { 118*2baf3b61STao Ren status = "okay"; 119*2baf3b61STao Ren pinctrl-names = "default"; 120*2baf3b61STao Ren pinctrl-0 = <&pinctrl_txd4_default 121*2baf3b61STao Ren &pinctrl_rxd4_default>; 122*2baf3b61STao Ren}; 123*2baf3b61STao Ren 124*2baf3b61STao Ren/* 125*2baf3b61STao Ren * I2C bus #0 is multi-master environment dedicated for BMC and Bridge IC 126*2baf3b61STao Ren * communication. 127*2baf3b61STao Ren */ 128*2baf3b61STao Ren&i2c0 { 129*2baf3b61STao Ren status = "okay"; 130*2baf3b61STao Ren multi-master; 131*2baf3b61STao Ren bus-frequency = <1000000>; 132*2baf3b61STao Ren}; 133*2baf3b61STao Ren 134*2baf3b61STao Ren&i2c1 { 135*2baf3b61STao Ren status = "okay"; 136*2baf3b61STao Ren}; 137*2baf3b61STao Ren 138*2baf3b61STao Ren&i2c2 { 139*2baf3b61STao Ren status = "okay"; 140*2baf3b61STao Ren 141*2baf3b61STao Ren i2c-mux@70 { 142*2baf3b61STao Ren compatible = "nxp,pca9548"; 143*2baf3b61STao Ren #address-cells = <1>; 144*2baf3b61STao Ren #size-cells = <0>; 145*2baf3b61STao Ren reg = <0x70>; 146*2baf3b61STao Ren i2c-mux-idle-disconnect; 147*2baf3b61STao Ren 148*2baf3b61STao Ren imux16: i2c@0 { 149*2baf3b61STao Ren #address-cells = <1>; 150*2baf3b61STao Ren #size-cells = <0>; 151*2baf3b61STao Ren reg = <0>; 152*2baf3b61STao Ren }; 153*2baf3b61STao Ren 154*2baf3b61STao Ren imux17: i2c@1 { 155*2baf3b61STao Ren #address-cells = <1>; 156*2baf3b61STao Ren #size-cells = <0>; 157*2baf3b61STao Ren reg = <1>; 158*2baf3b61STao Ren }; 159*2baf3b61STao Ren 160*2baf3b61STao Ren imux18: i2c@2 { 161*2baf3b61STao Ren #address-cells = <1>; 162*2baf3b61STao Ren #size-cells = <0>; 163*2baf3b61STao Ren reg = <2>; 164*2baf3b61STao Ren }; 165*2baf3b61STao Ren 166*2baf3b61STao Ren imux19: i2c@3 { 167*2baf3b61STao Ren #address-cells = <1>; 168*2baf3b61STao Ren #size-cells = <0>; 169*2baf3b61STao Ren reg = <3>; 170*2baf3b61STao Ren }; 171*2baf3b61STao Ren 172*2baf3b61STao Ren imux20: i2c@4 { 173*2baf3b61STao Ren #address-cells = <1>; 174*2baf3b61STao Ren #size-cells = <0>; 175*2baf3b61STao Ren reg = <4>; 176*2baf3b61STao Ren }; 177*2baf3b61STao Ren 178*2baf3b61STao Ren imux21: i2c@5 { 179*2baf3b61STao Ren #address-cells = <1>; 180*2baf3b61STao Ren #size-cells = <0>; 181*2baf3b61STao Ren reg = <5>; 182*2baf3b61STao Ren }; 183*2baf3b61STao Ren 184*2baf3b61STao Ren imux22: i2c@6 { 185*2baf3b61STao Ren #address-cells = <1>; 186*2baf3b61STao Ren #size-cells = <0>; 187*2baf3b61STao Ren reg = <6>; 188*2baf3b61STao Ren }; 189*2baf3b61STao Ren 190*2baf3b61STao Ren imux23: i2c@7 { 191*2baf3b61STao Ren #address-cells = <1>; 192*2baf3b61STao Ren #size-cells = <0>; 193*2baf3b61STao Ren reg = <7>; 194*2baf3b61STao Ren }; 195*2baf3b61STao Ren }; 196*2baf3b61STao Ren}; 197*2baf3b61STao Ren 198*2baf3b61STao Ren&i2c3 { 199*2baf3b61STao Ren status = "okay"; 200*2baf3b61STao Ren}; 201*2baf3b61STao Ren 202*2baf3b61STao Ren&i2c4 { 203*2baf3b61STao Ren status = "okay"; 204*2baf3b61STao Ren}; 205*2baf3b61STao Ren 206*2baf3b61STao Ren&i2c5 { 207*2baf3b61STao Ren status = "okay"; 208*2baf3b61STao Ren}; 209*2baf3b61STao Ren 210*2baf3b61STao Ren&i2c6 { 211*2baf3b61STao Ren status = "okay"; 212*2baf3b61STao Ren}; 213*2baf3b61STao Ren 214*2baf3b61STao Ren&i2c7 { 215*2baf3b61STao Ren status = "okay"; 216*2baf3b61STao Ren}; 217*2baf3b61STao Ren 218*2baf3b61STao Ren&i2c8 { 219*2baf3b61STao Ren status = "okay"; 220*2baf3b61STao Ren 221*2baf3b61STao Ren i2c-mux@70 { 222*2baf3b61STao Ren compatible = "nxp,pca9548"; 223*2baf3b61STao Ren #address-cells = <1>; 224*2baf3b61STao Ren #size-cells = <0>; 225*2baf3b61STao Ren reg = <0x70>; 226*2baf3b61STao Ren i2c-mux-idle-disconnect; 227*2baf3b61STao Ren 228*2baf3b61STao Ren imux24: i2c@0 { 229*2baf3b61STao Ren #address-cells = <1>; 230*2baf3b61STao Ren #size-cells = <0>; 231*2baf3b61STao Ren reg = <0>; 232*2baf3b61STao Ren }; 233*2baf3b61STao Ren 234*2baf3b61STao Ren imux25: i2c@1 { 235*2baf3b61STao Ren #address-cells = <1>; 236*2baf3b61STao Ren #size-cells = <0>; 237*2baf3b61STao Ren reg = <1>; 238*2baf3b61STao Ren }; 239*2baf3b61STao Ren 240*2baf3b61STao Ren imux26: i2c@2 { 241*2baf3b61STao Ren #address-cells = <1>; 242*2baf3b61STao Ren #size-cells = <0>; 243*2baf3b61STao Ren reg = <2>; 244*2baf3b61STao Ren }; 245*2baf3b61STao Ren 246*2baf3b61STao Ren imux27: i2c@3 { 247*2baf3b61STao Ren #address-cells = <1>; 248*2baf3b61STao Ren #size-cells = <0>; 249*2baf3b61STao Ren reg = <3>; 250*2baf3b61STao Ren }; 251*2baf3b61STao Ren 252*2baf3b61STao Ren imux28: i2c@4 { 253*2baf3b61STao Ren #address-cells = <1>; 254*2baf3b61STao Ren #size-cells = <0>; 255*2baf3b61STao Ren reg = <4>; 256*2baf3b61STao Ren }; 257*2baf3b61STao Ren 258*2baf3b61STao Ren imux29: i2c@5 { 259*2baf3b61STao Ren #address-cells = <1>; 260*2baf3b61STao Ren #size-cells = <0>; 261*2baf3b61STao Ren reg = <5>; 262*2baf3b61STao Ren }; 263*2baf3b61STao Ren 264*2baf3b61STao Ren imux30: i2c@6 { 265*2baf3b61STao Ren #address-cells = <1>; 266*2baf3b61STao Ren #size-cells = <0>; 267*2baf3b61STao Ren reg = <6>; 268*2baf3b61STao Ren }; 269*2baf3b61STao Ren 270*2baf3b61STao Ren imux31: i2c@7 { 271*2baf3b61STao Ren #address-cells = <1>; 272*2baf3b61STao Ren #size-cells = <0>; 273*2baf3b61STao Ren reg = <7>; 274*2baf3b61STao Ren }; 275*2baf3b61STao Ren 276*2baf3b61STao Ren }; 277*2baf3b61STao Ren}; 278*2baf3b61STao Ren 279*2baf3b61STao Ren&i2c9 { 280*2baf3b61STao Ren status = "okay"; 281*2baf3b61STao Ren}; 282*2baf3b61STao Ren 283*2baf3b61STao Ren&i2c10 { 284*2baf3b61STao Ren status = "okay"; 285*2baf3b61STao Ren}; 286*2baf3b61STao Ren 287*2baf3b61STao Ren&i2c11 { 288*2baf3b61STao Ren status = "okay"; 289*2baf3b61STao Ren 290*2baf3b61STao Ren i2c-mux@76 { 291*2baf3b61STao Ren compatible = "nxp,pca9548"; 292*2baf3b61STao Ren #address-cells = <1>; 293*2baf3b61STao Ren #size-cells = <0>; 294*2baf3b61STao Ren reg = <0x76>; 295*2baf3b61STao Ren i2c-mux-idle-disconnect; 296*2baf3b61STao Ren 297*2baf3b61STao Ren imux32: i2c@0 { 298*2baf3b61STao Ren #address-cells = <1>; 299*2baf3b61STao Ren #size-cells = <0>; 300*2baf3b61STao Ren reg = <0>; 301*2baf3b61STao Ren }; 302*2baf3b61STao Ren 303*2baf3b61STao Ren imux33: i2c@1 { 304*2baf3b61STao Ren #address-cells = <1>; 305*2baf3b61STao Ren #size-cells = <0>; 306*2baf3b61STao Ren reg = <1>; 307*2baf3b61STao Ren }; 308*2baf3b61STao Ren 309*2baf3b61STao Ren imux34: i2c@2 { 310*2baf3b61STao Ren #address-cells = <1>; 311*2baf3b61STao Ren #size-cells = <0>; 312*2baf3b61STao Ren reg = <2>; 313*2baf3b61STao Ren }; 314*2baf3b61STao Ren 315*2baf3b61STao Ren imux35: i2c@3 { 316*2baf3b61STao Ren #address-cells = <1>; 317*2baf3b61STao Ren #size-cells = <0>; 318*2baf3b61STao Ren reg = <3>; 319*2baf3b61STao Ren }; 320*2baf3b61STao Ren 321*2baf3b61STao Ren imux36: i2c@4 { 322*2baf3b61STao Ren #address-cells = <1>; 323*2baf3b61STao Ren #size-cells = <0>; 324*2baf3b61STao Ren reg = <4>; 325*2baf3b61STao Ren }; 326*2baf3b61STao Ren 327*2baf3b61STao Ren imux37: i2c@5 { 328*2baf3b61STao Ren #address-cells = <1>; 329*2baf3b61STao Ren #size-cells = <0>; 330*2baf3b61STao Ren reg = <5>; 331*2baf3b61STao Ren }; 332*2baf3b61STao Ren 333*2baf3b61STao Ren imux38: i2c@6 { 334*2baf3b61STao Ren #address-cells = <1>; 335*2baf3b61STao Ren #size-cells = <0>; 336*2baf3b61STao Ren reg = <6>; 337*2baf3b61STao Ren }; 338*2baf3b61STao Ren 339*2baf3b61STao Ren imux39: i2c@7 { 340*2baf3b61STao Ren #address-cells = <1>; 341*2baf3b61STao Ren #size-cells = <0>; 342*2baf3b61STao Ren reg = <7>; 343*2baf3b61STao Ren }; 344*2baf3b61STao Ren 345*2baf3b61STao Ren }; 346*2baf3b61STao Ren}; 347*2baf3b61STao Ren 348*2baf3b61STao Ren&i2c12 { 349*2baf3b61STao Ren status = "okay"; 350*2baf3b61STao Ren}; 351*2baf3b61STao Ren 352*2baf3b61STao Ren&i2c13 { 353*2baf3b61STao Ren status = "okay"; 354*2baf3b61STao Ren}; 355*2baf3b61STao Ren 356*2baf3b61STao Ren&adc { 357*2baf3b61STao Ren status = "okay"; 358*2baf3b61STao Ren}; 359*2baf3b61STao Ren 360*2baf3b61STao Ren&ehci1 { 361*2baf3b61STao Ren status = "okay"; 362*2baf3b61STao Ren}; 363*2baf3b61STao Ren 364*2baf3b61STao Ren&uhci { 365*2baf3b61STao Ren status = "okay"; 366*2baf3b61STao Ren}; 367*2baf3b61STao Ren 368*2baf3b61STao Ren&sdhci1 { 369*2baf3b61STao Ren max-frequency = <25000000>; 370*2baf3b61STao Ren /* 371*2baf3b61STao Ren * DMA mode needs to be disabled to avoid conflicts with UHCI 372*2baf3b61STao Ren * Controller in AST2500 SoC. 373*2baf3b61STao Ren */ 374*2baf3b61STao Ren sdhci-caps-mask = <0x0 0x580000>; 375*2baf3b61STao Ren}; 376