Skip to contentSkip to conversation

fdt: update bcm283x device tree sources to Linux 4.14 state

PATCH Superseded Alexander Graf 3 participants 4 messages Oct 4, 2017 – Oct 17, 2017

Subsystems (6)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 fdt: update bcm283x device tree sources to Linux 4.14 state

Upstream Linux has received a few device tree updates to the RPi which we should propagate into the builtin U-Boot one as well to gain hardware support.

This patch bumps the dts files to their 4.14 Linux counterparts with the exception of sdhost on 32bit RPi versions. There we stay with iproc as the sdhost driver is missing in U-Boot.

---

v1 -> v2:

- use sdhost on 32bit RPis

---
 arch/arm/dts/bcm2835-rpi-a-plus.dts    |  74 +++++++-
 arch/arm/dts/bcm2835-rpi-a.dts         |  76 +++++++-
 arch/arm/dts/bcm2835-rpi-b-plus.dts    |  75 +++++++-
 arch/arm/dts/bcm2835-rpi-b-rev2.dts    |  75 +++++++-
 arch/arm/dts/bcm2835-rpi-b.dts         |  76 +++++++-
 arch/arm/dts/bcm2835-rpi.dtsi          |  34 +++-
 arch/arm/dts/bcm2835.dtsi              |  10 +
 arch/arm/dts/bcm2836-rpi-2-b.dts       |   9 +-
 arch/arm/dts/bcm2836.dtsi              |  11 ++
 arch/arm/dts/bcm2837-rpi-3-b.dts       |  35 +++-
 arch/arm/dts/bcm2837.dtsi              |  13 +-
 arch/arm/dts/bcm283x-rpi-smsc9512.dtsi |   2 +-
 arch/arm/dts/bcm283x-rpi-smsc9514.dtsi |   2 +-
 arch/arm/dts/bcm283x-rpi-usb-host.dtsi |   3 +
 arch/arm/dts/bcm283x.dtsi              | 325 ++++++++++++++++++++++++++++++++-
 include/dt-bindings/clock/bcm2835.h    |   2 +
 include/dt-bindings/pinctrl/bcm2835.h  |   5 +
 17 files changed, 801 insertions(+), 26 deletions(-)
 create mode 100644 arch/arm/dts/bcm283x-rpi-usb-host.dtsi
arch/arm/dts/bcm2835-rpi-a-plus.dts +73 -1
index 35ff4e7a4a..9f866491ef 100644
@@ -1,6 +1,7 @@
 /dts-v1/;
 #include "bcm2835.dtsi"
 #include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
 / {
 	compatible = "raspberrypi,model-a-plus", "brcm,bcm2835";
@@ -21,7 +22,72 @@
 };
 
 &gpio {
-	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+	/*
+	 * This is based on the unreleased schematic for the Model A+.
+	 *
+	 * Legend:
+	 * "NC" = not connected (no rail from the SoC)
+	 * "FOO" = GPIO line named "FOO" on the schematic
+	 * "FOO_N" = GPIO line named "FOO" on schematic, active low
+	 */
+	gpio-line-names = "SDA0",
+			  "SCL0",
+			  "SDA1",
+			  "SCL1",
+			  "GPIO_GCLK",
+			  "GPIO5",
+			  "GPIO6",
+			  "SPI_CE1_N",
+			  "SPI_CE0_N",
+			  "SPI_MISO",
+			  "SPI_MOSI",
+			  "SPI_SCLK",
+			  "GPIO12",
+			  "GPIO13",
+			  /* Serial port */
+			  "TXD0",
+			  "RXD0",
+			  "GPIO16",
+			  "GPIO17",
+			  "GPIO18",
+			  "GPIO19",
+			  "GPIO20",
+			  "GPIO21",
+			  "GPIO22",
+			  "GPIO23",
+			  "GPIO24",
+			  "GPIO25",
+			  "GPIO26",
+			  "GPIO27",
+			  "SDA0",
+			  "SCL0",
+			  "NC", /* GPIO30 */
+			  "NC", /* GPIO31 */
+			  "CAM_GPIO1", /* GPIO32 */
+			  "NC", /* GPIO33 */
+			  "NC", /* GPIO34 */
+			  "PWR_LOW_N", /* GPIO35 */
+			  "NC", /* GPIO36 */
+			  "NC", /* GPIO37 */
+			  "USB_LIMIT", /* GPIO38 */
+			  "NC", /* GPIO39 */
+			  "PWM0_OUT", /* GPIO40 */
+			  "CAM_GPIO0", /* GPIO41 */
+			  "NC", /* GPIO42 */
+			  "NC", /* GPIO43 */
+			  "NC", /* GPIO44 */
+			  "PWM1_OUT", /* GPIO45 */
+			  "HDMI_HPD_N",
+			  "STATUS_LED",
+			  /* Used by SD Card */
+			  "SD_CLK_R",
+			  "SD_CMD_R",
+			  "SD_DATA0_R",
+			  "SD_DATA1_R",
+			  "SD_DATA2_R",
+			  "SD_DATA3_R";
+
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
 
 	/* I2S interface */
 	i2s_alt0: i2s_alt0 {
@@ -33,3 +99,9 @@
 &hdmi {
 	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
 };
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio14>;
+	status = "okay";
+};
arch/arm/dts/bcm2835-rpi-a.dts +75 -1

91 lines not on this page · raw message

arch/arm/dts/bcm2835-rpi-b-plus.dts +74 -1

90 lines not on this page · raw message

arch/arm/dts/bcm2835-rpi-b-rev2.dts +74 -1

90 lines not on this page · raw message

arch/arm/dts/bcm2835-rpi-b.dts +75 -1

90 lines not on this page · raw message

arch/arm/dts/bcm2835-rpi.dtsi +28 -6
index e9b47b2bbc..8b95832dd0 100644
@@ -39,22 +39,21 @@
 	};
 
 	alt0: alt0 {
-		brcm,pins = <0 1 2 3 4 5 7 8 9 10 11 14 15 40 45>;
+		brcm,pins = <4 5 7 8 9 10 11>;
 		brcm,function = <BCM2835_FSEL_ALT0>;
 	};
-
-	alt3: alt3 {
-		brcm,pins = <48 49 50 51 52 53>;
-		brcm,function = <BCM2835_FSEL_ALT3>;
-	};
 };
 
 &i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c0_gpio0>;
 	status = "okay";
 	clock-frequency = <100000>;
 };
 
 &i2c1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_gpio2>;
 	status = "okay";
 	clock-frequency = <100000>;
 };
@@ -64,11 +63,21 @@
 };
 
 &sdhci {
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_gpio48>;
 	status = "okay";
 	bus-width = <4>;
 };
 
+&sdhost {
+	pinctrl-names = "default";
+	pinctrl-0 = <&sdhost_gpio48>;
+	bus-width = <4>;
+};
+
 &pwm {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
 	status = "okay";
 };
 
