1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0 2*4882a593Smuzhiyun/dts-v1/; 3*4882a593Smuzhiyun#include "bcm2837.dtsi" 4*4882a593Smuzhiyun#include "bcm2836-rpi.dtsi" 5*4882a593Smuzhiyun#include "bcm283x-rpi-lan7515.dtsi" 6*4882a593Smuzhiyun#include "bcm283x-rpi-usb-host.dtsi" 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun/ { 9*4882a593Smuzhiyun compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837"; 10*4882a593Smuzhiyun model = "Raspberry Pi 3 Model B+"; 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun chosen { 13*4882a593Smuzhiyun /* 8250 auxiliary UART instead of pl011 */ 14*4882a593Smuzhiyun stdout-path = "serial1:115200n8"; 15*4882a593Smuzhiyun }; 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun memory@0 { 18*4882a593Smuzhiyun device_type = "memory"; 19*4882a593Smuzhiyun reg = <0 0x40000000>; 20*4882a593Smuzhiyun }; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun leds { 23*4882a593Smuzhiyun led-act { 24*4882a593Smuzhiyun gpios = <&gpio 29 GPIO_ACTIVE_HIGH>; 25*4882a593Smuzhiyun }; 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun led-pwr { 28*4882a593Smuzhiyun label = "PWR"; 29*4882a593Smuzhiyun gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; 30*4882a593Smuzhiyun default-state = "keep"; 31*4882a593Smuzhiyun linux,default-trigger = "default-on"; 32*4882a593Smuzhiyun }; 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun wifi_pwrseq: wifi-pwrseq { 36*4882a593Smuzhiyun compatible = "mmc-pwrseq-simple"; 37*4882a593Smuzhiyun reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>; 38*4882a593Smuzhiyun }; 39*4882a593Smuzhiyun}; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun&firmware { 42*4882a593Smuzhiyun expgpio: gpio { 43*4882a593Smuzhiyun compatible = "raspberrypi,firmware-gpio"; 44*4882a593Smuzhiyun gpio-controller; 45*4882a593Smuzhiyun #gpio-cells = <2>; 46*4882a593Smuzhiyun gpio-line-names = "BT_ON", 47*4882a593Smuzhiyun "WL_ON", 48*4882a593Smuzhiyun "PWR_LED_R", 49*4882a593Smuzhiyun "LAN_RUN", 50*4882a593Smuzhiyun "", 51*4882a593Smuzhiyun "CAM_GPIO0", 52*4882a593Smuzhiyun "CAM_GPIO1", 53*4882a593Smuzhiyun ""; 54*4882a593Smuzhiyun status = "okay"; 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun}; 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun&gpio { 59*4882a593Smuzhiyun /* 60*4882a593Smuzhiyun * Taken from rpi_SCH_3bplus_1p0_reduced.pdf and 61*4882a593Smuzhiyun * the official GPU firmware DT blob. 62*4882a593Smuzhiyun * 63*4882a593Smuzhiyun * Legend: 64*4882a593Smuzhiyun * "NC" = not connected (no rail from the SoC) 65*4882a593Smuzhiyun * "FOO" = GPIO line named "FOO" on the schematic 66*4882a593Smuzhiyun * "FOO_N" = GPIO line named "FOO" on schematic, active low 67*4882a593Smuzhiyun */ 68*4882a593Smuzhiyun gpio-line-names = "ID_SDA", 69*4882a593Smuzhiyun "ID_SCL", 70*4882a593Smuzhiyun "SDA1", 71*4882a593Smuzhiyun "SCL1", 72*4882a593Smuzhiyun "GPIO_GCLK", 73*4882a593Smuzhiyun "GPIO5", 74*4882a593Smuzhiyun "GPIO6", 75*4882a593Smuzhiyun "SPI_CE1_N", 76*4882a593Smuzhiyun "SPI_CE0_N", 77*4882a593Smuzhiyun "SPI_MISO", 78*4882a593Smuzhiyun "SPI_MOSI", 79*4882a593Smuzhiyun "SPI_SCLK", 80*4882a593Smuzhiyun "GPIO12", 81*4882a593Smuzhiyun "GPIO13", 82*4882a593Smuzhiyun /* Serial port */ 83*4882a593Smuzhiyun "TXD1", 84*4882a593Smuzhiyun "RXD1", 85*4882a593Smuzhiyun "GPIO16", 86*4882a593Smuzhiyun "GPIO17", 87*4882a593Smuzhiyun "GPIO18", 88*4882a593Smuzhiyun "GPIO19", 89*4882a593Smuzhiyun "GPIO20", 90*4882a593Smuzhiyun "GPIO21", 91*4882a593Smuzhiyun "GPIO22", 92*4882a593Smuzhiyun "GPIO23", 93*4882a593Smuzhiyun "GPIO24", 94*4882a593Smuzhiyun "GPIO25", 95*4882a593Smuzhiyun "GPIO26", 96*4882a593Smuzhiyun "GPIO27", 97*4882a593Smuzhiyun "HDMI_HPD_N", 98*4882a593Smuzhiyun "STATUS_LED_G", 99*4882a593Smuzhiyun /* Used by BT module */ 100*4882a593Smuzhiyun "CTS0", 101*4882a593Smuzhiyun "RTS0", 102*4882a593Smuzhiyun "TXD0", 103*4882a593Smuzhiyun "RXD0", 104*4882a593Smuzhiyun /* Used by Wifi */ 105*4882a593Smuzhiyun "SD1_CLK", 106*4882a593Smuzhiyun "SD1_CMD", 107*4882a593Smuzhiyun "SD1_DATA0", 108*4882a593Smuzhiyun "SD1_DATA1", 109*4882a593Smuzhiyun "SD1_DATA2", 110*4882a593Smuzhiyun "SD1_DATA3", 111*4882a593Smuzhiyun "PWM0_OUT", 112*4882a593Smuzhiyun "PWM1_OUT", 113*4882a593Smuzhiyun "ETHCLK", 114*4882a593Smuzhiyun "WIFI_CLK", 115*4882a593Smuzhiyun "SDA0", 116*4882a593Smuzhiyun "SCL0", 117*4882a593Smuzhiyun "SMPS_SCL", 118*4882a593Smuzhiyun "SMPS_SDA", 119*4882a593Smuzhiyun /* Used by SD Card */ 120*4882a593Smuzhiyun "SD_CLK_R", 121*4882a593Smuzhiyun "SD_CMD_R", 122*4882a593Smuzhiyun "SD_DATA0_R", 123*4882a593Smuzhiyun "SD_DATA1_R", 124*4882a593Smuzhiyun "SD_DATA2_R", 125*4882a593Smuzhiyun "SD_DATA3_R"; 126*4882a593Smuzhiyun}; 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun&hdmi { 129*4882a593Smuzhiyun hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; 130*4882a593Smuzhiyun power-domains = <&power RPI_POWER_DOMAIN_HDMI>; 131*4882a593Smuzhiyun status = "okay"; 132*4882a593Smuzhiyun}; 133*4882a593Smuzhiyun 134*4882a593Smuzhiyun&pwm { 135*4882a593Smuzhiyun pinctrl-names = "default"; 136*4882a593Smuzhiyun pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio41>; 137*4882a593Smuzhiyun status = "okay"; 138*4882a593Smuzhiyun}; 139*4882a593Smuzhiyun 140*4882a593Smuzhiyun/* SDHCI is used to control the SDIO for wireless */ 141*4882a593Smuzhiyun&sdhci { 142*4882a593Smuzhiyun #address-cells = <1>; 143*4882a593Smuzhiyun #size-cells = <0>; 144*4882a593Smuzhiyun pinctrl-names = "default"; 145*4882a593Smuzhiyun pinctrl-0 = <&emmc_gpio34>; 146*4882a593Smuzhiyun status = "okay"; 147*4882a593Smuzhiyun bus-width = <4>; 148*4882a593Smuzhiyun non-removable; 149*4882a593Smuzhiyun mmc-pwrseq = <&wifi_pwrseq>; 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun brcmf: wifi@1 { 152*4882a593Smuzhiyun reg = <1>; 153*4882a593Smuzhiyun compatible = "brcm,bcm4329-fmac"; 154*4882a593Smuzhiyun }; 155*4882a593Smuzhiyun}; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun/* SDHOST is used to drive the SD card */ 158*4882a593Smuzhiyun&sdhost { 159*4882a593Smuzhiyun pinctrl-names = "default"; 160*4882a593Smuzhiyun pinctrl-0 = <&sdhost_gpio48>; 161*4882a593Smuzhiyun status = "okay"; 162*4882a593Smuzhiyun bus-width = <4>; 163*4882a593Smuzhiyun}; 164*4882a593Smuzhiyun 165*4882a593Smuzhiyun/* uart0 communicates with the BT module */ 166*4882a593Smuzhiyun&uart0 { 167*4882a593Smuzhiyun pinctrl-names = "default"; 168*4882a593Smuzhiyun pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32 &gpclk2_gpio43>; 169*4882a593Smuzhiyun status = "okay"; 170*4882a593Smuzhiyun 171*4882a593Smuzhiyun bluetooth { 172*4882a593Smuzhiyun compatible = "brcm,bcm43438-bt"; 173*4882a593Smuzhiyun max-speed = <2000000>; 174*4882a593Smuzhiyun shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>; 175*4882a593Smuzhiyun }; 176*4882a593Smuzhiyun}; 177*4882a593Smuzhiyun 178*4882a593Smuzhiyun/* uart1 is mapped to the pin header */ 179*4882a593Smuzhiyun&uart1 { 180*4882a593Smuzhiyun pinctrl-names = "default"; 181*4882a593Smuzhiyun pinctrl-0 = <&uart1_gpio14>; 182*4882a593Smuzhiyun status = "okay"; 183*4882a593Smuzhiyun}; 184