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