@@ -84,3 +93,16 @@
 	power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
 	status = "okay";
 };
+
+&vec {
+	power-domains = <&power RPI_POWER_DOMAIN_VEC>;
+	status = "okay";
+};
+
+&dsi0 {
+	power-domains = <&power RPI_POWER_DOMAIN_DSI0>;
+};
+
+&dsi1 {
+	power-domains = <&power RPI_POWER_DOMAIN_DSI1>;
+};
arch/arm/dts/bcm2835.dtsi +10 -0
index a78759e737..659b6e9513 100644
@@ -23,3 +23,13 @@
 		};
 	};
 };
+
+&cpu_thermal {
+	coefficients = <(-538)	407000>;
+};
+
+/* enable thermal sensor with the correct compatible property set */
+&thermal {
+	compatible = "brcm,bcm2835-thermal";
+	status = "okay";
+};
arch/arm/dts/bcm2836-rpi-2-b.dts +8 -1
index 29e1cfe8eb..e8de41444b 100644
@@ -2,6 +2,7 @@
 #include "bcm2836.dtsi"
 #include "bcm2835-rpi.dtsi"
 #include "bcm283x-rpi-smsc9514.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
 / {
 	compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
@@ -26,7 +27,7 @@
 };
 
 &gpio {
-	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
 
 	/* I2S interface */
 	i2s_alt0: i2s_alt0 {
@@ -38,3 +39,9 @@
 &hdmi {
 	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
 };
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio14>;
+	status = "okay";
+};
arch/arm/dts/bcm2836.dtsi +11 -0
index 9d0651d8f3..2c26d0be8b 100644
@@ -36,6 +36,7 @@
 	cpus: cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
+		enable-method = "brcm,bcm2836-smp";
 
 		v7_cpu0: cpu at 0 {
 			device_type = "cpu";
@@ -76,3 +77,13 @@
 	interrupt-parent = <&local_intc>;
 	interrupts = <8>;
 };
+
+&cpu_thermal {
+	coefficients = <(-538)	407000>;
+};
+
+/* enable thermal sensor with the correct compatible property set */
+&thermal {
+	compatible = "brcm,bcm2836-thermal";
+	status = "okay";
+};
arch/arm/dts/bcm2837-rpi-3-b.dts +28 -7
index 7841b724e3..20725ca487 100644
@@ -2,6 +2,7 @@
 #include "bcm2837.dtsi"
 #include "bcm2835-rpi.dtsi"
 #include "bcm283x-rpi-smsc9514.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
 / {
 	compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
@@ -15,16 +16,36 @@
 		act {
 			gpios = <&gpio 47 0>;
 		};
-
-		pwr {
-			label = "PWR";
-			gpios = <&gpio 35 0>;
-			default-state = "keep";
-			linux,default-trigger = "default-on";
-		};
 	};
 };
 
+/* uart0 communicates with the BT module */
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>;
+	status = "okay";
+};
+
+/* uart1 is mapped to the pin header */
 &uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_gpio14>;
+	status = "okay";
+};
+
+/* SDHCI is used to control the SDIO for wireless */
+&sdhci {
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_gpio34>;
+	status = "okay";
+	bus-width = <4>;
+	non-removable;
+};
+
+/* SDHOST is used to drive the SD card */
+&sdhost {
+	pinctrl-names = "default";
+	pinctrl-0 = <&sdhost_gpio48>;
 	status = "okay";
+	bus-width = <4>;
 };
