diff --git a/arch/arm/boot/dts/overlays/README b/arch/arm/boot/dts/overlays/README
index 1244006e21418..08c42f5e46bf1 100644
--- a/arch/arm/boot/dts/overlays/README
+++ b/arch/arm/boot/dts/overlays/README
@@ -555,6 +555,7 @@ Params: addr I2C bus address of device. Set based on how the
overlay - BCM2711 only)
i2c6 Choose the I2C6 bus (configure with the i2c6
overlay - BCM2711 only)
+ i2c-path Override I2C path to allow for i2c-gpio buses
Channel parameters can be set for each enabled channel.
A maximum of 4 channels can be enabled (letters a thru d).
@@ -1238,6 +1239,7 @@ Params: sizex Touchscreen size x (default 800)
addr Sets the address for the touch controller. Note
that the device must be configured to use the
specified address.
+ i2c-path Override I2C path to allow for i2c-gpio buses
Name: enc28j60
@@ -1439,6 +1441,7 @@ Info: Enables I2C connected Goodix gt9271 multiple touch controller using
Load: dtoverlay=goodix,=
Params: interrupt GPIO used for interrupt (default 4)
reset GPIO used for reset (default 17)
+ i2c-path Override I2C path to allow for i2c-gpio buses
Name: googlevoicehat-soundcard
@@ -1730,6 +1733,7 @@ Params: addr I2C address of PCF8574
display_height Height of the display in characters (default 2)
display_width Width of the display in characters (default 16)
+ i2c-path Override I2C path to allow for i2c-gpio buses
Name: hd44780-lcd
@@ -2095,6 +2099,8 @@ Params: addr Sets the address for the fan controller. Note
i2c6 Choose the I2C6 bus (configure with the i2c6
overlay - BCM2711 only)
+ i2c-path Override I2C path to allow for i2c-gpio buses
+
minpwm PWM setting for the fan when the SoC is below
mintemp (range 0-255. default 0)
maxpwm PWM setting for the fan when the SoC is above
@@ -2165,6 +2171,8 @@ Params: pca9542 Select the NXP PCA9542 device
i2c6 Choose the I2C6 bus (configure with the i2c6
overlay - BCM2711 only)
+ i2c-path Override I2C path to allow for i2c-gpio buses
+
disconnect_on_idle Force the mux to disconnect all child buses
after every transaction.
@@ -2172,7 +2180,7 @@ Params: pca9542 Select the NXP PCA9542 device
[ The i2c-mux-pca9548a overlay has been deleted. See i2c-mux. ]
-Name: i2c-pwm-pca9685a
+Name: i2c-`9685a
Info: Adds support for an NXP PCA9685A I2C PWM controller on i2c_arm
Load: dtoverlay=i2c-pwm-pca9685a,=
Params: addr I2C address of PCA9685A (default 0x40)
@@ -2186,6 +2194,7 @@ Params: addr I2C address of PCA9685A (default 0x40)
overlay - BCM2711 only)
i2c6 Choose the I2C6 bus (configure with the i2c6
overlay - BCM2711 only)
+ i2c-path Override I2C path to allow for i2c-gpio buses
Name: i2c-rtc
@@ -2255,6 +2264,8 @@ Params: abx80x Select one of the ABx80x family:
i2c6 Choose the I2C6 bus (configure with the i2c6
overlay - BCM2711 only)
+ i2c-path Override I2C path to allow for i2c-gpio buses
+
addr Sets the address for the RTC. Note that the
device must be configured to use the specified
address.
@@ -2519,6 +2530,7 @@ Params: addr Set the address for the ADT7410, BH1750, BME280,
i2c6 Choose the I2C6 bus (configure with the i2c6
overlay - BCM2711 only)
+ i2c-path Override I2C path to allow for i2c-gpio buses
Name: i2c0
Info: Change i2c0 pin usage. Not all pin combinations are usable on all
@@ -2661,6 +2673,7 @@ Params: interrupt GPIO used for interrupt (default 4)
touchscreen (in pixels)
sizey Touchscreen size y, vertical resolution of
touchscreen (in pixels)
+ i2c-path Override I2C path to allow for i2c-gpio buses
Name: imx219
@@ -3138,6 +3151,7 @@ Params: gpiopin Gpio pin connected to the INTA output of the
overlay - BCM2711 only)
i2c6 Choose the I2C6 bus (configure with the i2c6
overlay - BCM2711 only)
+ i2c-path Override I2C path to allow for i2c-gpio buses
Name: mcp23s17
@@ -3587,6 +3601,17 @@ Params: addr I2C address of expander. Default 0x20.
cat9554 Select the Onnn CAT9554 (8 bit)
pca9654 Select the Onnn PCA9654 (8 bit)
xra1202 Select the Exar XRA1202 (8 bit)
+ i2c0 Choose the I2C0 bus on GPIOs 0&1
+ i2c_csi_dsi Choose the I2C0 bus on GPIOs 44&45
+ i2c3 Choose the I2C3 bus (configure with the i2c3
+ overlay - BCM2711 only)
+ i2c4 Choose the I2C3 bus (configure with the i2c3
+ overlay - BCM2711 only)
+ i2c5 Choose the I2C5 bus (configure with the i2c4
+ overlay - BCM2711 only)
+ i2c6 Choose the I2C6 bus (configure with the i2c6
+ overlay - BCM2711 only)
+ i2c-path Override I2C path to allow for i2c-gpio buses
Name: pcf857x
@@ -3598,6 +3623,17 @@ Params: addr I2C address of expander. Default
pcf8574a Select the NXP PCF8574A (8 bit)
pcf8575 Select the NXP PCF8575 (16 bit)
pca8574 Select the NXP PCA8574 (8 bit)
+ i2c0 Choose the I2C0 bus on GPIOs 0&1
+ i2c_csi_dsi Choose the I2C0 bus on GPIOs 44&45
+ i2c3 Choose the I2C3 bus (configure with the i2c3
+ overlay - BCM2711 only)
+ i2c4 Choose the I2C3 bus (configure with the i2c3
+ overlay - BCM2711 only)
+ i2c5 Choose the I2C5 bus (configure with the i2c4
+ overlay - BCM2711 only)
+ i2c6 Choose the I2C6 bus (configure with the i2c6
+ overlay - BCM2711 only)
+ i2c-path Override I2C path to allow for i2c-gpio buses
Name: pcie-32bit-dma
diff --git a/arch/arm/boot/dts/overlays/ads1115-overlay.dts b/arch/arm/boot/dts/overlays/ads1115-overlay.dts
index 64ada16de9c72..473798abb76a5 100644
--- a/arch/arm/boot/dts/overlays/ads1115-overlay.dts
+++ b/arch/arm/boot/dts/overlays/ads1115-overlay.dts
@@ -131,5 +131,7 @@
<&frag100>, "target-path=i2c5";
i2c6 = <&frag100>, "target?=0",
<&frag100>, "target-path=i2c6";
+ i2c-path = <&frag100>, "target?=0",
+ <&frag100>, "target-path";
};
};
diff --git a/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts b/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts
index 6e40c0ebb3bf9..b05b569836769 100644
--- a/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts
+++ b/arch/arm/boot/dts/overlays/edt-ft5406-overlay.dts
@@ -41,6 +41,9 @@
i2c6 = <&ts_i2c_frag>, "target?=0",
<&ts_i2c_frag>, "target-path=i2c6",
<0>,"-0-1";
+ i2c-path = <&ts_i2c_frag>, "target?=0",
+ <&ts_i2c_frag>, "target-path",
+ <0>,"-0-1";
addr = <&ft5406>,"reg:0";
};
};
diff --git a/arch/arm/boot/dts/overlays/goodix-overlay.dts b/arch/arm/boot/dts/overlays/goodix-overlay.dts
index 8571527de49a6..926f35695c737 100644
--- a/arch/arm/boot/dts/overlays/goodix-overlay.dts
+++ b/arch/arm/boot/dts/overlays/goodix-overlay.dts
@@ -16,7 +16,7 @@
};
};
- fragment@1 {
+ i2c_frag: fragment@1 {
target = <&i2c1>;
__overlay__ {
#address-cells = <1>;
@@ -42,5 +42,7 @@
<>9271>,"irq-gpios:4";
reset = <&goodix_pins>,"brcm,pins:4",
<>9271>,"reset-gpios:4";
+ i2c-path = <&i2c_frag>, "target?=0",
+ <&i2c_frag>, "target-path";
};
};
diff --git a/arch/arm/boot/dts/overlays/hd44780-i2c-lcd-overlay.dts b/arch/arm/boot/dts/overlays/hd44780-i2c-lcd-overlay.dts
index 36fcf049ffbfe..d5bfd762fe2eb 100644
--- a/arch/arm/boot/dts/overlays/hd44780-i2c-lcd-overlay.dts
+++ b/arch/arm/boot/dts/overlays/hd44780-i2c-lcd-overlay.dts
@@ -4,7 +4,7 @@
/ {
compatible = "brcm,bcm2835";
- fragment@0 {
+ i2c_frag: fragment@0 {
target = <&i2c_arm>;
__overlay__ {
status = "okay";
@@ -52,6 +52,8 @@
display_height = <&lcd_screen>,"display-height-chars:0";
display_width = <&lcd_screen>,"display-width-chars:0";
addr = <&pcf857x>,"reg:0";
+ i2c-path = <&i2c_frag>, "target?=0",
+ <&i2c_frag>, "target-path";
};
};
diff --git a/arch/arm/boot/dts/overlays/i2c-fan-overlay.dts b/arch/arm/boot/dts/overlays/i2c-fan-overlay.dts
index f2f4a2aa797a6..49b62789b55c0 100644
--- a/arch/arm/boot/dts/overlays/i2c-fan-overlay.dts
+++ b/arch/arm/boot/dts/overlays/i2c-fan-overlay.dts
@@ -93,6 +93,8 @@
<&frag100>, "target-path=i2c5";
i2c6 = <&frag100>, "target?=0",
<&frag100>, "target-path=i2c6";
+ i2c-path = <&frag100>, "target?=0",
+ <&frag100>, "target-path";
addr = <&emc2301>,"reg:0";
minpwm = <&emc2301>,"emc2305,pwm-min.0";
maxpwm = <&emc2301>,"emc2305,pwm-max.0";
diff --git a/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
index 0575b276cd269..ed8517dfddd05 100644
--- a/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
+++ b/arch/arm/boot/dts/overlays/i2c-mux-overlay.dts
@@ -175,6 +175,8 @@
<&frag100>, "target-path=i2c5";
i2c6 = <&frag100>, "target?=0",
<&frag100>, "target-path=i2c6";
+ i2c-path = <&frag100>, "target?=0",
+ <&frag100>, "target-path";
disconnect_on_idle =
<&pca9542>,"idle-state:0=", ,
<&pca9545>,"idle-state:0=", ,
diff --git a/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
index b8dfbd56d1216..06efa684b08c4 100644
--- a/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
+++ b/arch/arm/boot/dts/overlays/i2c-pwm-pca9685a-overlay.dts
@@ -57,5 +57,7 @@
<&frag100>, "target-path=i2c5";
i2c6 = <&frag100>, "target?=0",
<&frag100>, "target-path=i2c6";
+ i2c-path = <&frag100>, "target?=0",
+ <&frag100>, "target-path";
};
};
diff --git a/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
index cd31eac7e3335..ef2c33cbe45b5 100644
--- a/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
+++ b/arch/arm/boot/dts/overlays/i2c-rtc-overlay.dts
@@ -38,5 +38,7 @@
<&frag100>, "target-path=i2c5";
i2c6 = <&frag100>, "target?=0",
<&frag100>, "target-path=i2c6";
+ i2c-path = <&frag100>, "target?=0",
+ <&frag100>, "target-path";
};
};
diff --git a/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
index f8a39659d83e4..fe3169924b5f1 100755
--- a/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
+++ b/arch/arm/boot/dts/overlays/i2c-sensor-overlay.dts
@@ -38,5 +38,7 @@
<&frag100>, "target-path=i2c5";
i2c6 = <&frag100>, "target?=0",
<&frag100>, "target-path=i2c6";
+ i2c-path = <&frag100>, "target?=0",
+ <&frag100>, "target-path";
};
};
diff --git a/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
index 551aba591d263..226d490ce092f 100644
--- a/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
+++ b/arch/arm/boot/dts/overlays/ilitek251x-overlay.dts
@@ -16,7 +16,7 @@
};
};
- fragment@1 {
+ frag1: fragment@1 {
target = <&i2c1>;
__overlay__ {
#address-cells = <1>;
@@ -41,5 +41,7 @@
<&ili251x>,"interrupts:0";
sizex = <&ili251x>,"touchscreen-size-x:0";
sizey = <&ili251x>,"touchscreen-size-y:0";
+ i2c-path = <&frag1>, "target?=0",
+ <&frag1>, "target-path";
};
};
diff --git a/arch/arm/boot/dts/overlays/mcp23017-overlay.dts b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
index 0f9e89484c55e..253ac69823537 100644
--- a/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
+++ b/arch/arm/boot/dts/overlays/mcp23017-overlay.dts
@@ -98,6 +98,8 @@
<&frag100>, "target-path=i2c5";
i2c6 = <&frag100>, "target?=0",
<&frag100>, "target-path=i2c6";
+ i2c-path = <&frag100>, "target?=0",
+ <&frag100>, "target-path";
};
};
diff --git a/arch/arm/boot/dts/overlays/pca953x-overlay.dts b/arch/arm/boot/dts/overlays/pca953x-overlay.dts
index ab414e92e3669..36aeaac324fbd 100644
--- a/arch/arm/boot/dts/overlays/pca953x-overlay.dts
+++ b/arch/arm/boot/dts/overlays/pca953x-overlay.dts
@@ -5,7 +5,7 @@
/{
compatible = "brcm,bcm2835";
- fragment@0 {
+ frag0: fragment@0 {
target = <&i2c_arm>;
__overlay__ {
#address-cells = <1>;
@@ -204,6 +204,20 @@
};
};
+ fragment@100 {
+ target = <&i2c0if>;
+ __dormant__ {
+ status = "okay";
+ };
+ };
+
+ fragment@101 {
+ target = <&i2c0mux>;
+ __dormant__ {
+ status = "okay";
+ };
+ };
+
__overrides__ {
addr = <&pca>,"reg:0";
pca6416 = <0>, "+1";
@@ -236,5 +250,19 @@
cat9554 = <0>, "+28";
pca9654 = <0>, "+29";
xra1202 = <0>, "+30";
+ i2c0 = <&frag0>, "target:0=",<&i2c0>,
+ <0>,"+100+101";
+ i2c_csi_dsi = <&frag0>, "target:0=",<&i2c_csi_dsi>,
+ <0>,"+100+101";
+ i2c3 = <&frag0>, "target?=0",
+ <&frag0>, "target-path=i2c3";
+ i2c4 = <&frag0>, "target?=0",
+ <&frag0>, "target-path=i2c4";
+ i2c5 = <&frag0>, "target?=0",
+ <&frag0>, "target-path=i2c5";
+ i2c6 = <&frag0>, "target?=0",
+ <&frag0>, "target-path=i2c6";
+ i2c-path = <&frag0>, "target?=0",
+ <&frag0>, "target-path";
};
};
diff --git a/arch/arm/boot/dts/overlays/pcf857x-overlay.dts b/arch/arm/boot/dts/overlays/pcf857x-overlay.dts
index 68943e1c33201..fd2ba1e98e904 100644
--- a/arch/arm/boot/dts/overlays/pcf857x-overlay.dts
+++ b/arch/arm/boot/dts/overlays/pcf857x-overlay.dts
@@ -6,7 +6,7 @@
/ {
compatible = "brcm,bcm2835";
- fragment@0 {
+ frag0: fragment@0 {
target = <&i2c_arm>;
__overlay__ {
#address-cells = <1>;
@@ -22,11 +22,39 @@
};
};
+ fragment@100 {
+ target = <&i2c0if>;
+ __dormant__ {
+ status = "okay";
+ };
+ };
+
+ fragment@101 {
+ target = <&i2c0mux>;
+ __dormant__ {
+ status = "okay";
+ };
+ };
+
__overrides__ {
pcf8574 = <&pcf857x>,"compatible=nxp,pcf8574", <&pcf857x>,"reg:0=0x20";
pcf8574a = <&pcf857x>,"compatible=nxp,pcf8574a", <&pcf857x>,"reg:0=0x38";
pcf8575 = <&pcf857x>,"compatible=nxp,pcf8575", <&pcf857x>,"reg:0=0x20";
pca8574 = <&pcf857x>,"compatible=nxp,pca8574", <&pcf857x>,"reg:0=0x20";
addr = <&pcf857x>,"reg:0";
+ i2c0 = <&frag0>, "target:0=",<&i2c0>,
+ <0>,"+100+101";
+ i2c_csi_dsi = <&frag0>, "target:0=",<&i2c_csi_dsi>,
+ <0>,"+100+101";
+ i2c3 = <&frag0>, "target?=0",
+ <&frag0>, "target-path=i2c3";
+ i2c4 = <&frag0>, "target?=0",
+ <&frag0>, "target-path=i2c4";
+ i2c5 = <&frag0>, "target?=0",
+ <&frag0>, "target-path=i2c5";
+ i2c6 = <&frag0>, "target?=0",
+ <&frag0>, "target-path=i2c6";
+ i2c-path = <&frag0>, "target?=0",
+ <&frag0>, "target-path";
};
};