From c5e96d0237ccb46cabf9384b86484c6fc4d0a2b5 Mon Sep 17 00:00:00 2001 From: Kevin Quigley Date: Thu, 31 May 2018 11:22:26 +0000 Subject: [PATCH] Update devicetree to enable 7" touchscreen Panel --- arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 5 ++++ arch/arm/boot/dts/bcm2708-rpi-b.dts | 6 +++++ arch/arm/boot/dts/bcm2708-rpi.dtsi | 21 +++++++++++++++ arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 5 ++++ arch/arm/boot/dts/bcm270x.dtsi | 24 +++++++++++++++++ arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 6 +++++ arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 5 ++++ arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 5 ++++ arch/arm/boot/dts/bcm2835-rpi-b.dts | 5 ++++ arch/arm/boot/dts/bcm2835-rpi.dtsi | 2 ++ arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 5 ++++ arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 5 ++++ arch/arm/boot/dts/bcm283x.dtsi | 31 +++++++++++++++++++++- arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts | 21 +++++++++++++++ 14 files changed, 145 insertions(+), 1 deletion(-) diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts index 31db4fd917a4..adc9a2ba97bc 100644 --- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts @@ -120,3 +120,8 @@ pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; }; }; + +&i2c_dsi { + gpios = <&gpio 28 0 + &gpio 29 0>; +}; diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts index ffe5d14feb9f..57365c597507 100644 --- a/arch/arm/boot/dts/bcm2708-rpi-b.dts +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts @@ -110,3 +110,9 @@ act_led_trigger = <&act_led>,"linux,default-trigger"; }; }; + + +&i2c_dsi { + gpios = <&gpio 2 0 + &gpio 3 0>; +}; diff --git a/arch/arm/boot/dts/bcm2708-rpi.dtsi b/arch/arm/boot/dts/bcm2708-rpi.dtsi index d105d4e208f2..5c1481f30d81 100644 --- a/arch/arm/boot/dts/bcm2708-rpi.dtsi +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi @@ -131,6 +131,27 @@ power-domains = <&power RPI_POWER_DOMAIN_USB>; }; +&v3d { + power-domains = <&power RPI_POWER_DOMAIN_V3D>; +}; + +&vec { + power-domains = <&power RPI_POWER_DOMAIN_VEC>; + status = "okay"; +}; + +&dsi0 { + power-domains = <&power RPI_POWER_DOMAIN_DSI0>; + status = "okay"; +}; + +&dsi1 { + power-domains = <&power RPI_POWER_DOMAIN_DSI1>; + status = "okay"; +}; + + + &clocks { firmware = <&firmware>; }; diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts index 442d2ebbdd36..124206498d33 100644 --- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts @@ -121,3 +121,8 @@ pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; }; }; + +&i2c_dsi { + gpios = <&gpio 28 0 + &gpio 29 0>; +}; diff --git a/arch/arm/boot/dts/bcm270x.dtsi b/arch/arm/boot/dts/bcm270x.dtsi index d26b10ad0245..a6e56751d5d1 100644 --- a/arch/arm/boot/dts/bcm270x.dtsi +++ b/arch/arm/boot/dts/bcm270x.dtsi @@ -77,6 +77,26 @@ status = "disabled"; }; + 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"; + }; + firmwarekms: firmwarekms@7e600000 { compatible = "raspberrypi,rpi-firmware-kms"; /* SMI interrupt reg */ @@ -173,3 +193,7 @@ &vc4 { status = "disabled"; }; + +&dsi1 { + power-domains = <&power RPI_POWER_DOMAIN_DSI1>; +}; diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts index 3f84e2af8c25..f96b9a9cfd76 100644 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts @@ -189,3 +189,9 @@ pwr_led_trigger = <&pwr_led>,"linux,default-trigger"; }; }; + +&i2c_dsi { + gpios = <&gpio 44 0 + &gpio 45 0>; +}; + diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts index 0161a8483e39..76463f9a9dfe 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts @@ -108,3 +108,8 @@ pinctrl-0 = <&uart0_gpio14>; status = "okay"; }; + +&i2c_dsi { + gpios = <&gpio 28 0 + &gpio 29 0>; +}; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts index 4bc70efe43d6..8a21be305b96 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts @@ -101,3 +101,8 @@ pinctrl-0 = <&uart0_gpio14>; status = "okay"; }; + +&i2c_dsi { + gpios = <&gpio 2 0 + &gpio 3 0>; +}; diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts index cca4a75a5651..0d2c9eb74df3 100644 --- a/arch/arm/boot/dts/bcm2835-rpi-b.dts +++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts @@ -96,3 +96,8 @@ pinctrl-0 = <&uart0_gpio14>; status = "okay"; }; + +&i2c_dsi { + gpios = <&gpio 28 0 + &gpio 29 0>; +}; diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi index e36c392a2b8f..17ad89b5b57f 100644 --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi @@ -101,8 +101,10 @@ &dsi0 { power-domains = <&power RPI_POWER_DOMAIN_DSI0>; + status = "okay"; }; &dsi1 { power-domains = <&power RPI_POWER_DOMAIN_DSI1>; + status = "okay"; }; diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts index 6669355fd655..5e9f89a2cbec 100644 --- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts +++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts @@ -46,3 +46,8 @@ pinctrl-0 = <&uart0_gpio14>; status = "okay"; }; + +&i2c_dsi { + gpios = <&gpio 28 0 + &gpio 29 0>; +}; diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts index a8844d033b3f..1b0b145bdd14 100644 --- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts +++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts @@ -60,3 +60,8 @@ status = "okay"; bus-width = <4>; }; + +&i2c_dsi { + gpios = <&gpio 44 0 + &gpio 45 0>; +}; diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi index dcde93c85c2d..daa3e45eb616 100644 --- a/arch/arm/boot/dts/bcm283x.dtsi +++ b/arch/arm/boot/dts/bcm283x.dtsi @@ -539,8 +539,12 @@ clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr"; - status = "disabled"; + port { + dsi_out_port: endpoint { + remote-endpoint = <&panel_dsi_port>; + }; + }; }; i2c1: i2c@7e804000 { @@ -612,6 +616,31 @@ vc4: gpu { compatible = "brcm,bcm2835-vc4"; }; + + i2c_dsi: i2cdsi { + /* We have to use i2c-gpio because the + * firmware is also polling another device + * using the only hardware I2C bus that could + * connect to these pins. + */ + compatible = "i2c-gpio"; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + gpios = <&gpio 28 0 + &gpio 29 0>; + + lcd@45 { + compatible = "raspberrypi,7inch-touchscreen-panel"; + reg = <0x45>; + + port { + panel_dsi_port: endpoint { + remote-endpoint = <&dsi_out_port>; + }; + }; + }; + }; }; clocks { diff --git a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts index 489679637306..ddd910661f19 100644 --- a/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts +++ b/arch/arm/boot/dts/overlays/vc4-kms-v3d-overlay.dts @@ -141,6 +141,27 @@ }; }; + fragment@17 { + target = <&dsi1>; + __overlay__ { + #address-cells = <1>; + #size-cells = <0>; + status = "okay"; + port { + dsi_out_port: endpoint { + remote-endpoint = <&panel_dsi_port>; + }; + }; + }; + }; + + fragment@18 { + target = <&i2c_dsi>; + __overlay__ { + status = "okay"; + }; + }; + __overrides__ { cma-256 = <0>,"+0-1-2-3-4"; cma-192 = <0>,"-0+1-2-3-4"; -- 2.13.6