arch/arm/dts/bcm2837.dtsi +12 -1
index 8216bbb29f..bc1cca5cf4 100644
@@ -1,7 +1,7 @@
 #include "bcm283x.dtsi"
 
 / {
-	compatible = "brcm,bcm2836";
+	compatible = "brcm,bcm2837";
 
 	soc {
 		ranges = <0x7e000000 0x3f000000 0x1000000>,
@@ -30,6 +30,7 @@
 	cpus: cpus {
 		#address-cells = <1>;
 		#size-cells = <0>;
+		enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
 
 		cpu0: cpu at 0 {
 			device_type = "cpu";
@@ -74,3 +75,13 @@
 	interrupt-parent = <&local_intc>;
 	interrupts = <8>;
 };
+
+&cpu_thermal {
+	coefficients = <(-538)	412000>;
+};
+
+/* enable thermal sensor with the correct compatible property set */
+&thermal {
+	compatible = "brcm,bcm2837-thermal";
+	status = "okay";
+};
arch/arm/dts/bcm283x-rpi-smsc9512.dtsi +1 -1
index 12c981e511..9a0599f711 100644
@@ -1,6 +1,6 @@
 / {
 	aliases {
-		ethernet = &ethernet;
+		ethernet0 = &ethernet;
 	};
 };
 
arch/arm/dts/bcm283x-rpi-smsc9514.dtsi +1 -1
index 3f0a56ebcf..dc7ae776db 100644
@@ -1,6 +1,6 @@
 / {
 	aliases {
-		ethernet = &ethernet;
+		ethernet0 = &ethernet;
 	};
 };
 
arch/arm/dts/bcm283x-rpi-usb-host.dtsi new file +3 -0
new file mode 100644
index 0000000000..73f4ece8dc
@@ -0,0 +1,3 @@
+&usb {
+	dr_mode = "host";
+};
arch/arm/dts/bcm283x.dtsi +321 -4

398 lines not on this page · raw message

include/dt-bindings/clock/bcm2835.h +2 -0
index 360e00cefd..a0c812b0fa 100644
@@ -64,3 +64,5 @@
 #define BCM2835_CLOCK_CAM1		46
 #define BCM2835_CLOCK_DSI0E		47
 #define BCM2835_CLOCK_DSI1E		48
+#define BCM2835_CLOCK_DSI0P		49
+#define BCM2835_CLOCK_DSI1P		50
include/dt-bindings/pinctrl/bcm2835.h +5 -0
index 6f0bc37af3..e4e4fdf5d3 100644
@@ -24,4 +24,9 @@
 #define BCM2835_FSEL_ALT2	6
 #define BCM2835_FSEL_ALT3	7
 
+/* brcm,pull property */
+#define BCM2835_PUD_OFF		0
+#define BCM2835_PUD_DOWN	1
+#define BCM2835_PUD_UP		2
+
 #endif /* __DT_BINDINGS_PINCTRL_BCM2835_H__ */
Signature · 1 line
2.12.3
#1 lore raw

PATCH v2 1/1 fdt: update bcm283x device tree sources to Linux 4.14 state

Hi Alexander,

Am 04.10.2017 um 14:39 schrieb Alexander Graf:

Quoted 7 lines

Upstream Linux has received a few device tree updates to the RPi which we should propagate into the builtin U-Boot one as well to gain hardware support.

This patch bumps the dts files to their 4.14 Linux counterparts with the exception of sdhost on 32bit RPi versions. There we stay with iproc as the sdhost driver is missing in U-Boot.

out of curiosity, why is the RPi Zero isn't included?

Best regards
Stefan

Quoted 1,221 lines

---

v1 -> v2:

- use sdhost on 32bit RPis

---
  arch/arm/dts/bcm2835-rpi-a-plus.dts    |  74 +++++++-
  arch/arm/dts/bcm2835-rpi-a.dts         |  76 +++++++-
  arch/arm/dts/bcm2835-rpi-b-plus.dts    |  75 +++++++-
  arch/arm/dts/bcm2835-rpi-b-rev2.dts    |  75 +++++++-
  arch/arm/dts/bcm2835-rpi-b.dts         |  76 +++++++-
  arch/arm/dts/bcm2835-rpi.dtsi          |  34 +++-
  arch/arm/dts/bcm2835.dtsi              |  10 +
  arch/arm/dts/bcm2836-rpi-2-b.dts       |   9 +-
  arch/arm/dts/bcm2836.dtsi              |  11 ++
  arch/arm/dts/bcm2837-rpi-3-b.dts       |  35 +++-
  arch/arm/dts/bcm2837.dtsi              |  13 +-
  arch/arm/dts/bcm283x-rpi-smsc9512.dtsi |   2 +-
  arch/arm/dts/bcm283x-rpi-smsc9514.dtsi |   2 +-
  arch/arm/dts/bcm283x-rpi-usb-host.dtsi |   3 +
  arch/arm/dts/bcm283x.dtsi              | 325 ++++++++++++++++++++++++++++++++-
  include/dt-bindings/clock/bcm2835.h    |   2 +
  include/dt-bindings/pinctrl/bcm2835.h  |   5 +
  17 files changed, 801 insertions(+), 26 deletions(-)

create mode 100644 arch/arm/dts/bcm283x-rpi-usb-host.dtsi

arch/arm/dts/bcm2835-rpi-a-plus.dts +73 -1
index 35ff4e7a4a..9f866491ef 100644
@@ -1,6 +1,7 @@
  /dts-v1/;
  #include "bcm2835.dtsi"
  #include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
  / {
  	compatible = "raspberrypi,model-a-plus", "brcm,bcm2835";
@@ -21,7 +22,72 @@
  };
 
  &gpio {
-	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+	/*
+	 * This is based on the unreleased schematic for the Model A+.
+	 *
+	 * Legend:
+	 * "NC" = not connected (no rail from the SoC)
+	 * "FOO" = GPIO line named "FOO" on the schematic
+	 * "FOO_N" = GPIO line named "FOO" on schematic, active low
+	 */
+	gpio-line-names = "SDA0",
+			  "SCL0",
+			  "SDA1",
+			  "SCL1",
+			  "GPIO_GCLK",
+			  "GPIO5",
+			  "GPIO6",
+			  "SPI_CE1_N",
+			  "SPI_CE0_N",
+			  "SPI_MISO",
+			  "SPI_MOSI",
+			  "SPI_SCLK",
+			  "GPIO12",
+			  "GPIO13",
+			  /* Serial port */
+			  "TXD0",
+			  "RXD0",
+			  "GPIO16",
+			  "GPIO17",
+			  "GPIO18",
+			  "GPIO19",
+			  "GPIO20",
+			  "GPIO21",
+			  "GPIO22",
+			  "GPIO23",
+			  "GPIO24",
+			  "GPIO25",
+			  "GPIO26",
+			  "GPIO27",
+			  "SDA0",
+			  "SCL0",
+			  "NC", /* GPIO30 */
+			  "NC", /* GPIO31 */
+			  "CAM_GPIO1", /* GPIO32 */
+			  "NC", /* GPIO33 */
+			  "NC", /* GPIO34 */
+			  "PWR_LOW_N", /* GPIO35 */
+			  "NC", /* GPIO36 */
+			  "NC", /* GPIO37 */
+			  "USB_LIMIT", /* GPIO38 */
+			  "NC", /* GPIO39 */
+			  "PWM0_OUT", /* GPIO40 */
+			  "CAM_GPIO0", /* GPIO41 */
+			  "NC", /* GPIO42 */
+			  "NC", /* GPIO43 */
+			  "NC", /* GPIO44 */
+			  "PWM1_OUT", /* GPIO45 */
+			  "HDMI_HPD_N",
+			  "STATUS_LED",
+			  /* Used by SD Card */
+			  "SD_CLK_R",
+			  "SD_CMD_R",
+			  "SD_DATA0_R",
+			  "SD_DATA1_R",
+			  "SD_DATA2_R",
+			  "SD_DATA3_R";
+
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
 
  	/* I2S interface */
  	i2s_alt0: i2s_alt0 {
@@ -33,3 +99,9 @@
  &hdmi {
  	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
  };
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio14>;
+	status = "okay";
+};
arch/arm/dts/bcm2835-rpi-a.dts +75 -1
index 306a84ee98..4b1af06c8d 100644
@@ -1,6 +1,7 @@
  /dts-v1/;
  #include "bcm2835.dtsi"
  #include "bcm2835-rpi.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
  / {
  	compatible = "raspberrypi,model-a", "brcm,bcm2835";
@@ -14,7 +15,74 @@
  };
 
  &gpio {
-	pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>;
+	/*
+	 * Taken from Raspberry-Pi-Rev-1.0-Model-AB-Schematics.pdf
+	 * RPI00021 sheet 02
+	 *
+	 * Legend:
+	 * "NC" = not connected (no rail from the SoC)
+	 * "FOO" = GPIO line named "FOO" on the schematic
+	 * "FOO_N" = GPIO line named "FOO" on schematic, active low
+	 */
+	gpio-line-names = "SDA0",
+			  "SCL0",
+			  "SDA1",
+			  "SCL1",
+			  "GPIO_GCLK",
+			  "CAM_GPIO1",
+			  "LAN_RUN",
+			  "SPI_CE1_N",
+			  "SPI_CE0_N",
+			  "SPI_MISO",
+			  "SPI_MOSI",
+			  "SPI_SCLK",
+			  "NC", /* GPIO12 */
+			  "NC", /* GPIO13 */
+			  /* Serial port */
+			  "TXD0",
+			  "RXD0",
+			  "STATUS_LED_N",
+			  "GPIO17",
+			  "GPIO18",
+			  "NC", /* GPIO19 */
+			  "NC", /* GPIO20 */
+			  "GPIO21",
+			  "GPIO22",
+			  "GPIO23",
+			  "GPIO24",
+			  "GPIO25",
+			  "NC", /* GPIO26 */
+			  "CAM_GPIO0",
+			  /* Binary number representing build/revision */
+			  "CONFIG0",
+			  "CONFIG1",
+			  "CONFIG2",
+			  "CONFIG3",
+			  "NC", /* GPIO32 */
+			  "NC", /* GPIO33 */
+			  "NC", /* GPIO34 */
+			  "NC", /* GPIO35 */
+			  "NC", /* GPIO36 */
+			  "NC", /* GPIO37 */
+			  "NC", /* GPIO38 */
+			  "NC", /* GPIO39 */
+			  "PWM0_OUT",
+			  "NC", /* GPIO41 */
+			  "NC", /* GPIO42 */
+			  "NC", /* GPIO43 */
+			  "NC", /* GPIO44 */
+			  "PWM1_OUT",
+			  "HDMI_HPD_P",
+			  "SD_CARD_DET",
+			  /* Used by SD Card */
+			  "SD_CLK_R",
+			  "SD_CMD_R",
+			  "SD_DATA0_R",
+			  "SD_DATA1_R",
+			  "SD_DATA2_R",
+			  "SD_DATA3_R";
+
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt2>;
 
  	/* I2S interface */
  	i2s_alt2: i2s_alt2 {
@@ -26,3 +94,9 @@
  &hdmi {
  	hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
  };
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio14>;
+	status = "okay";
+};
arch/arm/dts/bcm2835-rpi-b-plus.dts +74 -1
index d5fdb8e761..a846f1e781 100644
@@ -2,6 +2,7 @@
  #include "bcm2835.dtsi"
  #include "bcm2835-rpi.dtsi"
  #include "bcm283x-rpi-smsc9514.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
  / {
  	compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
@@ -22,7 +23,73 @@
  };
 
  &gpio {
-	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+	/*
+	 * Taken from Raspberry-Pi-B-Plus-V1.2-Schematics.pdf
+	 * RPI-BPLUS sheet 1
+	 *
+	 * Legend:
+	 * "NC" = not connected (no rail from the SoC)
+	 * "FOO" = GPIO line named "FOO" on the schematic
+	 * "FOO_N" = GPIO line named "FOO" on schematic, active low
+	 */
+	gpio-line-names = "SDA0",
+			  "SCL0",
+			  "SDA1",
+			  "SCL1",
+			  "GPIO_GCLK",
+			  "GPIO5",
+			  "GPIO6",
+			  "SPI_CE1_N",
+			  "SPI_CE0_N",
+			  "SPI_MISO",
+			  "SPI_MOSI",
+			  "SPI_SCLK",
+			  "GPIO12",
+			  "GPIO13",
+			  /* Serial port */
+			  "TXD0",
+			  "RXD0",
+			  "GPIO16",
+			  "GPIO17",
+			  "GPIO18",
+			  "GPIO19",
+			  "GPIO20",
+			  "GPIO21",
+			  "GPIO22",
+			  "GPIO23",
+			  "GPIO24",
+			  "GPIO25",
+			  "GPIO26",
+			  "GPIO27",
+			  "SDA0",
+			  "SCL0",
+			  "NC", /* GPIO30 */
+			  "LAN_RUN", /* GPIO31 */
+			  "CAM_GPIO1", /* GPIO32 */
+			  "NC", /* GPIO33 */
+			  "NC", /* GPIO34 */
+			  "PWR_LOW_N", /* GPIO35 */
+			  "NC", /* GPIO36 */
+			  "NC", /* GPIO37 */
+			  "USB_LIMIT", /* GPIO38 */
+			  "NC", /* GPIO39 */
+			  "PWM0_OUT", /* GPIO40 */
+			  "CAM_GPIO0", /* GPIO41 */
+			  "NC", /* GPIO42 */
+			  "NC", /* GPIO43 */
+			  "ETHCLK", /* GPIO44 */
+			  "PWM1_OUT", /* GPIO45 */
+			  "HDMI_HPD_N",
+			  "STATUS_LED",
+			  /* Used by SD Card */
+			  "SD_CLK_R",
+			  "SD_CMD_R",
+			  "SD_DATA0_R",
+			  "SD_DATA1_R",
+			  "SD_DATA2_R",
+			  "SD_DATA3_R";
+
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
 
  	/* I2S interface */
  	i2s_alt0: i2s_alt0 {
@@ -34,3 +101,9 @@
  &hdmi {
  	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
  };
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio14>;
+	status = "okay";
+};
arch/arm/dts/bcm2835-rpi-b-rev2.dts +74 -1
index bfc4bd9b77..e860964e39 100644
@@ -2,6 +2,7 @@
  #include "bcm2835.dtsi"
  #include "bcm2835-rpi.dtsi"
  #include "bcm283x-rpi-smsc9512.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
  / {
  	compatible = "raspberrypi,model-b-rev2", "brcm,bcm2835";
@@ -15,7 +16,73 @@
  };
 
  &gpio {
-	pinctrl-0 = <&gpioout &alt0 &i2s_alt2 &alt3>;
+	/*
+	 * Taken from Raspberry-Pi-Rev-2.0-Model-AB-Schematics.pdf
+	 * RPI00022 sheet 02
+	 *
+	 * Legend:
+	 * "NC" = not connected (no rail from the SoC)
+	 * "FOO" = GPIO line named "FOO" on the schematic
+	 * "FOO_N" = GPIO line named "FOO" on schematic, active low
+	 */
+	gpio-line-names = "SDA0",
+			  "SCL0",
+			  "SDA1",
+			  "SCL1",
+			  "GPIO_GCLK",
+			  "CAM_CLK",
+			  "LAN_RUN",
+			  "SPI_CE1_N",
+			  "SPI_CE0_N",
+			  "SPI_MISO",
+			  "SPI_MOSI",
+			  "SPI_SCLK",
+			  "NC", /* GPIO12 */
+			  "NC", /* GPIO13 */
+			  /* Serial port */
+			  "TXD0",
+			  "RXD0",
+			  "STATUS_LED_N",
+			  "GPIO17",
+			  "GPIO18",
+			  "NC", /* GPIO19 */
+			  "NC", /* GPIO20 */
+			  "CAM_GPIO",
+			  "GPIO22",
+			  "GPIO23",
+			  "GPIO24",
+			  "GPIO25",
+			  "NC", /* GPIO26 */
+			  "GPIO27",
+			  "GPIO28",
+			  "GPIO29",
+			  "GPIO30",
+			  "GPIO31",
+			  "NC", /* GPIO32 */
+			  "NC", /* GPIO33 */
+			  "NC", /* GPIO34 */
+			  "NC", /* GPIO35 */
+			  "NC", /* GPIO36 */
+			  "NC", /* GPIO37 */
+			  "NC", /* GPIO38 */
+			  "NC", /* GPIO39 */
+			  "PWM0_OUT",
+			  "NC", /* GPIO41 */
+			  "NC", /* GPIO42 */
+			  "NC", /* GPIO43 */
+			  "NC", /* GPIO44 */
+			  "PWM1_OUT",
+			  "HDMI_HPD_P",
+			  "SD_CARD_DET",
+			  /* Used by SD Card */
+			  "SD_CLK_R",
+			  "SD_CMD_R",
+			  "SD_DATA0_R",
+			  "SD_DATA1_R",
+			  "SD_DATA2_R",
+			  "SD_DATA3_R";
+
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt2>;
 
  	/* I2S interface */
  	i2s_alt2: i2s_alt2 {
@@ -27,3 +94,9 @@
  &hdmi {
  	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
  };
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio14>;
+	status = "okay";
+};
arch/arm/dts/bcm2835-rpi-b.dts +75 -1
index 0371bb7374..5d77f3f8c4 100644
@@ -2,6 +2,7 @@
  #include "bcm2835.dtsi"
  #include "bcm2835-rpi.dtsi"
  #include "bcm283x-rpi-smsc9512.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
  / {
  	compatible = "raspberrypi,model-b", "brcm,bcm2835";
@@ -15,9 +16,82 @@
  };
 
  &gpio {
-	pinctrl-0 = <&gpioout &alt0 &alt3>;
+	/*
+	 * Taken from Raspberry-Pi-Rev-1.0-Model-AB-Schematics.pdf
+	 * RPI00021 sheet 02
+	 *
+	 * Legend:
+	 * "NC" = not connected (no rail from the SoC)
+	 * "FOO" = GPIO line named "FOO" on the schematic
+	 * "FOO_N" = GPIO line named "FOO" on schematic, active low
+	 */
+	gpio-line-names = "SDA0",
+			  "SCL0",
+			  "SDA1",
+			  "SCL1",
+			  "GPIO_GCLK",
+			  "CAM_GPIO1",
+			  "LAN_RUN",
+			  "SPI_CE1_N",
+			  "SPI_CE0_N",
+			  "SPI_MISO",
+			  "SPI_MOSI",
+			  "SPI_SCLK",
+			  "NC", /* GPIO12 */
+			  "NC", /* GPIO13 */
+			  /* Serial port */
+			  "TXD0",
+			  "RXD0",
+			  "STATUS_LED_N",
+			  "GPIO17",
+			  "GPIO18",
+			  "NC", /* GPIO19 */
+			  "NC", /* GPIO20 */
+			  "GPIO21",
+			  "GPIO22",
+			  "GPIO23",
+			  "GPIO24",
+			  "GPIO25",
+			  "NC", /* GPIO26 */
+			  "CAM_GPIO0",
+			  /* Binary number representing build/revision */
+			  "CONFIG0",
+			  "CONFIG1",
+			  "CONFIG2",
+			  "CONFIG3",
+			  "NC", /* GPIO32 */
+			  "NC", /* GPIO33 */
+			  "NC", /* GPIO34 */
+			  "NC", /* GPIO35 */
+			  "NC", /* GPIO36 */
+			  "NC", /* GPIO37 */
+			  "NC", /* GPIO38 */
+			  "NC", /* GPIO39 */
+			  "PWM0_OUT",
+			  "NC", /* GPIO41 */
+			  "NC", /* GPIO42 */
+			  "NC", /* GPIO43 */
+			  "NC", /* GPIO44 */
+			  "PWM1_OUT",
+			  "HDMI_HPD_P",
+			  "SD_CARD_DET",
+			  /* Used by SD Card */
+			  "SD_CLK_R",
+			  "SD_CMD_R",
+			  "SD_DATA0_R",
+			  "SD_DATA1_R",
+			  "SD_DATA2_R",
+			  "SD_DATA3_R";
+
+	pinctrl-0 = <&gpioout &alt0>;
  };
 
  &hdmi {
  	hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
  };
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio14>;
+	status = "okay";
+};
arch/arm/dts/bcm2835-rpi.dtsi +28 -6
index e9b47b2bbc..8b95832dd0 100644
@@ -39,22 +39,21 @@
  	};
 
  	alt0: alt0 {
-		brcm,pins = <0 1 2 3 4 5 7 8 9 10 11 14 15 40 45>;
+		brcm,pins = <4 5 7 8 9 10 11>;
  		brcm,function = <BCM2835_FSEL_ALT0>;
  	};
-
-	alt3: alt3 {
-		brcm,pins = <48 49 50 51 52 53>;
-		brcm,function = <BCM2835_FSEL_ALT3>;
-	};
  };
 
  &i2c0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c0_gpio0>;
  	status = "okay";
  	clock-frequency = <100000>;
  };
 
  &i2c1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c1_gpio2>;
  	status = "okay";
  	clock-frequency = <100000>;
  };
@@ -64,11 +63,21 @@
  };
 
  &sdhci {
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_gpio48>;
  	status = "okay";
  	bus-width = <4>;
  };
 
+&sdhost {
+	pinctrl-names = "default";
+	pinctrl-0 = <&sdhost_gpio48>;
+	bus-width = <4>;
+};
+
  &pwm {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio45>;
  	status = "okay";
  };
 
@@ -84,3 +93,16 @@
  	power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
  	status = "okay";
  };
