Message ID | 20171004043337.59595-1-agraf@suse.de |
---|---|
State | Superseded |
Headers | show |
Series | fdt: update bcm283x device tree sources to Linux 4.14 state | expand |
On Monday, October 4 2017, 06:33:37 CEST Alexander Graf wrote: > 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. Looks good to me. > Signed-off-by: Alexander Graf <agraf@suse.de> Acked-by: Fabian Vogt <fvogt@suse.com> > --- > 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 > > diff --git a/arch/arm/dts/bcm2835-rpi-a-plus.dts b/arch/arm/dts/bcm2835-rpi-a-plus.dts > index 35ff4e7a4a..9f866491ef 100644 > --- a/arch/arm/dts/bcm2835-rpi-a-plus.dts > +++ b/arch/arm/dts/bcm2835-rpi-a-plus.dts > @@ -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"; > +}; > diff --git a/arch/arm/dts/bcm2835-rpi-a.dts b/arch/arm/dts/bcm2835-rpi-a.dts > index 306a84ee98..4b1af06c8d 100644 > --- a/arch/arm/dts/bcm2835-rpi-a.dts > +++ b/arch/arm/dts/bcm2835-rpi-a.dts > @@ -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"; > +}; > diff --git a/arch/arm/dts/bcm2835-rpi-b-plus.dts b/arch/arm/dts/bcm2835-rpi-b-plus.dts > index d5fdb8e761..a846f1e781 100644 > --- a/arch/arm/dts/bcm2835-rpi-b-plus.dts > +++ b/arch/arm/dts/bcm2835-rpi-b-plus.dts > @@ -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"; > +}; > diff --git a/arch/arm/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/dts/bcm2835-rpi-b-rev2.dts > index bfc4bd9b77..e860964e39 100644 > --- a/arch/arm/dts/bcm2835-rpi-b-rev2.dts > +++ b/arch/arm/dts/bcm2835-rpi-b-rev2.dts > @@ -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"; > +}; > diff --git a/arch/arm/dts/bcm2835-rpi-b.dts b/arch/arm/dts/bcm2835-rpi-b.dts > index 0371bb7374..5d77f3f8c4 100644 > --- a/arch/arm/dts/bcm2835-rpi-b.dts > +++ b/arch/arm/dts/bcm2835-rpi-b.dts > @@ -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"; > +}; > diff --git a/arch/arm/dts/bcm2835-rpi.dtsi b/arch/arm/dts/bcm2835-rpi.dtsi > index e9b47b2bbc..e36c392a2b 100644 > --- a/arch/arm/dts/bcm2835-rpi.dtsi > +++ b/arch/arm/dts/bcm2835-rpi.dtsi > @@ -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>; > + bus-width = <4>; > +}; > + > +&sdhost { > + pinctrl-names = "default"; > + pinctrl-0 = <&sdhost_gpio48>; > status = "okay"; > 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>; > +}; > diff --git a/arch/arm/dts/bcm2835.dtsi b/arch/arm/dts/bcm2835.dtsi > index a78759e737..659b6e9513 100644 > --- a/arch/arm/dts/bcm2835.dtsi > +++ b/arch/arm/dts/bcm2835.dtsi > @@ -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"; > +}; > diff --git a/arch/arm/dts/bcm2836-rpi-2-b.dts b/arch/arm/dts/bcm2836-rpi-2-b.dts > index 29e1cfe8eb..e8de41444b 100644 > --- a/arch/arm/dts/bcm2836-rpi-2-b.dts > +++ b/arch/arm/dts/bcm2836-rpi-2-b.dts > @@ -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"; > +}; > diff --git a/arch/arm/dts/bcm2836.dtsi b/arch/arm/dts/bcm2836.dtsi > index 9d0651d8f3..2c26d0be8b 100644 > --- a/arch/arm/dts/bcm2836.dtsi > +++ b/arch/arm/dts/bcm2836.dtsi > @@ -36,6 +36,7 @@ > cpus: cpus { > #address-cells = <1>; > #size-cells = <0>; > + enable-method = "brcm,bcm2836-smp"; > > v7_cpu0: cpu@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"; > +}; > diff --git a/arch/arm/dts/bcm2837-rpi-3-b.dts b/arch/arm/dts/bcm2837-rpi-3-b.dts > index 7841b724e3..20725ca487 100644 > --- a/arch/arm/dts/bcm2837-rpi-3-b.dts > +++ b/arch/arm/dts/bcm2837-rpi-3-b.dts > @@ -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>; > }; > diff --git a/arch/arm/dts/bcm2837.dtsi b/arch/arm/dts/bcm2837.dtsi > index 8216bbb29f..bc1cca5cf4 100644 > --- a/arch/arm/dts/bcm2837.dtsi > +++ b/arch/arm/dts/bcm2837.dtsi > @@ -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@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"; > +}; > diff --git a/arch/arm/dts/bcm283x-rpi-smsc9512.dtsi b/arch/arm/dts/bcm283x-rpi-smsc9512.dtsi > index 12c981e511..9a0599f711 100644 > --- a/arch/arm/dts/bcm283x-rpi-smsc9512.dtsi > +++ b/arch/arm/dts/bcm283x-rpi-smsc9512.dtsi > @@ -1,6 +1,6 @@ > / { > aliases { > - ethernet = ðernet; > + ethernet0 = ðernet; > }; > }; > > diff --git a/arch/arm/dts/bcm283x-rpi-smsc9514.dtsi b/arch/arm/dts/bcm283x-rpi-smsc9514.dtsi > index 3f0a56ebcf..dc7ae776db 100644 > --- a/arch/arm/dts/bcm283x-rpi-smsc9514.dtsi > +++ b/arch/arm/dts/bcm283x-rpi-smsc9514.dtsi > @@ -1,6 +1,6 @@ > / { > aliases { > - ethernet = ðernet; > + ethernet0 = ðernet; > }; > }; > > diff --git a/arch/arm/dts/bcm283x-rpi-usb-host.dtsi b/arch/arm/dts/bcm283x-rpi-usb-host.dtsi > new file mode 100644 > index 0000000000..73f4ece8dc > --- /dev/null > +++ b/arch/arm/dts/bcm283x-rpi-usb-host.dtsi > @@ -0,0 +1,3 @@ > +&usb { > + dr_mode = "host"; > +}; > diff --git a/arch/arm/dts/bcm283x.dtsi b/arch/arm/dts/bcm283x.dtsi > index e5b4f20c2a..05a6f489af 100644 > --- a/arch/arm/dts/bcm283x.dtsi > +++ b/arch/arm/dts/bcm283x.dtsi > @@ -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@7e104000 { > @@ -104,7 +132,7 @@ > reg = <0x7e104000 0x10>; > }; > > - mailbox: mailbox@7e00b800 { > + mailbox: mailbox@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@7e201000 { > @@ -144,6 +379,16 @@ > arm,primecell-periphid = <0x00241011>; > }; > > + sdhost: mmc@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@7e203000 { > compatible = "brcm,bcm2835-i2s"; > reg = <0x7e203000 0x20>, > @@ -187,6 +432,33 @@ > interrupts = <2 14>; /* pwa1 */ > }; > > + dsi0: dsi@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@7e212000 { > + compatible = "brcm,bcm2835-thermal"; > + reg = <0x7e212000 0x8>; > + clocks = <&clocks BCM2835_CLOCK_TSENS>; > + #thermal-sensor-cells = <0>; > + status = "disabled"; > + }; > + > aux: aux@0x7e215000 { > compatible = "brcm,bcm2835-aux"; > #clock-cells = <1>; > @@ -246,6 +518,26 @@ > interrupts = <2 1>; > }; > > + dsi1: dsi@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@7e804000 { > compatible = "brcm,bcm2835-i2c"; > reg = <0x7e804000 0x1000>; > @@ -266,6 +558,14 @@ > status = "disabled"; > }; > > + vec: vec@7e806000 { > + compatible = "brcm,bcm2835-vec"; > + reg = <0x7e806000 0x1000>; > + clocks = <&clocks BCM2835_CLOCK_VEC>; > + interrupts = <2 27>; > + status = "disabled"; > + }; > + > pixelvalve@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@7ec00000 { > @@ -317,6 +623,17 @@ > clock-frequency = <19200000>; > }; > > + clk_usb: clock@4 { > + compatible = "fixed-clock"; > + reg = <4>; > + #clock-cells = <0>; > + clock-output-names = "otg"; > + clock-frequency = <480000000>; > + }; > + }; > + > + usbphy: phy { > + compatible = "usb-nop-xceiv"; > }; > }; > > diff --git a/include/dt-bindings/clock/bcm2835.h b/include/dt-bindings/clock/bcm2835.h > index 360e00cefd..a0c812b0fa 100644 > --- a/include/dt-bindings/clock/bcm2835.h > +++ b/include/dt-bindings/clock/bcm2835.h > @@ -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 > diff --git a/include/dt-bindings/pinctrl/bcm2835.h b/include/dt-bindings/pinctrl/bcm2835.h > index 6f0bc37af3..e4e4fdf5d3 100644 > --- a/include/dt-bindings/pinctrl/bcm2835.h > +++ b/include/dt-bindings/pinctrl/bcm2835.h > @@ -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__ */ >
On 04.10.17 08:59, Fabian Vogt wrote: > On Monday, October 4 2017, 06:33:37 CEST Alexander Graf wrote: >> 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. > > Looks good to me. > >> Signed-off-by: Alexander Graf <agraf@suse.de> > Acked-by: Fabian Vogt <fvogt@suse.com> My testing just revealed that this breaks on the RPi 1B. It doesn't find the SD card. I'll dig a bit. Alex
diff --git a/arch/arm/dts/bcm2835-rpi-a-plus.dts b/arch/arm/dts/bcm2835-rpi-a-plus.dts index 35ff4e7a4a..9f866491ef 100644 --- a/arch/arm/dts/bcm2835-rpi-a-plus.dts +++ b/arch/arm/dts/bcm2835-rpi-a-plus.dts @@ -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"; +}; diff --git a/arch/arm/dts/bcm2835-rpi-a.dts b/arch/arm/dts/bcm2835-rpi-a.dts index 306a84ee98..4b1af06c8d 100644 --- a/arch/arm/dts/bcm2835-rpi-a.dts +++ b/arch/arm/dts/bcm2835-rpi-a.dts @@ -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"; +}; diff --git a/arch/arm/dts/bcm2835-rpi-b-plus.dts b/arch/arm/dts/bcm2835-rpi-b-plus.dts index d5fdb8e761..a846f1e781 100644 --- a/arch/arm/dts/bcm2835-rpi-b-plus.dts +++ b/arch/arm/dts/bcm2835-rpi-b-plus.dts @@ -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"; +}; diff --git a/arch/arm/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/dts/bcm2835-rpi-b-rev2.dts index bfc4bd9b77..e860964e39 100644 --- a/arch/arm/dts/bcm2835-rpi-b-rev2.dts +++ b/arch/arm/dts/bcm2835-rpi-b-rev2.dts @@ -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"; +}; diff --git a/arch/arm/dts/bcm2835-rpi-b.dts b/arch/arm/dts/bcm2835-rpi-b.dts index 0371bb7374..5d77f3f8c4 100644 --- a/arch/arm/dts/bcm2835-rpi-b.dts +++ b/arch/arm/dts/bcm2835-rpi-b.dts @@ -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"; +}; diff --git a/arch/arm/dts/bcm2835-rpi.dtsi b/arch/arm/dts/bcm2835-rpi.dtsi index e9b47b2bbc..e36c392a2b 100644 --- a/arch/arm/dts/bcm2835-rpi.dtsi +++ b/arch/arm/dts/bcm2835-rpi.dtsi @@ -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>; + bus-width = <4>; +}; + +&sdhost { + pinctrl-names = "default"; + pinctrl-0 = <&sdhost_gpio48>; status = "okay"; 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>; +}; diff --git a/arch/arm/dts/bcm2835.dtsi b/arch/arm/dts/bcm2835.dtsi index a78759e737..659b6e9513 100644 --- a/arch/arm/dts/bcm2835.dtsi +++ b/arch/arm/dts/bcm2835.dtsi @@ -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"; +}; diff --git a/arch/arm/dts/bcm2836-rpi-2-b.dts b/arch/arm/dts/bcm2836-rpi-2-b.dts index 29e1cfe8eb..e8de41444b 100644 --- a/arch/arm/dts/bcm2836-rpi-2-b.dts +++ b/arch/arm/dts/bcm2836-rpi-2-b.dts @@ -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"; +}; diff --git a/arch/arm/dts/bcm2836.dtsi b/arch/arm/dts/bcm2836.dtsi index 9d0651d8f3..2c26d0be8b 100644 --- a/arch/arm/dts/bcm2836.dtsi +++ b/arch/arm/dts/bcm2836.dtsi @@ -36,6 +36,7 @@ cpus: cpus { #address-cells = <1>; #size-cells = <0>; + enable-method = "brcm,bcm2836-smp"; v7_cpu0: cpu@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"; +}; diff --git a/arch/arm/dts/bcm2837-rpi-3-b.dts b/arch/arm/dts/bcm2837-rpi-3-b.dts index 7841b724e3..20725ca487 100644 --- a/arch/arm/dts/bcm2837-rpi-3-b.dts +++ b/arch/arm/dts/bcm2837-rpi-3-b.dts @@ -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>; }; diff --git a/arch/arm/dts/bcm2837.dtsi b/arch/arm/dts/bcm2837.dtsi index 8216bbb29f..bc1cca5cf4 100644 --- a/arch/arm/dts/bcm2837.dtsi +++ b/arch/arm/dts/bcm2837.dtsi @@ -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@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"; +}; diff --git a/arch/arm/dts/bcm283x-rpi-smsc9512.dtsi b/arch/arm/dts/bcm283x-rpi-smsc9512.dtsi index 12c981e511..9a0599f711 100644 --- a/arch/arm/dts/bcm283x-rpi-smsc9512.dtsi +++ b/arch/arm/dts/bcm283x-rpi-smsc9512.dtsi @@ -1,6 +1,6 @@ / { aliases { - ethernet = ðernet; + ethernet0 = ðernet; }; }; diff --git a/arch/arm/dts/bcm283x-rpi-smsc9514.dtsi b/arch/arm/dts/bcm283x-rpi-smsc9514.dtsi index 3f0a56ebcf..dc7ae776db 100644 --- a/arch/arm/dts/bcm283x-rpi-smsc9514.dtsi +++ b/arch/arm/dts/bcm283x-rpi-smsc9514.dtsi @@ -1,6 +1,6 @@ / { aliases { - ethernet = ðernet; + ethernet0 = ðernet; }; }; diff --git a/arch/arm/dts/bcm283x-rpi-usb-host.dtsi b/arch/arm/dts/bcm283x-rpi-usb-host.dtsi new file mode 100644 index 0000000000..73f4ece8dc --- /dev/null +++ b/arch/arm/dts/bcm283x-rpi-usb-host.dtsi @@ -0,0 +1,3 @@ +&usb { + dr_mode = "host"; +}; diff --git a/arch/arm/dts/bcm283x.dtsi b/arch/arm/dts/bcm283x.dtsi index e5b4f20c2a..05a6f489af 100644 --- a/arch/arm/dts/bcm283x.dtsi +++ b/arch/arm/dts/bcm283x.dtsi @@ -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@7e104000 { @@ -104,7 +132,7 @@ reg = <0x7e104000 0x10>; }; - mailbox: mailbox@7e00b800 { + mailbox: mailbox@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@7e201000 { @@ -144,6 +379,16 @@ arm,primecell-periphid = <0x00241011>; }; + sdhost: mmc@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@7e203000 { compatible = "brcm,bcm2835-i2s"; reg = <0x7e203000 0x20>, @@ -187,6 +432,33 @@ interrupts = <2 14>; /* pwa1 */ }; + dsi0: dsi@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@7e212000 { + compatible = "brcm,bcm2835-thermal"; + reg = <0x7e212000 0x8>; + clocks = <&clocks BCM2835_CLOCK_TSENS>; + #thermal-sensor-cells = <0>; + status = "disabled"; + }; + aux: aux@0x7e215000 { compatible = "brcm,bcm2835-aux"; #clock-cells = <1>; @@ -246,6 +518,26 @@ interrupts = <2 1>; }; + dsi1: dsi@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@7e804000 { compatible = "brcm,bcm2835-i2c"; reg = <0x7e804000 0x1000>; @@ -266,6 +558,14 @@ status = "disabled"; }; + vec: vec@7e806000 { + compatible = "brcm,bcm2835-vec"; + reg = <0x7e806000 0x1000>; + clocks = <&clocks BCM2835_CLOCK_VEC>; + interrupts = <2 27>; + status = "disabled"; + }; + pixelvalve@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@7ec00000 { @@ -317,6 +623,17 @@ clock-frequency = <19200000>; }; + clk_usb: clock@4 { + compatible = "fixed-clock"; + reg = <4>; + #clock-cells = <0>; + clock-output-names = "otg"; + clock-frequency = <480000000>; + }; + }; + + usbphy: phy { + compatible = "usb-nop-xceiv"; }; }; diff --git a/include/dt-bindings/clock/bcm2835.h b/include/dt-bindings/clock/bcm2835.h index 360e00cefd..a0c812b0fa 100644 --- a/include/dt-bindings/clock/bcm2835.h +++ b/include/dt-bindings/clock/bcm2835.h @@ -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 diff --git a/include/dt-bindings/pinctrl/bcm2835.h b/include/dt-bindings/pinctrl/bcm2835.h index 6f0bc37af3..e4e4fdf5d3 100644 --- a/include/dt-bindings/pinctrl/bcm2835.h +++ b/include/dt-bindings/pinctrl/bcm2835.h @@ -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__ */
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. Signed-off-by: Alexander Graf <agraf@suse.de> --- 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