brcm2708: organize kernel patches
[openwrt/staging/chunkeey.git] / target / linux / brcm2708 / patches-4.19 / 950-0612-arm-dts-First-draft-of-upstream-Pi4-DTS.patch
diff --git a/target/linux/brcm2708/patches-4.19/950-0612-arm-dts-First-draft-of-upstream-Pi4-DTS.patch b/target/linux/brcm2708/patches-4.19/950-0612-arm-dts-First-draft-of-upstream-Pi4-DTS.patch
new file mode 100644 (file)
index 0000000..0fa4cf3
--- /dev/null
@@ -0,0 +1,176 @@
+From 5216bb8a1257a8216362affe4757a96a36b60b32 Mon Sep 17 00:00:00 2001
+From: Phil Elwell <phil@raspberrypi.org>
+Date: Tue, 11 Jun 2019 18:08:05 +0100
+Subject: [PATCH] arm: dts: First draft of upstream Pi4 DTS
+
+I've attempted to follow the upstream conventions in the DT commits,
+but this is just presented here initially as a talking point.
+
+Signed-off-by: Phil Elwell <phil@raspberrypi.org>
+---
+ arch/arm/boot/dts/Makefile            |   1 +
+ arch/arm/boot/dts/bcm2838-rpi-4-b.dts | 118 ++++++++++++++++++++++++++
+ arch/arm/boot/dts/bcm2838-rpi.dtsi    |  25 ++++++
+ 3 files changed, 144 insertions(+)
+ create mode 100644 arch/arm/boot/dts/bcm2838-rpi-4-b.dts
+ create mode 100644 arch/arm/boot/dts/bcm2838-rpi.dtsi
+
+--- a/arch/arm/boot/dts/Makefile
++++ b/arch/arm/boot/dts/Makefile
+@@ -94,6 +94,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
+       bcm2836-rpi-2-b.dtb \
+       bcm2837-rpi-3-b.dtb \
+       bcm2837-rpi-3-b-plus.dtb \
++      bcm2838-rpi-4-b.dtb \
+       bcm2835-rpi-zero.dtb \
+       bcm2835-rpi-zero-w.dtb
+ dtb-$(CONFIG_ARCH_BCM_5301X) += \
+--- /dev/null
++++ b/arch/arm/boot/dts/bcm2838-rpi-4-b.dts
+@@ -0,0 +1,118 @@
++// SPDX-License-Identifier: GPL-2.0
++/dts-v1/;
++#include "bcm2838.dtsi"
++#include "bcm2835-rpi.dtsi"
++#include "bcm2838-rpi.dtsi"
++
++/ {
++      compatible = "raspberrypi,4-model-b", "brcm,bcm2838";
++      model = "Raspberry Pi 4 Model B";
++
++      chosen {
++              /* 8250 auxiliary UART instead of pl011 */
++              stdout-path = "serial1:115200n8";
++      };
++
++      memory {
++              reg = <0 0 0x40000000>;
++      };
++
++      leds {
++              act {
++                      gpios = <&gpio 42 GPIO_ACTIVE_HIGH>;
++              };
++
++              pwr {
++                      label = "PWR";
++                      gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
++              };
++      };
++
++      wifi_pwrseq: wifi-pwrseq {
++              compatible = "mmc-pwrseq-simple";
++              reset-gpios = <&expgpio 1 GPIO_ACTIVE_LOW>;
++      };
++
++      sd_io_1v8_reg: sd_io_1v8_reg {
++              status = "okay";
++              compatible = "regulator-gpio";
++              vin-supply = <&vdd_5v0_reg>;
++              regulator-name = "vdd-sd-io";
++              regulator-min-microvolt = <1800000>;
++              regulator-max-microvolt = <3300000>;
++              regulator-boot-on;
++              regulator-always-on;
++              regulator-settling-time-us = <5000>;
++
++              gpios = <&expgpio 4 GPIO_ACTIVE_HIGH>;
++              states = <1800000 0x1
++                        3300000 0x0>;
++      };
++};
++
++&firmware {
++      expgpio: gpio {
++              compatible = "raspberrypi,firmware-gpio";
++              gpio-controller;
++              #gpio-cells = <2>;
++              gpio-line-names = "BT_ON",
++                                "WL_ON",
++                                "PWR_LED_OFF",
++                                "GLOBAL_RESET",
++                                "VDD_SD_IO_SEL",
++                                "CAM_GPIO",
++                                "",
++                                "";
++              status = "okay";
++      };
++};
++
++&pwm1 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio41>;
++      status = "okay";
++};
++
++/* SDHCI is used to control the SDIO for wireless */
++&sdhci {
++      #address-cells = <1>;
++      #size-cells = <0>;
++      pinctrl-names = "default";
++      pinctrl-0 = <&emmc_gpio34>;
++      status = "okay";
++      bus-width = <4>;
++      non-removable;
++      mmc-pwrseq = <&wifi_pwrseq>;
++
++      brcmf: wifi@1 {
++              reg = <1>;
++              compatible = "brcm,bcm4329-fmac";
++      };
++};
++
++/* EMMC2 is used to drive the SD card */
++&emmc2 {
++      status = "okay";
++      broken-cd;
++      vqmmc-supply = <&sd_io_1v8_reg>;
++};
++
++/* uart0 communicates with the BT module */
++&uart0 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32 &gpclk2_gpio43>;
++      status = "okay";
++
++      bluetooth {
++              compatible = "brcm,bcm43438-bt";
++              max-speed = <2000000>;
++              shutdown-gpios = <&expgpio 0 GPIO_ACTIVE_HIGH>;
++      };
++};
++
++/* uart1 is mapped to the pin header */
++&uart1 {
++      pinctrl-names = "default";
++      pinctrl-0 = <&uart1_gpio14>;
++      status = "okay";
++};
+--- /dev/null
++++ b/arch/arm/boot/dts/bcm2838-rpi.dtsi
+@@ -0,0 +1,25 @@
++// SPDX-License-Identifier: GPL-2.0
++
++/ {
++      soc {
++              /delete-node/ mailbox@7e00b840;
++      };
++};
++
++&scb {
++      vchiq: mailbox@7e00b840 {
++              compatible = "brcm,bcm2838-vchiq";
++              reg = <0 0x7e00b840 0x3c>;
++              interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
++      };
++};
++
++&dma {
++      /* The VPU firmware uses DMA channel 11 for VCHIQ */
++      brcm,dma-channel-mask = <0x1f5>;
++};
++
++&dma40 {
++      /* The VPU firmware DMA channel 11 for VCHIQ */
++      brcm,dma-channel-mask = <0x7000>;
++};