1 From 380fd9f0da44ed62dff59a7c7e06f1190b58aa64 Mon Sep 17 00:00:00 2001
2 From: Kevin Quigley <kevin@kquigley.co.uk>
3 Date: Mon, 24 Sep 2018 12:22:31 +0000
4 Subject: [PATCH 1/4] Add devicetree support for RaspberryPi 7" panel over DSI
8 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 5 +++
9 arch/arm/boot/dts/bcm2708-rpi-b.dts | 6 +++
10 arch/arm/boot/dts/bcm2708-rpi.dtsi | 21 ++++++++++
11 arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 5 +++
12 arch/arm/boot/dts/bcm270x.dtsi | 39 +++++++++++++++++
13 arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 6 +++
14 arch/arm/boot/dts/bcm2835-rpi-b-plus.dts | 5 +++
15 arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts | 5 +++
16 arch/arm/boot/dts/bcm2835-rpi-b.dts | 5 +++
17 arch/arm/boot/dts/bcm2835-rpi.dtsi | 2 +
18 arch/arm/boot/dts/bcm2836-rpi-2-b.dts | 5 +++
19 arch/arm/boot/dts/bcm2837-rpi-3-b.dts | 5 +++
20 arch/arm/boot/dts/bcm283x.dtsi | 16 ++++++-
21 arch/arm/boot/dts/overlays/Makefile | 1 +
22 .../boot/dts/overlays/rpi-7inch-overlay.dts | 42 +++++++++++++++++++
23 15 files changed, 167 insertions(+), 1 deletion(-)
24 create mode 100644 arch/arm/boot/dts/overlays/rpi-7inch-overlay.dts
26 diff --git a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
27 index ef0beea3a3a3..83b95b9a6ec3 100644
28 --- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
29 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
31 pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
39 diff --git a/arch/arm/boot/dts/bcm2708-rpi-b.dts b/arch/arm/boot/dts/bcm2708-rpi-b.dts
40 index dea70fae90e6..ea5de651d59d 100644
41 --- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
42 +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
44 act_led_trigger = <&act_led>,"linux,default-trigger";
53 diff --git a/arch/arm/boot/dts/bcm2708-rpi.dtsi b/arch/arm/boot/dts/bcm2708-rpi.dtsi
54 index b13632932192..2d8421f6681c 100644
55 --- a/arch/arm/boot/dts/bcm2708-rpi.dtsi
56 +++ b/arch/arm/boot/dts/bcm2708-rpi.dtsi
58 power-domains = <&power RPI_POWER_DOMAIN_USB>;
62 + power-domains = <&power RPI_POWER_DOMAIN_V3D>;
66 + power-domains = <&power RPI_POWER_DOMAIN_VEC>;
71 + power-domains = <&power RPI_POWER_DOMAIN_DSI0>;
76 + power-domains = <&power RPI_POWER_DOMAIN_DSI1>;
83 firmware = <&firmware>;
85 diff --git a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
86 index 34659505055a..c23f79395791 100644
87 --- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
88 +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
90 pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
98 diff --git a/arch/arm/boot/dts/bcm270x.dtsi b/arch/arm/boot/dts/bcm270x.dtsi
99 index f086ff0deec5..0b1ef47b18b0 100644
100 --- a/arch/arm/boot/dts/bcm270x.dtsi
101 +++ b/arch/arm/boot/dts/bcm270x.dtsi
106 + dsi1: dsi@7e700000 {
107 + compatible = "brcm,bcm2835-dsi1";
108 + reg = <0x7e700000 0x8c>;
109 + interrupts = <2 12>;
110 + #address-cells = <1>;
112 + #clock-cells = <1>;
114 + clocks = <&clocks BCM2835_PLLD_DSI1>,
115 + <&clocks BCM2835_CLOCK_DSI1E>,
116 + <&clocks BCM2835_CLOCK_DSI1P>;
117 + clock-names = "phy", "escape", "pixel";
119 + clock-output-names = "dsi1_byte",
123 + status = "disabled";
126 firmwarekms: firmwarekms@7e600000 {
127 compatible = "raspberrypi,rpi-firmware-kms";
128 /* SMI interrupt reg */
134 + /* We have to use i2c-gpio because the
135 + * firmware is also polling another device
136 + * using the only hardware I2C bus that could
137 + * connect to these pins.
139 + compatible = "i2c-gpio";
140 + #address-cells = <1>;
142 + status = "disabled";
143 + gpios = <&gpio 28 0
149 compatible = "brcm,bcm2835-smi";
150 reg = <0x7e600000 0x100>;
157 + power-domains = <&power RPI_POWER_DOMAIN_DSI1>;
159 diff --git a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
160 index 37aed344cbbf..6ec9b28999f3 100644
161 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
162 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
164 pwr_led_trigger = <&pwr_led>,"linux,default-trigger";
169 + gpios = <&gpio 44 0
173 diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
174 index a462de2ce37e..346efbd4a95f 100644
175 --- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
176 +++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
178 pinctrl-0 = <&uart0_gpio14>;
183 + gpios = <&gpio 28 0
186 diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
187 index 264c84e94329..8b9ebf3670c2 100644
188 --- a/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
189 +++ b/arch/arm/boot/dts/bcm2835-rpi-b-rev2.dts
191 pinctrl-0 = <&uart0_gpio14>;
199 diff --git a/arch/arm/boot/dts/bcm2835-rpi-b.dts b/arch/arm/boot/dts/bcm2835-rpi-b.dts
200 index 03e3a7a7dc5e..4020e79fc989 100644
201 --- a/arch/arm/boot/dts/bcm2835-rpi-b.dts
202 +++ b/arch/arm/boot/dts/bcm2835-rpi-b.dts
204 pinctrl-0 = <&uart0_gpio14>;
209 + gpios = <&gpio 28 0
212 diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi
213 index 356d4e6a17e5..0599f0a27e5f 100644
214 --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
215 +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
216 @@ -101,10 +101,12 @@
219 power-domains = <&power RPI_POWER_DOMAIN_DSI0>;
224 power-domains = <&power RPI_POWER_DOMAIN_DSI1>;
229 diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
230 index 59e70f4a19e5..6c4c9c8d8ed0 100644
231 --- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
232 +++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
234 pinctrl-0 = <&uart0_gpio14>;
239 + gpios = <&gpio 28 0
242 diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
243 index 8703d006a206..c99f70cefa61 100644
244 --- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
245 +++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
252 + gpios = <&gpio 44 0
255 diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
256 index 22eca6fad427..3ee99963f827 100644
257 --- a/arch/arm/boot/dts/bcm283x.dtsi
258 +++ b/arch/arm/boot/dts/bcm283x.dtsi
260 clock-output-names = "dsi1_byte",
269 compatible = "brcm,bcm2835-vc4";
273 + /* We have to use i2c-gpio because the
274 + * firmware is also polling another device
275 + * using the only hardware I2C bus that could
276 + * connect to these pins.
278 + compatible = "i2c-gpio";
279 + #address-cells = <1>;
281 + status = "disabled";
282 + gpios = <&gpio 28 0
289 diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile
290 index e0bdd84d21c5..f983d0180b8b 100644
291 --- a/arch/arm/boot/dts/overlays/Makefile
292 +++ b/arch/arm/boot/dts/overlays/Makefile
293 @@ -110,6 +110,7 @@ dtbo-$(CONFIG_ARCH_BCM2835) += \
294 rpi-cirrus-wm5102.dtbo \
301 diff --git a/arch/arm/boot/dts/overlays/rpi-7inch-overlay.dts b/arch/arm/boot/dts/overlays/rpi-7inch-overlay.dts
303 index 000000000000..3bb882d79086
305 +++ b/arch/arm/boot/dts/overlays/rpi-7inch-overlay.dts
308 + * Device Tree overlay for RaspberryPi 7" Touchscreen panel
316 + compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
321 + #address-cells = <1>; size-cells = <0>;
324 + dsi_out_port: endpoint {
325 + remote-endpoint = <&panel_dsi_port>;
332 + target = <&i2c_dsi>;
334 + #address-cells = <1>;
338 + compatible = "raspberrypi,7inch-touchscreen-panel";
341 + panel_dsi_port: endpoint {
342 + remote-endpoint = <&dsi_out_port>;