arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi | 13 +++++++------ arch/arm64/boot/dts/ti/k3-j722s-main.dtsi | 13 +++++++++++++ arch/arm64/boot/dts/ti/k3-j722s.dtsi | 3 ++- 3 files changed, 22 insertions(+), 7 deletions(-)
Add missing device tree node for main_i2c4, and the corresponding ranges
in cbass_main. Interrupt for this i2c controller is routed through the
Main GPIOMUX Router.
Base address, Interrupt IDs are taken from J722S TRM [0].
Device, Clock IDs are taken from TISCI docs [1].
Additionally, the I2C4 is the only interrupt source to the GPIOMUX INTR
router that generates level interrupts, while all other sources generate
edge interrupts. Due to this, the router needs to handle interrupt-type
on a per-line basis. Modify the router node and its consumers to
specify the interrupt type corresponding to each interrupt line.
[0]: https://www.ti.com/lit/zip/sprujb3
[1]:
https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/index.html#j722s
Signed-off-by: Jared McArthur <j-mcarthur@ti.com>
Signed-off-by: Aniket Limaye <a-limaye@ti.com>
---
Note:
Support for per-line interrupt-types was added through a recent series
[2], which was already merged in.
Testing:
- Enable I2C4 (additional DT patch) on j722s-evm and run i2cdetect [3].
- Add testcode to ignore the NACK interrupt, which results in an irq
storm -> showing that GIC is actually receiving level interrupt from
the INTR [4].
[2]: https://lore.kernel.org/all/20260123-ul-driver-i2c-j722s-v4-0-b08625c487d5@ti.com/
[3]: https://gist.github.com/aniket-l/844925345316adf9f65f04c8cdedd62d#file-j722s-evm-main-i2c4-working-logs-txt
[4]: https://gist.github.com/aniket-l/844925345316adf9f65f04c8cdedd62d#file-j722s-evm-main-i2c4-irqstorm-logs-txt
---
arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi | 13 +++++++------
arch/arm64/boot/dts/ti/k3-j722s-main.dtsi | 13 +++++++++++++
arch/arm64/boot/dts/ti/k3-j722s.dtsi | 3 ++-
3 files changed, 22 insertions(+), 7 deletions(-)
diff --git a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
index 0e1af2a69ca2..f130c7cb998d 100644
--- a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
@@ -543,10 +543,9 @@ main_spi2: spi@20120000 {
main_gpio_intr: interrupt-controller@a00000 {
compatible = "ti,sci-intr";
reg = <0x00 0x00a00000 0x00 0x800>;
- ti,intr-trigger-type = <1>;
interrupt-controller;
interrupt-parent = <&gic500>;
- #interrupt-cells = <1>;
+ #interrupt-cells = <2>;
ti,sci = <&dmsc>;
ti,sci-dev-id = <3>;
ti,interrupt-ranges = <0 32 16>;
@@ -558,8 +557,9 @@ main_gpio0: gpio@600000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-parent = <&main_gpio_intr>;
- interrupts = <190>, <191>, <192>,
- <193>, <194>, <195>;
+ interrupts = <190 IRQ_TYPE_EDGE_RISING>, <191 IRQ_TYPE_EDGE_RISING>,
+ <192 IRQ_TYPE_EDGE_RISING>, <193 IRQ_TYPE_EDGE_RISING>,
+ <194 IRQ_TYPE_EDGE_RISING>, <195 IRQ_TYPE_EDGE_RISING>;
interrupt-controller;
#interrupt-cells = <2>;
ti,davinci-gpio-unbanked = <0>;
@@ -574,8 +574,9 @@ main_gpio1: gpio@601000 {
gpio-controller;
#gpio-cells = <2>;
interrupt-parent = <&main_gpio_intr>;
- interrupts = <180>, <181>, <182>,
- <183>, <184>, <185>;
+ interrupts = <180 IRQ_TYPE_EDGE_RISING>, <181 IRQ_TYPE_EDGE_RISING>,
+ <182 IRQ_TYPE_EDGE_RISING>, <183 IRQ_TYPE_EDGE_RISING>,
+ <184 IRQ_TYPE_EDGE_RISING>, <185 IRQ_TYPE_EDGE_RISING>;
interrupt-controller;
#interrupt-cells = <2>;
ti,davinci-gpio-unbanked = <0>;
diff --git a/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi b/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi
index 9ee5d0c8ffd1..ddf20e44f0ea 100644
--- a/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi
@@ -154,6 +154,19 @@ usb1: usb@31200000 {
};
};
+ main_i2c4: i2c@fe80000 {
+ compatible = "ti,am64-i2c", "ti,omap4-i2c";
+ reg = <0x00 0x0fe80000 0x00 0x100>;
+ interrupt-parent = <&main_gpio_intr>;
+ interrupts = <178 IRQ_TYPE_LEVEL_HIGH>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ power-domains = <&k3_pds 257 TI_SCI_PD_EXCLUSIVE>;
+ clocks = <&k3_clks 257 2>;
+ clock-names = "fck";
+ status = "disabled";
+ };
+
ti_csi2rx1: ticsi2rx@30122000 {
compatible = "ti,j721e-csi2rx-shim";
reg = <0x00 0x30122000 0x00 0x1000>;
diff --git a/arch/arm64/boot/dts/ti/k3-j722s.dtsi b/arch/arm64/boot/dts/ti/k3-j722s.dtsi
index 059c65ece183..1b36dcf37925 100644
--- a/arch/arm64/boot/dts/ti/k3-j722s.dtsi
+++ b/arch/arm64/boot/dts/ti/k3-j722s.dtsi
@@ -160,7 +160,8 @@ cbass_main: bus@f0000 {
<0x00 0x0fd80000 0x00 0x0fd80000 0x00 0x00080000>, /* GPU */
<0x00 0x0fd20000 0x00 0x0fd20000 0x00 0x00000100>, /* JPEGENC0_CORE */
<0x00 0x0fd20200 0x00 0x0fd20200 0x00 0x00000200>, /* JPEGENC0_CORE_MMU */
- <0x00 0x20000000 0x00 0x20000000 0x00 0x0a008000>, /* Third peripheral window */
+ <0x00 0x0fe00000 0x00 0x0fe00000 0x00 0x000f0400>, /* Third peripheral window */
+ <0x00 0x20000000 0x00 0x20000000 0x00 0x0a008000>, /* Fourth peripheral window */
<0x00 0x30040000 0x00 0x30040000 0x00 0x00080000>, /* PRUSS-M */
<0x00 0x301c0000 0x00 0x301c0000 0x00 0x00001000>, /* DPHY-TX */
<0x00 0x30101000 0x00 0x30101000 0x00 0x00080100>, /* CSI window */
---
base-commit: d517cb8cea012f43b069617fc8179b45404f8018
change-id: 20260303-j722s-main-i2c4-dt-8a1344d04ffe
Best regards,
--
Aniket Limaye <a-limaye@ti.com>
Hi Aniket Limaye,
On Wed, 04 Mar 2026 14:41:05 +0530, Aniket Limaye wrote:
> arm64: dts: ti: k3-j722s: Add main_i2c4 device node
I have applied the following to branch ti-k3-dts-next on [1].
Thank you!
[1/1] arm64: dts: ti: k3-j722s: Add main_i2c4 device node
commit: 7d793eea2dc171f90ef419a7a3755b2e21403d1e
All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent up the chain during
the next merge window (or sooner if it is a relevant bug fix), however if
problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying
to this mail.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/ti/linux.git
--
Vignesh
On Wed, 2026-03-04 at 14:41 +0530, Aniket Limaye wrote:
> Add missing device tree node for main_i2c4, and the corresponding ranges
> in cbass_main. Interrupt for this i2c controller is routed through the
> Main GPIOMUX Router.
> Base address, Interrupt IDs are taken from J722S TRM [0].
> Device, Clock IDs are taken from TISCI docs [1].
>
> Additionally, the I2C4 is the only interrupt source to the GPIOMUX INTR
> router that generates level interrupts, while all other sources generate
> edge interrupts. Due to this, the router needs to handle interrupt-type
> on a per-line basis. Modify the router node and its consumers to
> specify the interrupt type corresponding to each interrupt line.
>
> [0]: https://www.ti.com/lit/zip/sprujb3
> [1]:
> https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/index.html#j722s
>
> Signed-off-by: Jared McArthur <j-mcarthur@ti.com>
> Signed-off-by: Aniket Limaye <a-limaye@ti.com>
> ---
> Note:
> Support for per-line interrupt-types was added through a recent series
> [2], which was already merged in.
>
> Testing:
> - Enable I2C4 (additional DT patch) on j722s-evm and run i2cdetect [3].
> - Add testcode to ignore the NACK interrupt, which results in an irq
> storm -> showing that GIC is actually receiving level interrupt from
> the INTR [4].
I ran a basic test on our MBa67xx board based on current linux-next with this
patch applied. Probe and configuration of a RPi DSI camera module (IMX219)
connected to I2C4 is working as expected.
Tested-by: Nora Schiffer <nora.schiffer@ew.tq-group.com>
>
> [2]: https://lore.kernel.org/all/20260123-ul-driver-i2c-j722s-v4-0-b08625c487d5@ti.com/
> [3]: https://gist.github.com/aniket-l/844925345316adf9f65f04c8cdedd62d#file-j722s-evm-main-i2c4-working-logs-txt
> [4]: https://gist.github.com/aniket-l/844925345316adf9f65f04c8cdedd62d#file-j722s-evm-main-i2c4-irqstorm-logs-txt
> ---
> arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi | 13 +++++++------
> arch/arm64/boot/dts/ti/k3-j722s-main.dtsi | 13 +++++++++++++
> arch/arm64/boot/dts/ti/k3-j722s.dtsi | 3 ++-
> 3 files changed, 22 insertions(+), 7 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
> index 0e1af2a69ca2..f130c7cb998d 100644
> --- a/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-am62p-j722s-common-main.dtsi
> @@ -543,10 +543,9 @@ main_spi2: spi@20120000 {
> main_gpio_intr: interrupt-controller@a00000 {
> compatible = "ti,sci-intr";
> reg = <0x00 0x00a00000 0x00 0x800>;
> - ti,intr-trigger-type = <1>;
> interrupt-controller;
> interrupt-parent = <&gic500>;
> - #interrupt-cells = <1>;
> + #interrupt-cells = <2>;
> ti,sci = <&dmsc>;
> ti,sci-dev-id = <3>;
> ti,interrupt-ranges = <0 32 16>;
> @@ -558,8 +557,9 @@ main_gpio0: gpio@600000 {
> gpio-controller;
> #gpio-cells = <2>;
> interrupt-parent = <&main_gpio_intr>;
> - interrupts = <190>, <191>, <192>,
> - <193>, <194>, <195>;
> + interrupts = <190 IRQ_TYPE_EDGE_RISING>, <191 IRQ_TYPE_EDGE_RISING>,
> + <192 IRQ_TYPE_EDGE_RISING>, <193 IRQ_TYPE_EDGE_RISING>,
> + <194 IRQ_TYPE_EDGE_RISING>, <195 IRQ_TYPE_EDGE_RISING>;
> interrupt-controller;
> #interrupt-cells = <2>;
> ti,davinci-gpio-unbanked = <0>;
> @@ -574,8 +574,9 @@ main_gpio1: gpio@601000 {
> gpio-controller;
> #gpio-cells = <2>;
> interrupt-parent = <&main_gpio_intr>;
> - interrupts = <180>, <181>, <182>,
> - <183>, <184>, <185>;
> + interrupts = <180 IRQ_TYPE_EDGE_RISING>, <181 IRQ_TYPE_EDGE_RISING>,
> + <182 IRQ_TYPE_EDGE_RISING>, <183 IRQ_TYPE_EDGE_RISING>,
> + <184 IRQ_TYPE_EDGE_RISING>, <185 IRQ_TYPE_EDGE_RISING>;
> interrupt-controller;
> #interrupt-cells = <2>;
> ti,davinci-gpio-unbanked = <0>;
> diff --git a/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi b/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi
> index 9ee5d0c8ffd1..ddf20e44f0ea 100644
> --- a/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-j722s-main.dtsi
> @@ -154,6 +154,19 @@ usb1: usb@31200000 {
> };
> };
>
> + main_i2c4: i2c@fe80000 {
> + compatible = "ti,am64-i2c", "ti,omap4-i2c";
> + reg = <0x00 0x0fe80000 0x00 0x100>;
> + interrupt-parent = <&main_gpio_intr>;
> + interrupts = <178 IRQ_TYPE_LEVEL_HIGH>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> + power-domains = <&k3_pds 257 TI_SCI_PD_EXCLUSIVE>;
> + clocks = <&k3_clks 257 2>;
> + clock-names = "fck";
> + status = "disabled";
> + };
> +
> ti_csi2rx1: ticsi2rx@30122000 {
> compatible = "ti,j721e-csi2rx-shim";
> reg = <0x00 0x30122000 0x00 0x1000>;
> diff --git a/arch/arm64/boot/dts/ti/k3-j722s.dtsi b/arch/arm64/boot/dts/ti/k3-j722s.dtsi
> index 059c65ece183..1b36dcf37925 100644
> --- a/arch/arm64/boot/dts/ti/k3-j722s.dtsi
> +++ b/arch/arm64/boot/dts/ti/k3-j722s.dtsi
> @@ -160,7 +160,8 @@ cbass_main: bus@f0000 {
> <0x00 0x0fd80000 0x00 0x0fd80000 0x00 0x00080000>, /* GPU */
> <0x00 0x0fd20000 0x00 0x0fd20000 0x00 0x00000100>, /* JPEGENC0_CORE */
> <0x00 0x0fd20200 0x00 0x0fd20200 0x00 0x00000200>, /* JPEGENC0_CORE_MMU */
> - <0x00 0x20000000 0x00 0x20000000 0x00 0x0a008000>, /* Third peripheral window */
> + <0x00 0x0fe00000 0x00 0x0fe00000 0x00 0x000f0400>, /* Third peripheral window */
> + <0x00 0x20000000 0x00 0x20000000 0x00 0x0a008000>, /* Fourth peripheral window */
> <0x00 0x30040000 0x00 0x30040000 0x00 0x00080000>, /* PRUSS-M */
> <0x00 0x301c0000 0x00 0x301c0000 0x00 0x00001000>, /* DPHY-TX */
> <0x00 0x30101000 0x00 0x30101000 0x00 0x00080100>, /* CSI window */
>
> ---
> base-commit: d517cb8cea012f43b069617fc8179b45404f8018
> change-id: 20260303-j722s-main-i2c4-dt-8a1344d04ffe
>
> Best regards,
--
TQ-Systems GmbH | Mühlstraße 2, Gut Delling | 82229 Seefeld, Germany
Amtsgericht München, HRB 105018
Geschäftsführer: Detlef Schneider, Rüdiger Stahl, Stefan Schneider
https://www.tq-group.com/
© 2016 - 2026 Red Hat, Inc.