Skip to contentSkip to conversation

ARM: dts: bcm2835-rpi: Avoid conflicts on i2c0

PATCH New Stefan Wahren 4 participants 4 messages Nov 15, 2017 – Nov 17, 2017

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

PATCH 1/1 ARM: dts: bcm2835-rpi: Avoid conflicts on i2c0

The GPU firmware of the Raspberry Pi 3 uses i2c0 to communicate to the FXL6408 gpio expander. It's a bad idea to use the same interface from the ARM side. Since this interface isn't used by the other RPi boards, it's save to remove the complete node and avoid this conflict.

Fixes 9d56c22a7861 ("ARM: bcm2835: Add devicetree for the Raspberry Pi 3.")
---
 arch/arm/boot/dts/bcm2835-rpi.dtsi | 7 -------
 1 file changed, 7 deletions(-)
arch/arm/boot/dts/bcm2835-rpi.dtsi +0 -7
index e36c392..995d17b 100644
@@ -44,13 +44,6 @@
 	};
 };
 
-&i2c0 {
-	pinctrl-names = "default";
-	pinctrl-0 = <&i2c0_gpio0>;
-	status = "okay";
-	clock-frequency = <100000>;
-};
-
 &i2c1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&i2c1_gpio2>;
Signature · 1 line
2.7.4
#1 lore raw

PATCH 1/1 ARM: dts: bcm2835-rpi: Avoid conflicts on i2c0

Quoted 5 lines · Stefan Wahren

The GPU firmware of the Raspberry Pi 3 uses i2c0 to communicate to the FXL6408 gpio expander. It's a bad idea to use the same interface from the ARM side. Since this interface isn't used by the other RPi boards, it's save to remove the complete node and avoid this conflict.

It's not used by other kernel drivers currently, but should we leave it
in for the pi0/1/2 folks that might have userspace I2C stuff using it?
That's a thing people do, right? I actually don't know.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20171116/1a4866da/attachment-0001.sig>

#2 lore raw

PATCH 1/1 ARM: dts: bcm2835-rpi: Avoid conflicts on i2c0

Quoted 11 lines · Eric Anholt
Quoted 5 lines · Stefan Wahren

The GPU firmware of the Raspberry Pi 3 uses i2c0 to communicate to the FXL6408 gpio expander. It's a bad idea to use the same interface from the ARM side. Since this interface isn't used by the other RPi boards, it's save to remove the complete node and avoid this conflict.

It's not used by other kernel drivers currently, but should we leave it in for the pi0/1/2 folks that might have userspace I2C stuff using it? That's a thing people do, right? I actually don't know.

The firmware hasn't used BSC0 for the GPIO expander since the end of January. It now bit bashes it. Sorry if that information hadn't filtered through.

I've got a patch I was about to send to rpi-linux for comment which sets up the i2c-mux-pinctrl driver on BSC0 so that it can be used either on GPIOs 0&1, or the GPIOs connected to the DSI and CSI connectors (I want it to talk to the camera module, and I guess Eric won't complain for talking to the DSI display). I'll aim to sort it on Monday.

Dave

#3 lore raw

PATCH 1/1 ARM: dts: bcm2835-rpi: Avoid conflicts on i2c0

Quoted 17 lines · Dave Stevenson
Quoted 11 lines · Eric Anholt
Quoted 5 lines · Stefan Wahren

The GPU firmware of the Raspberry Pi 3 uses i2c0 to communicate to the FXL6408 gpio expander. It's a bad idea to use the same interface from the ARM side. Since this interface isn't used by the other RPi boards, it's save to remove the complete node and avoid this conflict.

It's not used by other kernel drivers currently, but should we leave it in for the pi0/1/2 folks that might have userspace I2C stuff using it? That's a thing people do, right? I actually don't know.

The firmware hasn't used BSC0 for the GPIO expander since the end of January. It now bit bashes it. Sorry if that information hadn't filtered through.

Quoted 6 lines

I've got a patch I was about to send to rpi-linux for comment which sets up the i2c-mux-pinctrl driver on BSC0 so that it can be used either on GPIOs 0&1, or the GPIOs connected to the DSI and CSI connectors (I want it to talk to the camera module, and I guess Eric won't complain for talking to the DSI display). I'll aim to sort it on Monday.

Regardless of the use (or not) of i2c0 by the VPU on Pi 3, i2c0 is the I2C interface intended for the ARM on early Pi Model Bs. The enabling or not of the I2C interfaces should be left to the model-specific DTS files.

Regards,

Phil