1 From 77d7427bed21c92d1c10e0cc9beabb5ce9bb6c0b Mon Sep 17 00:00:00 2001
2 From: Dave Stevenson <dave.stevenson@raspberrypi.com>
3 Date: Thu, 9 Apr 2020 12:46:13 +0100
4 Subject: [PATCH] dt: Implement an I2C pinctrl mux for BSC0.
6 BSC0 serves either the HAT EEPROM pins on the 40pin connector,
7 or the display and camera on a board specific pairing of either
10 Use I2C_MUX_PINCTRL to allow exposing both pairs of pins as I2C
13 Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
15 arch/arm/boot/dts/bcm2708-rpi-b-plus.dts | 9 ++++---
16 arch/arm/boot/dts/bcm2708-rpi-b.dts | 9 ++++---
17 arch/arm/boot/dts/bcm2708-rpi-cm.dts | 9 ++++---
18 arch/arm/boot/dts/bcm2708-rpi-zero-w.dts | 9 ++++---
19 arch/arm/boot/dts/bcm2708-rpi-zero.dts | 9 ++++---
20 arch/arm/boot/dts/bcm2709-rpi-2-b.dts | 9 ++++---
21 arch/arm/boot/dts/bcm270x-rpi.dtsi | 7 ++---
22 arch/arm/boot/dts/bcm2710-rpi-2-b.dts | 9 ++++---
23 arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts | 9 ++++---
24 arch/arm/boot/dts/bcm2710-rpi-3-b.dts | 9 ++++---
25 arch/arm/boot/dts/bcm2710-rpi-cm3.dts | 10 ++++---
26 arch/arm/boot/dts/bcm2711-rpi-4-b.dts | 5 ++--
27 arch/arm/boot/dts/bcm2711.dtsi | 2 +-
28 .../boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi | 4 +++
29 .../boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi | 4 +++
30 arch/arm/boot/dts/bcm283x.dtsi | 26 ++++++++++++++++++-
31 16 files changed, 100 insertions(+), 39 deletions(-)
32 create mode 100644 arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi
33 create mode 100644 arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
35 --- a/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
36 +++ b/arch/arm/boot/dts/bcm2708-rpi-b-plus.dts
38 #include "bcm2708-rpi.dtsi"
39 #include "bcm283x-rpi-smsc9514.dtsi"
40 #include "bcm283x-rpi-csi1-2lane.dtsi"
41 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
44 compatible = "raspberrypi,model-b-plus", "brcm,bcm2835";
50 - pinctrl-names = "default";
51 - pinctrl-0 = <&i2c0_pins>;
53 clock-frequency = <100000>;
57 + pinctrl-0 = <&i2c0_pins>;
61 pinctrl-names = "default";
62 pinctrl-0 = <&i2c1_pins>;
63 --- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
64 +++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
66 #include "bcm2708-rpi.dtsi"
67 #include "bcm283x-rpi-smsc9512.dtsi"
68 #include "bcm283x-rpi-csi1-2lane.dtsi"
69 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
72 compatible = "raspberrypi,model-b", "brcm,bcm2835";
78 - pinctrl-names = "default";
79 - pinctrl-0 = <&i2c0_pins>;
81 clock-frequency = <100000>;
85 + pinctrl-0 = <&i2c0_pins>;
89 pinctrl-names = "default";
90 pinctrl-0 = <&i2c1_pins>;
91 --- a/arch/arm/boot/dts/bcm2708-rpi-cm.dts
92 +++ b/arch/arm/boot/dts/bcm2708-rpi-cm.dts
94 #include "bcm2708-rpi-cm.dtsi"
95 #include "bcm283x-rpi-csi0-2lane.dtsi"
96 #include "bcm283x-rpi-csi1-4lane.dtsi"
97 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
100 compatible = "raspberrypi,compute-module", "brcm,bcm2835";
106 - pinctrl-names = "default";
107 - pinctrl-0 = <&i2c0_pins>;
109 clock-frequency = <100000>;
113 + pinctrl-0 = <&i2c0_pins>;
117 pinctrl-names = "default";
118 pinctrl-0 = <&i2c1_pins>;
119 --- a/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
120 +++ b/arch/arm/boot/dts/bcm2708-rpi-zero-w.dts
122 #include "bcm2708.dtsi"
123 #include "bcm2708-rpi.dtsi"
124 #include "bcm283x-rpi-csi1-2lane.dtsi"
125 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
128 compatible = "raspberrypi,model-zero-w", "brcm,bcm2835";
129 @@ -116,12 +117,14 @@
134 - pinctrl-names = "default";
135 - pinctrl-0 = <&i2c0_pins>;
137 clock-frequency = <100000>;
141 + pinctrl-0 = <&i2c0_pins>;
145 pinctrl-names = "default";
146 pinctrl-0 = <&i2c1_pins>;
147 --- a/arch/arm/boot/dts/bcm2708-rpi-zero.dts
148 +++ b/arch/arm/boot/dts/bcm2708-rpi-zero.dts
150 #include "bcm2708.dtsi"
151 #include "bcm2708-rpi.dtsi"
152 #include "bcm283x-rpi-csi1-2lane.dtsi"
153 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
156 compatible = "raspberrypi,model-zero", "brcm,bcm2835";
162 - pinctrl-names = "default";
163 - pinctrl-0 = <&i2c0_pins>;
165 clock-frequency = <100000>;
169 + pinctrl-0 = <&i2c0_pins>;
173 pinctrl-names = "default";
174 pinctrl-0 = <&i2c1_pins>;
175 --- a/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
176 +++ b/arch/arm/boot/dts/bcm2709-rpi-2-b.dts
178 #include "bcm2709-rpi.dtsi"
179 #include "bcm283x-rpi-smsc9514.dtsi"
180 #include "bcm283x-rpi-csi1-2lane.dtsi"
181 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
184 compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
190 - pinctrl-names = "default";
191 - pinctrl-0 = <&i2c0_pins>;
193 clock-frequency = <100000>;
197 + pinctrl-0 = <&i2c0_pins>;
201 pinctrl-names = "default";
202 pinctrl-0 = <&i2c1_pins>;
203 --- a/arch/arm/boot/dts/bcm270x-rpi.dtsi
204 +++ b/arch/arm/boot/dts/bcm270x-rpi.dtsi
209 + i2c10 = &i2c_csi_dsi;
214 uart1 = <&uart1>,"status";
215 i2s = <&i2s>,"status";
216 spi = <&spi0>,"status";
217 - i2c0 = <&i2c0>,"status";
218 + i2c0 = <&i2c0if>,"status",<&i2c0mux>,"status";
219 i2c1 = <&i2c1>,"status";
220 - i2c0_baudrate = <&i2c0>,"clock-frequency:0";
221 + i2c0_baudrate = <&i2c0if>,"clock-frequency:0";
222 i2c1_baudrate = <&i2c1>,"clock-frequency:0";
224 audio = <&audio>,"status";
234 --- a/arch/arm/boot/dts/bcm2710-rpi-2-b.dts
235 +++ b/arch/arm/boot/dts/bcm2710-rpi-2-b.dts
237 #include "bcm2709-rpi.dtsi"
238 #include "bcm283x-rpi-smsc9514.dtsi"
239 #include "bcm283x-rpi-csi1-2lane.dtsi"
240 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
243 compatible = "raspberrypi,2-model-b-rev2", "brcm,bcm2837";
249 - pinctrl-names = "default";
250 - pinctrl-0 = <&i2c0_pins>;
252 clock-frequency = <100000>;
256 + pinctrl-0 = <&i2c0_pins>;
260 pinctrl-names = "default";
261 pinctrl-0 = <&i2c1_pins>;
262 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
263 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b-plus.dts
265 #include "bcm2709-rpi.dtsi"
266 #include "bcm283x-rpi-lan7515.dtsi"
267 #include "bcm283x-rpi-csi1-2lane.dtsi"
268 +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
271 compatible = "raspberrypi,3-model-b-plus", "brcm,bcm2837";
272 @@ -126,12 +127,14 @@
277 - pinctrl-names = "default";
278 - pinctrl-0 = <&i2c0_pins>;
280 clock-frequency = <100000>;
284 + pinctrl-0 = <&i2c0_pins>;
288 pinctrl-names = "default";
289 pinctrl-0 = <&i2c1_pins>;
290 --- a/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
291 +++ b/arch/arm/boot/dts/bcm2710-rpi-3-b.dts
293 #include "bcm2709-rpi.dtsi"
294 #include "bcm283x-rpi-smsc9514.dtsi"
295 #include "bcm283x-rpi-csi1-2lane.dtsi"
296 +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
299 compatible = "raspberrypi,3-model-b", "brcm,bcm2837";
300 @@ -137,12 +138,14 @@
305 - pinctrl-names = "default";
306 - pinctrl-0 = <&i2c0_pins>;
308 clock-frequency = <100000>;
312 + pinctrl-0 = <&i2c0_pins>;
316 pinctrl-names = "default";
317 pinctrl-0 = <&i2c1_pins>;
318 --- a/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
319 +++ b/arch/arm/boot/dts/bcm2710-rpi-cm3.dts
321 #include "bcm2709-rpi.dtsi"
322 #include "bcm283x-rpi-csi0-2lane.dtsi"
323 #include "bcm283x-rpi-csi1-4lane.dtsi"
325 +#include "bcm283x-rpi-i2c0mux_0_28.dtsi"
327 compatible = "raspberrypi,3-compute-module", "brcm,bcm2837";
328 model = "Raspberry Pi Compute Module 3";
334 - pinctrl-names = "default";
335 - pinctrl-0 = <&i2c0_pins>;
337 clock-frequency = <100000>;
341 + pinctrl-0 = <&i2c0_pins>;
345 pinctrl-names = "default";
346 pinctrl-0 = <&i2c1_pins>;
347 --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
348 +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
351 #include "bcm2711-rpi.dtsi"
352 #include "bcm283x-rpi-csi1-2lane.dtsi"
353 +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
355 /delete-node/ &emmc2;
362 - pinctrl-names = "default";
363 - pinctrl-0 = <&i2c0_pins>;
365 clock-frequency = <100000>;
368 --- a/arch/arm/boot/dts/bcm2711.dtsi
369 +++ b/arch/arm/boot/dts/bcm2711.dtsi
371 alloc-ranges = <0x0 0x00000000 0x40000000>;
376 compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
377 interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
380 +++ b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_28.dtsi
383 + pinctrl-0 = <&i2c0_gpio0>;
384 + pinctrl-1 = <&i2c0_gpio28>;
387 +++ b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
390 + pinctrl-0 = <&i2c0_gpio0>;
391 + pinctrl-1 = <&i2c0_gpio44>;
393 --- a/arch/arm/boot/dts/bcm283x.dtsi
394 +++ b/arch/arm/boot/dts/bcm283x.dtsi
399 - i2c0: i2c@7e205000 {
400 + i2c0if: i2c@7e205000 {
401 compatible = "brcm,bcm2835-i2c";
402 reg = <0x7e205000 0x200>;
409 + compatible = "i2c-mux-pinctrl";
410 + #address-cells = <1>;
413 + i2c-parent = <&i2c0if>;
415 + pinctrl-names = "i2c0", "i2c_csi_dsi";
417 + status = "disabled";
421 + #address-cells = <1>;
425 + i2c_csi_dsi: i2c@1 {
427 + #address-cells = <1>;
433 compatible = "brcm,bcm2835-dpi";
434 reg = <0x7e208000 0x8c>;