[PATCH 1/2] ARM: dts: bcm2*: Demux i2c0 with a pinctrl

Detlev Casanova detlev.casanova at collabora.com
Wed Feb 9 11:25:12 PST 2022


On Wednesday, February 9, 2022 12:26:15 P.M. EST Stefan Wahren wrote:
> Hi Detlev,
> 
> Am 09.02.22 um 17:25 schrieb Detlev Casanova:
> > The i2c0 device has 2 different busses controlled by a pinctrl.
> > 
> > This commit separates the device node into 2 i2c devices:
> >  * pin 0: Base i2c bus
> >  * pin 44: DSI i2c bus
> > 
> > i2c0 is renamed to i2c0if so that device-trees referencing i2c0 don't
> > break and use the i2c0 node defined in i2c0mux node.
> > 
> > i2c_csi_dsi can be used to control devices via the DSI i2c bus, used for
> > DSI displays.
> > 
> > Signed-off-by: Detlev Casanova <detlev.casanova at collabora.com>
> 
> just a note: Uwe sends a similiar approach for the RTC on CM4 [1] which
> hasn't applied yet.
> 
> [1] - https://www.spinics.net/lists/arm-kernel/msg944330.html


Oh, I missed that, I'll just hav to wait for it to be merged and base the next 
commit on that (Mainly name change)
 
> > ---
> > 
> >  arch/arm/boot/dts/bcm2711-rpi-4-b.dts         |  1 +
> >  arch/arm/boot/dts/bcm2711.dtsi                |  2 +-
> >  arch/arm/boot/dts/bcm2835-rpi.dtsi            |  9 ++++---
> >  .../boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi    |  4 +++
> >  arch/arm/boot/dts/bcm283x.dtsi                | 26 ++++++++++++++++++-
> >  5 files changed, 37 insertions(+), 5 deletions(-)
> >  create mode 100644 arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
> > 
> > diff --git a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
> > b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts index 4432412044de..5dcce58817e6
> > 100644
> > --- a/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
> > +++ b/arch/arm/boot/dts/bcm2711-rpi-4-b.dts
> > @@ -4,6 +4,7 @@
> > 
> >  #include "bcm2711-rpi.dtsi"
> >  #include "bcm283x-rpi-usb-peripheral.dtsi"
> >  #include "bcm283x-rpi-wifi-bt.dtsi"
> > 
> > +#include "bcm283x-rpi-i2c0mux_0_44.dtsi"
> > 
> >  / {
> >  
> >  	compatible = "raspberrypi,4-model-b", "brcm,bcm2711";
> > 
> > diff --git a/arch/arm/boot/dts/bcm2711.dtsi
> > b/arch/arm/boot/dts/bcm2711.dtsi index 3b60297af7f6..bf6e8251c2c7 100644
> > --- a/arch/arm/boot/dts/bcm2711.dtsi
> > +++ b/arch/arm/boot/dts/bcm2711.dtsi
> > @@ -1037,7 +1037,7 @@ &cma {
> > 
> >  	alloc-ranges = <0x0 0x00000000 0x40000000>;
> >  
> >  };
> > 
> > -&i2c0 {
> > +&i2c0if {
> > 
> >  	compatible = "brcm,bcm2711-i2c", "brcm,bcm2835-i2c";
> >  	interrupts = <GIC_SPI 117 IRQ_TYPE_LEVEL_HIGH>;
> >  
> >  };
> > 
> > diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi
> > b/arch/arm/boot/dts/bcm2835-rpi.dtsi index 87ddcad76083..1e38f9f0e80e
> > 100644
> > --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
> > +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
> > @@ -49,13 +49,16 @@ alt0: alt0 {
> > 
> >  	};
> >  
> >  };
> > 
> > -&i2c0 {
> > -	pinctrl-names = "default";
> > -	pinctrl-0 = <&i2c0_gpio0>;
> > +&i2c0if {
> > 
> >  	status = "okay";
> >  	clock-frequency = <100000>;
> >  
> >  };
> > 
> > +&i2c0mux {
> > +	pinctrl-0 = <&i2c0_gpio0>;
> > +	status = "okay";
> > +};
> > +
> > 
> >  &i2c1 {
> >  
> >  	pinctrl-names = "default";
> >  	pinctrl-0 = <&i2c1_gpio2>;
> > 
> > diff --git a/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
> > b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi new file mode 100644
> > index 000000000000..119946d878db
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/bcm283x-rpi-i2c0mux_0_44.dtsi
> > @@ -0,0 +1,4 @@
> > +&i2c0mux {
> > +	pinctrl-0 = <&i2c0_gpio0>;
> > +	pinctrl-1 = <&i2c0_gpio44>;
> > +};
> > diff --git a/arch/arm/boot/dts/bcm283x.dtsi
> > b/arch/arm/boot/dts/bcm283x.dtsi index a3e06b680947..06d04cde52b9 100644
> > --- a/arch/arm/boot/dts/bcm283x.dtsi
> > +++ b/arch/arm/boot/dts/bcm283x.dtsi
> > @@ -334,7 +334,7 @@ spi: spi at 7e204000 {
> > 
> >  			status = "disabled";
> >  		
> >  		};
> > 
> > -		i2c0: i2c at 7e205000 {
> > +		i2c0if: i2c at 7e205000 {
> > 
> >  			compatible = "brcm,bcm2835-i2c";
> >  			reg = <0x7e205000 0x200>;
> >  			interrupts = <2 21>;
> > 
> > @@ -344,6 +344,30 @@ i2c0: i2c at 7e205000 {
> > 
> >  			status = "disabled";
> >  		
> >  		};
> > 
> > +		i2c0mux: i2c0mux {
> > +			compatible = "i2c-mux-pinctrl";
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +
> > +			i2c-parent = <&i2c0if>;
> > +
> > +			pinctrl-names = "i2c0", "i2c_csi_dsi";
> > +
> > +			status = "disabled";
> > +
> > +			i2c0: i2c at 0 {
> > +				reg = <0>;
> > +				#address-cells = <1>;
> > +				#size-cells = <0>;
> > +			};
> > +
> > +			i2c_csi_dsi: i2c at 1 {
> > +				reg = <1>;
> > +				#address-cells = <1>;
> > +				#size-cells = <0>;
> > +			};
> > +		};
> > +
> > 
> >  		dpi: dpi at 7e208000 {
> >  		
> >  			compatible = "brcm,bcm2835-dpi";
> >  			reg = <0x7e208000 0x8c>;







More information about the linux-arm-kernel mailing list