162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/dts-v1/; 362306a36Sopenharmony_ci#include "bcm2837.dtsi" 462306a36Sopenharmony_ci#include "bcm2836-rpi.dtsi" 562306a36Sopenharmony_ci#include "bcm283x-rpi-led-deprecated.dtsi" 662306a36Sopenharmony_ci#include "bcm283x-rpi-usb-host.dtsi" 762306a36Sopenharmony_ci#include "bcm283x-rpi-wifi-bt.dtsi" 862306a36Sopenharmony_ci 962306a36Sopenharmony_ci/ { 1062306a36Sopenharmony_ci compatible = "raspberrypi,3-model-a-plus", "brcm,bcm2837"; 1162306a36Sopenharmony_ci model = "Raspberry Pi 3 Model A+"; 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci chosen { 1462306a36Sopenharmony_ci /* 8250 auxiliary UART instead of pl011 */ 1562306a36Sopenharmony_ci stdout-path = "serial1:115200n8"; 1662306a36Sopenharmony_ci }; 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci memory@0 { 1962306a36Sopenharmony_ci device_type = "memory"; 2062306a36Sopenharmony_ci reg = <0 0x20000000>; 2162306a36Sopenharmony_ci }; 2262306a36Sopenharmony_ci}; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci&firmware { 2562306a36Sopenharmony_ci expgpio: gpio { 2662306a36Sopenharmony_ci compatible = "raspberrypi,firmware-gpio"; 2762306a36Sopenharmony_ci gpio-controller; 2862306a36Sopenharmony_ci #gpio-cells = <2>; 2962306a36Sopenharmony_ci gpio-line-names = "", 3062306a36Sopenharmony_ci "BT_WL_ON", 3162306a36Sopenharmony_ci "STATUS_LED_R", 3262306a36Sopenharmony_ci "", 3362306a36Sopenharmony_ci "", 3462306a36Sopenharmony_ci "CAM_GPIO0", 3562306a36Sopenharmony_ci "CAM_GPIO1", 3662306a36Sopenharmony_ci ""; 3762306a36Sopenharmony_ci status = "okay"; 3862306a36Sopenharmony_ci }; 3962306a36Sopenharmony_ci}; 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci&gpio { 4262306a36Sopenharmony_ci /* 4362306a36Sopenharmony_ci * This is mostly based on the official GPU firmware DT blob. 4462306a36Sopenharmony_ci * 4562306a36Sopenharmony_ci * Legend: 4662306a36Sopenharmony_ci * "FOO" = GPIO line named "FOO" on the schematic 4762306a36Sopenharmony_ci * "FOO_N" = GPIO line named "FOO" on schematic, active low 4862306a36Sopenharmony_ci */ 4962306a36Sopenharmony_ci gpio-line-names = "ID_SDA", 5062306a36Sopenharmony_ci "ID_SCL", 5162306a36Sopenharmony_ci "SDA1", 5262306a36Sopenharmony_ci "SCL1", 5362306a36Sopenharmony_ci "GPIO_GCLK", 5462306a36Sopenharmony_ci "GPIO5", 5562306a36Sopenharmony_ci "GPIO6", 5662306a36Sopenharmony_ci "SPI_CE1_N", 5762306a36Sopenharmony_ci "SPI_CE0_N", 5862306a36Sopenharmony_ci "SPI_MISO", 5962306a36Sopenharmony_ci "SPI_MOSI", 6062306a36Sopenharmony_ci "SPI_SCLK", 6162306a36Sopenharmony_ci "GPIO12", 6262306a36Sopenharmony_ci "GPIO13", 6362306a36Sopenharmony_ci /* Serial port */ 6462306a36Sopenharmony_ci "TXD1", 6562306a36Sopenharmony_ci "RXD1", 6662306a36Sopenharmony_ci "GPIO16", 6762306a36Sopenharmony_ci "GPIO17", 6862306a36Sopenharmony_ci "GPIO18", 6962306a36Sopenharmony_ci "GPIO19", 7062306a36Sopenharmony_ci "GPIO20", 7162306a36Sopenharmony_ci "GPIO21", 7262306a36Sopenharmony_ci "GPIO22", 7362306a36Sopenharmony_ci "GPIO23", 7462306a36Sopenharmony_ci "GPIO24", 7562306a36Sopenharmony_ci "GPIO25", 7662306a36Sopenharmony_ci "GPIO26", 7762306a36Sopenharmony_ci "GPIO27", 7862306a36Sopenharmony_ci "HDMI_HPD_N", 7962306a36Sopenharmony_ci "STATUS_LED_G", 8062306a36Sopenharmony_ci /* Used by BT module */ 8162306a36Sopenharmony_ci "CTS0", 8262306a36Sopenharmony_ci "RTS0", 8362306a36Sopenharmony_ci "TXD0", 8462306a36Sopenharmony_ci "RXD0", 8562306a36Sopenharmony_ci /* Used by Wifi */ 8662306a36Sopenharmony_ci "SD1_CLK", 8762306a36Sopenharmony_ci "SD1_CMD", 8862306a36Sopenharmony_ci "SD1_DATA0", 8962306a36Sopenharmony_ci "SD1_DATA1", 9062306a36Sopenharmony_ci "SD1_DATA2", 9162306a36Sopenharmony_ci "SD1_DATA3", 9262306a36Sopenharmony_ci "PWM0_OUT", 9362306a36Sopenharmony_ci "PWM1_OUT", 9462306a36Sopenharmony_ci "", /* GPIO42 */ 9562306a36Sopenharmony_ci "WIFI_CLK", 9662306a36Sopenharmony_ci "SDA0", 9762306a36Sopenharmony_ci "SCL0", 9862306a36Sopenharmony_ci "SMPS_SCL", 9962306a36Sopenharmony_ci "SMPS_SDA", 10062306a36Sopenharmony_ci /* Used by SD Card */ 10162306a36Sopenharmony_ci "SD_CLK_R", 10262306a36Sopenharmony_ci "SD_CMD_R", 10362306a36Sopenharmony_ci "SD_DATA0_R", 10462306a36Sopenharmony_ci "SD_DATA1_R", 10562306a36Sopenharmony_ci "SD_DATA2_R", 10662306a36Sopenharmony_ci "SD_DATA3_R"; 10762306a36Sopenharmony_ci}; 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci&hdmi { 11062306a36Sopenharmony_ci hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; 11162306a36Sopenharmony_ci power-domains = <&power RPI_POWER_DOMAIN_HDMI>; 11262306a36Sopenharmony_ci status = "okay"; 11362306a36Sopenharmony_ci}; 11462306a36Sopenharmony_ci 11562306a36Sopenharmony_ci&led_act { 11662306a36Sopenharmony_ci gpios = <&gpio 29 GPIO_ACTIVE_HIGH>; 11762306a36Sopenharmony_ci}; 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci&leds { 12062306a36Sopenharmony_ci led-pwr { 12162306a36Sopenharmony_ci label = "PWR"; 12262306a36Sopenharmony_ci gpios = <&expgpio 2 GPIO_ACTIVE_LOW>; 12362306a36Sopenharmony_ci default-state = "keep"; 12462306a36Sopenharmony_ci linux,default-trigger = "default-on"; 12562306a36Sopenharmony_ci }; 12662306a36Sopenharmony_ci}; 12762306a36Sopenharmony_ci 12862306a36Sopenharmony_ci&pwm { 12962306a36Sopenharmony_ci pinctrl-names = "default"; 13062306a36Sopenharmony_ci pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio41>; 13162306a36Sopenharmony_ci status = "okay"; 13262306a36Sopenharmony_ci}; 13362306a36Sopenharmony_ci 13462306a36Sopenharmony_ci/* SDHOST is used to drive the SD card */ 13562306a36Sopenharmony_ci&sdhost { 13662306a36Sopenharmony_ci pinctrl-names = "default"; 13762306a36Sopenharmony_ci pinctrl-0 = <&sdhost_gpio48>; 13862306a36Sopenharmony_ci status = "okay"; 13962306a36Sopenharmony_ci bus-width = <4>; 14062306a36Sopenharmony_ci}; 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_ci/* uart0 communicates with the BT module 14362306a36Sopenharmony_ci * 14462306a36Sopenharmony_ci * WL_REG_ON and BT_REG_ON of the CYW43455 Wifi/BT module are driven 14562306a36Sopenharmony_ci * by a single GPIO. We can't give GPIO control to one of the drivers, 14662306a36Sopenharmony_ci * otherwise the other part would get unexpectedly disturbed. 14762306a36Sopenharmony_ci */ 14862306a36Sopenharmony_ci&uart0 { 14962306a36Sopenharmony_ci pinctrl-names = "default"; 15062306a36Sopenharmony_ci pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32 &gpclk2_gpio43>; 15162306a36Sopenharmony_ci}; 15262306a36Sopenharmony_ci 15362306a36Sopenharmony_ci/* uart1 is mapped to the pin header */ 15462306a36Sopenharmony_ci&uart1 { 15562306a36Sopenharmony_ci pinctrl-names = "default"; 15662306a36Sopenharmony_ci pinctrl-0 = <&uart1_gpio14>; 15762306a36Sopenharmony_ci status = "okay"; 15862306a36Sopenharmony_ci}; 159