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