+
+&vec {
+	power-domains = <&power RPI_POWER_DOMAIN_VEC>;
+	status = "okay";
+};
+
+&dsi0 {
+	power-domains = <&power RPI_POWER_DOMAIN_DSI0>;
+};
+
+&dsi1 {
+	power-domains = <&power RPI_POWER_DOMAIN_DSI1>;
+};
arch/arm/dts/bcm2835.dtsi +10 -0
index a78759e737..659b6e9513 100644
@@ -23,3 +23,13 @@
  		};
  	};
  };
+
+&cpu_thermal {
+	coefficients = <(-538)	407000>;
+};
+
+/* enable thermal sensor with the correct compatible property set */
+&thermal {
+	compatible = "brcm,bcm2835-thermal";
+	status = "okay";
+};
arch/arm/dts/bcm2836-rpi-2-b.dts +8 -1
index 29e1cfe8eb..e8de41444b 100644
@@ -2,6 +2,7 @@
  #include "bcm2836.dtsi"
  #include "bcm2835-rpi.dtsi"
  #include "bcm283x-rpi-smsc9514.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
  / {
  	compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
@@ -26,7 +27,7 @@
  };
 
  &gpio {
-	pinctrl-0 = <&gpioout &alt0 &i2s_alt0 &alt3>;
+	pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
 
  	/* I2S interface */
  	i2s_alt0: i2s_alt0 {
@@ -38,3 +39,9 @@
  &hdmi {
  	hpd-gpios = <&gpio 46 GPIO_ACTIVE_LOW>;
  };
+
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio14>;
+	status = "okay";
+};
arch/arm/dts/bcm2836.dtsi +11 -0
index 9d0651d8f3..2c26d0be8b 100644
@@ -36,6 +36,7 @@
  	cpus: cpus {
  		#address-cells = <1>;
  		#size-cells = <0>;
+		enable-method = "brcm,bcm2836-smp";
 
  		v7_cpu0: cpu at 0 {
  			device_type = "cpu";
@@ -76,3 +77,13 @@
  	interrupt-parent = <&local_intc>;
  	interrupts = <8>;
  };
+
+&cpu_thermal {
+	coefficients = <(-538)	407000>;
+};
+
+/* enable thermal sensor with the correct compatible property set */
+&thermal {
+	compatible = "brcm,bcm2836-thermal";
+	status = "okay";
+};
arch/arm/dts/bcm2837-rpi-3-b.dts +28 -7
index 7841b724e3..20725ca487 100644
@@ -2,6 +2,7 @@
  #include "bcm2837.dtsi"
  #include "bcm2835-rpi.dtsi"
  #include "bcm283x-rpi-smsc9514.dtsi"
+#include "bcm283x-rpi-usb-host.dtsi"
 
  / {
  	compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
@@ -15,16 +16,36 @@
  		act {
  			gpios = <&gpio 47 0>;
  		};
-
-		pwr {
-			label = "PWR";
-			gpios = <&gpio 35 0>;
-			default-state = "keep";
-			linux,default-trigger = "default-on";
-		};
  	};
  };
 
+/* uart0 communicates with the BT module */
+&uart0 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart0_gpio32 &gpclk2_gpio43>;
+	status = "okay";
+};
+
+/* uart1 is mapped to the pin header */
  &uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_gpio14>;
+	status = "okay";
+};
+
+/* SDHCI is used to control the SDIO for wireless */
+&sdhci {
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_gpio34>;
+	status = "okay";
+	bus-width = <4>;
+	non-removable;
+};
+
+/* SDHOST is used to drive the SD card */
+&sdhost {
+	pinctrl-names = "default";
+	pinctrl-0 = <&sdhost_gpio48>;
  	status = "okay";
+	bus-width = <4>;
  };
arch/arm/dts/bcm2837.dtsi +12 -1
index 8216bbb29f..bc1cca5cf4 100644
@@ -1,7 +1,7 @@
  #include "bcm283x.dtsi"
 
  / {
-	compatible = "brcm,bcm2836";
+	compatible = "brcm,bcm2837";
 
  	soc {
  		ranges = <0x7e000000 0x3f000000 0x1000000>,
@@ -30,6 +30,7 @@
  	cpus: cpus {
  		#address-cells = <1>;
  		#size-cells = <0>;
+		enable-method = "brcm,bcm2836-smp"; // for ARM 32-bit
 
  		cpu0: cpu at 0 {
  			device_type = "cpu";
@@ -74,3 +75,13 @@
  	interrupt-parent = <&local_intc>;
  	interrupts = <8>;
  };
+
+&cpu_thermal {
+	coefficients = <(-538)	412000>;
+};
+
+/* enable thermal sensor with the correct compatible property set */
+&thermal {
+	compatible = "brcm,bcm2837-thermal";
+	status = "okay";
+};
arch/arm/dts/bcm283x-rpi-smsc9512.dtsi +1 -1
index 12c981e511..9a0599f711 100644
@@ -1,6 +1,6 @@
  / {
  	aliases {
-		ethernet = &ethernet;
+		ethernet0 = &ethernet;
  	};
  };
 
arch/arm/dts/bcm283x-rpi-smsc9514.dtsi +1 -1
index 3f0a56ebcf..dc7ae776db 100644
@@ -1,6 +1,6 @@
  / {
  	aliases {
-		ethernet = &ethernet;
+		ethernet0 = &ethernet;
  	};
  };
 
arch/arm/dts/bcm283x-rpi-usb-host.dtsi new file +3 -0
new file mode 100644
index 0000000000..73f4ece8dc
@@ -0,0 +1,3 @@
+&usb {
+	dr_mode = "host";
+};
arch/arm/dts/bcm283x.dtsi +321 -4
index e5b4f20c2a..05a6f489af 100644
@@ -3,6 +3,11 @@
  #include <dt-bindings/clock/bcm2835-aux.h>
  #include <dt-bindings/gpio/gpio.h>
 
+/* firmware-provided startup stubs live here, where the secondary CPUs are
+ * spinning.
+ */
+/memreserve/ 0x00000000 0x00001000;
+
  /* This include file covers the common peripherals and configuration between
   * bcm2835 and bcm2836 implementations, leaving the CPU configuration to
   * bcm2835.dtsi and bcm2836.dtsi.
@@ -19,6 +24,26 @@
  		bootargs = "earlyprintk console=ttyAMA0";
  	};
 
+	thermal-zones {
+		cpu_thermal: cpu-thermal {
+			polling-delay-passive = <0>;
+			polling-delay = <1000>;
+
+			thermal-sensors = <&thermal>;
+
+			trips {
+				cpu-crit {
+					temperature	= <80000>;
+					hysteresis	= <0>;
+					type		= "critical";
+				};
+			};
+
+			cooling-maps {
+			};
+		};
+	};
+
  	soc: soc {
  		compatible = "simple-bus";
  		#address-cells = <1>;
@@ -93,10 +118,13 @@
  			#clock-cells = <1>;
  			reg = <0x7e101000 0x2000>;
 
-			/* CPRMAN derives everything from the platform's
-			 * oscillator.
+			/* CPRMAN derives almost everything from the
+			 * platform's oscillator.  However, the DSI
+			 * pixel clocks come from the DSI analog PHY.
  			 */
-			clocks = <&clk_osc>;
+			clocks = <&clk_osc>,
+				<&dsi0 0>, <&dsi0 1>, <&dsi0 2>,
+				<&dsi1 0>, <&dsi1 1>, <&dsi1 2>;
  		};
 
  		rng at 7e104000 {
@@ -104,7 +132,7 @@
  			reg = <0x7e104000 0x10>;
  		};
 
-		mailbox: mailbox at 7e00b800 {
+		mailbox: mailbox at 7e00b880 {
  			compatible = "brcm,bcm2835-mbox";
  			reg = <0x7e00b880 0x40>;
  			interrupts = <0 1>;
@@ -132,6 +160,213 @@
 
  			interrupt-controller;
  			#interrupt-cells = <2>;
+
+			/* Defines pin muxing groups according to
+			 * BCM2835-ARM-Peripherals.pdf page 102.
+			 *
+			 * While each pin can have its mux selected
+			 * for various functions individually, some
+			 * groups only make sense to switch to a
+			 * particular function together.
+			 */
+			dpi_gpio0: dpi_gpio0 {
+				brcm,pins = <0 1 2 3 4 5 6 7 8 9 10 11
+					     12 13 14 15 16 17 18 19
+					     20 21 22 23 24 25 26 27>;
+				brcm,function = <BCM2835_FSEL_ALT2>;
+			};
+			emmc_gpio22: emmc_gpio22 {
+				brcm,pins = <22 23 24 25 26 27>;
+				brcm,function = <BCM2835_FSEL_ALT3>;
+			};
+			emmc_gpio34: emmc_gpio34 {
+				brcm,pins = <34 35 36 37 38 39>;
+				brcm,function = <BCM2835_FSEL_ALT3>;
+				brcm,pull = <BCM2835_PUD_OFF
+					     BCM2835_PUD_UP
+					     BCM2835_PUD_UP
+					     BCM2835_PUD_UP
+					     BCM2835_PUD_UP
+					     BCM2835_PUD_UP>;
+			};
+			emmc_gpio48: emmc_gpio48 {
+				brcm,pins = <48 49 50 51 52 53>;
+				brcm,function = <BCM2835_FSEL_ALT3>;
+			};
+
+			gpclk0_gpio4: gpclk0_gpio4 {
+				brcm,pins = <4>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			gpclk1_gpio5: gpclk1_gpio5 {
+				brcm,pins = <5>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			gpclk1_gpio42: gpclk1_gpio42 {
+				brcm,pins = <42>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			gpclk1_gpio44: gpclk1_gpio44 {
+				brcm,pins = <44>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			gpclk2_gpio6: gpclk2_gpio6 {
+				brcm,pins = <6>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			gpclk2_gpio43: gpclk2_gpio43 {
+				brcm,pins = <43>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+
+			i2c0_gpio0: i2c0_gpio0 {
+				brcm,pins = <0 1>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			i2c0_gpio28: i2c0_gpio28 {
+				brcm,pins = <28 29>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			i2c0_gpio44: i2c0_gpio44 {
+				brcm,pins = <44 45>;
+				brcm,function = <BCM2835_FSEL_ALT1>;
+			};
+			i2c1_gpio2: i2c1_gpio2 {
+				brcm,pins = <2 3>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			i2c1_gpio44: i2c1_gpio44 {
+				brcm,pins = <44 45>;
+				brcm,function = <BCM2835_FSEL_ALT2>;
+			};
+			i2c_slave_gpio18: i2c_slave_gpio18 {
+				brcm,pins = <18 19 20 21>;
+				brcm,function = <BCM2835_FSEL_ALT3>;
+			};
+
+			jtag_gpio4: jtag_gpio4 {
+				brcm,pins = <4 5 6 12 13>;
+				brcm,function = <BCM2835_FSEL_ALT4>;
+			};
+			jtag_gpio22: jtag_gpio22 {
+				brcm,pins = <22 23 24 25 26 27>;
+				brcm,function = <BCM2835_FSEL_ALT4>;
+			};
+
+			pcm_gpio18: pcm_gpio18 {
+				brcm,pins = <18 19 20 21>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			pcm_gpio28: pcm_gpio28 {
+				brcm,pins = <28 29 30 31>;
+				brcm,function = <BCM2835_FSEL_ALT2>;
+			};
+
+			pwm0_gpio12: pwm0_gpio12 {
+				brcm,pins = <12>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			pwm0_gpio18: pwm0_gpio18 {
+				brcm,pins = <18>;
+				brcm,function = <BCM2835_FSEL_ALT5>;
+			};
+			pwm0_gpio40: pwm0_gpio40 {
+				brcm,pins = <40>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			pwm1_gpio13: pwm1_gpio13 {
+				brcm,pins = <13>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			pwm1_gpio19: pwm1_gpio19 {
+				brcm,pins = <19>;
+				brcm,function = <BCM2835_FSEL_ALT5>;
+			};
+			pwm1_gpio41: pwm1_gpio41 {
+				brcm,pins = <41>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			pwm1_gpio45: pwm1_gpio45 {
+				brcm,pins = <45>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+
+			sdhost_gpio48: sdhost_gpio48 {
+				brcm,pins = <48 49 50 51 52 53>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+
+			spi0_gpio7: spi0_gpio7 {
+				brcm,pins = <7 8 9 10 11>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			spi0_gpio35: spi0_gpio35 {
+				brcm,pins = <35 36 37 38 39>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			spi1_gpio16: spi1_gpio16 {
+				brcm,pins = <16 17 18 19 20 21>;
+				brcm,function = <BCM2835_FSEL_ALT4>;
+			};
+			spi2_gpio40: spi2_gpio40 {
+				brcm,pins = <40 41 42 43 44 45>;
+				brcm,function = <BCM2835_FSEL_ALT4>;
+			};
+
+			uart0_gpio14: uart0_gpio14 {
+				brcm,pins = <14 15>;
+				brcm,function = <BCM2835_FSEL_ALT0>;
+			};
+			/* Separate from the uart0_gpio14 group
+			 * because it conflicts with spi1_gpio16, and
+			 * people often run uart0 on the two pins
+			 * without flow control.
+			 */
+			uart0_ctsrts_gpio16: uart0_ctsrts_gpio16 {
+				brcm,pins = <16 17>;
+				brcm,function = <BCM2835_FSEL_ALT3>;
+			};
+			uart0_ctsrts_gpio30: uart0_ctsrts_gpio30 {
+				brcm,pins = <30 31>;
+				brcm,function = <BCM2835_FSEL_ALT3>;
+			};
+			uart0_gpio32: uart0_gpio32 {
+				brcm,pins = <32 33>;
+				brcm,function = <BCM2835_FSEL_ALT3>;
+			};
+			uart0_gpio36: uart0_gpio36 {
+				brcm,pins = <36 37>;
+				brcm,function = <BCM2835_FSEL_ALT2>;
+			};
+			uart0_ctsrts_gpio38: uart0_ctsrts_gpio38 {
+				brcm,pins = <38 39>;
+				brcm,function = <BCM2835_FSEL_ALT2>;
+			};
+
+			uart1_gpio14: uart1_gpio14 {
+				brcm,pins = <14 15>;
+				brcm,function = <BCM2835_FSEL_ALT5>;
+			};
+			uart1_ctsrts_gpio16: uart1_ctsrts_gpio16 {
+				brcm,pins = <16 17>;
+				brcm,function = <BCM2835_FSEL_ALT5>;
+			};
+			uart1_gpio32: uart1_gpio32 {
+				brcm,pins = <32 33>;
+				brcm,function = <BCM2835_FSEL_ALT5>;
+			};
+			uart1_ctsrts_gpio30: uart1_ctsrts_gpio30 {
+				brcm,pins = <30 31>;
+				brcm,function = <BCM2835_FSEL_ALT5>;
+			};
+			uart1_gpio40: uart1_gpio40 {
+				brcm,pins = <40 41>;
+				brcm,function = <BCM2835_FSEL_ALT5>;
+			};
+			uart1_ctsrts_gpio42: uart1_ctsrts_gpio42 {
+				brcm,pins = <42 43>;
+				brcm,function = <BCM2835_FSEL_ALT5>;
+			};
  		};
 
  		uart0: serial at 7e201000 {
@@ -144,6 +379,16 @@
  			arm,primecell-periphid = <0x00241011>;
  		};
 
+		sdhost: mmc at 7e202000 {
+			compatible = "brcm,bcm2835-sdhost";
+			reg = <0x7e202000 0x100>;
+			interrupts = <2 24>;
+			clocks = <&clocks BCM2835_CLOCK_VPU>;
+			dmas = <&dma 13>;
+			dma-names = "rx-tx";
+			status = "disabled";
+		};
+
  		i2s: i2s at 7e203000 {
  			compatible = "brcm,bcm2835-i2s";
  			reg = <0x7e203000 0x20>,
@@ -187,6 +432,33 @@
  			interrupts = <2 14>; /* pwa1 */
  		};
 
+		dsi0: dsi at 7e209000 {
+			compatible = "brcm,bcm2835-dsi0";
+			reg = <0x7e209000 0x78>;
+			interrupts = <2 4>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			#clock-cells = <1>;
+
+			clocks = <&clocks BCM2835_PLLA_DSI0>,
+				 <&clocks BCM2835_CLOCK_DSI0E>,
+				 <&clocks BCM2835_CLOCK_DSI0P>;
+			clock-names = "phy", "escape", "pixel";
+
+			clock-output-names = "dsi0_byte",
+					     "dsi0_ddr2",
+					     "dsi0_ddr";
+
+		};
+
+		thermal: thermal at 7e212000 {
+			compatible = "brcm,bcm2835-thermal";
+			reg = <0x7e212000 0x8>;
+			clocks = <&clocks BCM2835_CLOCK_TSENS>;
+			#thermal-sensor-cells = <0>;
+			status = "disabled";
+		};
+
  		aux: aux at 0x7e215000 {
  			compatible = "brcm,bcm2835-aux";
  			#clock-cells = <1>;
@@ -246,6 +518,26 @@
  			interrupts = <2 1>;
  		};
 
+		dsi1: dsi at 7e700000 {
+			compatible = "brcm,bcm2835-dsi1";
+			reg = <0x7e700000 0x8c>;
+			interrupts = <2 12>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			#clock-cells = <1>;
+
+			clocks = <&clocks BCM2835_PLLD_DSI1>,
+				 <&clocks BCM2835_CLOCK_DSI1E>,
+				 <&clocks BCM2835_CLOCK_DSI1P>;
+			clock-names = "phy", "escape", "pixel";
+
+			clock-output-names = "dsi1_byte",
+					     "dsi1_ddr2",
+					     "dsi1_ddr";
+
+			status = "disabled";
+		};
+
  		i2c1: i2c at 7e804000 {
  			compatible = "brcm,bcm2835-i2c";
  			reg = <0x7e804000 0x1000>;
@@ -266,6 +558,14 @@
  			status = "disabled";
  		};
 
+		vec: vec at 7e806000 {
+			compatible = "brcm,bcm2835-vec";
+			reg = <0x7e806000 0x1000>;
+			clocks = <&clocks BCM2835_CLOCK_VEC>;
+			interrupts = <2 27>;
+			status = "disabled";
+		};
+
  		pixelvalve at 7e807000 {
  			compatible = "brcm,bcm2835-pixelvalve2";
  			reg = <0x7e807000 0x100>;
@@ -281,6 +581,8 @@
  			clocks = <&clocks BCM2835_PLLH_PIX>,
  				 <&clocks BCM2835_CLOCK_HSM>;
  			clock-names = "pixel", "hdmi";
+			dmas = <&dma 17>;
+			dma-names = "audio-rx";
  			status = "disabled";
  		};
 
@@ -290,6 +592,10 @@
  			interrupts = <1 9>;
  			#address-cells = <1>;
  			#size-cells = <0>;
+			clocks = <&clk_usb>;
+			clock-names = "otg";
+			phys = <&usbphy>;
+			phy-names = "usb2-phy";
  		};
 
  		v3d: v3d at 7ec00000 {
@@ -317,6 +623,17 @@
  			clock-frequency = <19200000>;
  		};
 
+		clk_usb: clock at 4 {
+			compatible = "fixed-clock";
+			reg = <4>;
+			#clock-cells = <0>;
+			clock-output-names = "otg";
+			clock-frequency = <480000000>;
+		};
+	};
+
+	usbphy: phy {
+		compatible = "usb-nop-xceiv";
  	};
  };
 
include/dt-bindings/clock/bcm2835.h +2 -0
index 360e00cefd..a0c812b0fa 100644
@@ -64,3 +64,5 @@
  #define BCM2835_CLOCK_CAM1		46
  #define BCM2835_CLOCK_DSI0E		47
  #define BCM2835_CLOCK_DSI1E		48
+#define BCM2835_CLOCK_DSI0P		49
+#define BCM2835_CLOCK_DSI1P		50
include/dt-bindings/pinctrl/bcm2835.h +5 -0
index 6f0bc37af3..e4e4fdf5d3 100644
@@ -24,4 +24,9 @@
  #define BCM2835_FSEL_ALT2	6
  #define BCM2835_FSEL_ALT3	7
 
+/* brcm,pull property */
+#define BCM2835_PUD_OFF		0
+#define BCM2835_PUD_DOWN	1
+#define BCM2835_PUD_UP		2
+
  #endif /* __DT_BINDINGS_PINCTRL_BCM2835_H__ */
#2 lore raw

PATCH v2 1/1 fdt: update bcm283x device tree sources to Linux 4.14 state

Quoted 8 lines · Stefan Wahren

Hi Alexander,

Am 04.10.2017 um 14:39 schrieb Alexander Graf:

Quoted 4 lines

Upstream Linux has received a few device tree updates to the RPi which we should propagate into the builtin U-Boot one as well to gain hardware support.

Quoted 5 lines
Quoted 3 lines

This patch bumps the dts files to their 4.14 Linux counterparts with the exception of sdhost on 32bit RPi versions. There we stay with iproc as the sdhost driver is missing in U-Boot.

out of curiosity, why is the RPi Zero isn't included?

It wasn't included before, so I didn't want to introduce it in this update.

Basically we don't have a zero U-Boot target today. I think that's wrong
- we should allow for more than a single built-in DT to exist and choose the one we pick based on the target machine we find. But that's bigger than this patch :)

Alex

#3 lore raw

PATCH v2 1/1 fdt: update bcm283x device tree sources to Linux 4.14 state

In reply to Alexander Graf
Quoted 9 lines · Alexander Graf

Upstream Linux has received a few device tree updates to the RPi which we should propagate into the builtin U-Boot one as well to gain hardware support.

This patch bumps the dts files to their 4.14 Linux counterparts with the exception of sdhost on 32bit RPi versions. There we stay with iproc as the sdhost driver is missing in U-Boot.

Applied to u-boot/master, thanks!

Signature · 8 lines
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20171016/5cd6224d/attachment.sig>