linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] i2c: tegra: Add Tegra256 I2C controller support
@ 2025-07-31  9:11 Akhil R
  2025-07-31  9:11 ` [PATCH 1/2] dt-bindings: i2c: nvidia,tegra20-i2c: Add Tegra256 I2C compatible Akhil R
  2025-07-31  9:11 ` [PATCH 2/2] i2c: tegra: Add Tegra256 support Akhil R
  0 siblings, 2 replies; 6+ messages in thread
From: Akhil R @ 2025-07-31  9:11 UTC (permalink / raw)
  To: andi.shyti, conor+dt, devicetree, digetx, jonathanh, krzk+dt,
	linux-i2c, linux-kernel, linux-tegra, thierry.reding
  Cc: akhilrajeev, ldewangan, robh

This series adds support for Tegra256 I2C controllers to the Tegra I2C driver.

Tegra256 consists of 8 generic I2C controllers similar to previous Tegra generations,
but with a different parent clock frequency requiring adjusted timing parameters.

The changes add the "nvidia,tegra256-i2c" compatible string to device tree bindings
and implement the corresponding hardware feature structure with appropriate timing
parameters and clock divisors.

Akhil R (2):
  dt-bindings: i2c: nvidia,tegra20-i2c: Add Tegra256 I2C
  i2c: tegra: Add Tegra256 support

 .../bindings/i2c/nvidia,tegra20-i2c.yaml      |  6 +++++
 drivers/i2c/busses/i2c-tegra.c                | 26 +++++++++++++++++++
 2 files changed, 32 insertions(+)

-- 
2.50.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 1/2] dt-bindings: i2c: nvidia,tegra20-i2c: Add Tegra256 I2C compatible
  2025-07-31  9:11 [PATCH 0/2] i2c: tegra: Add Tegra256 I2C controller support Akhil R
@ 2025-07-31  9:11 ` Akhil R
  2025-07-31 17:37   ` Rob Herring (Arm)
  2025-08-01  9:56   ` Thierry Reding
  2025-07-31  9:11 ` [PATCH 2/2] i2c: tegra: Add Tegra256 support Akhil R
  1 sibling, 2 replies; 6+ messages in thread
From: Akhil R @ 2025-07-31  9:11 UTC (permalink / raw)
  To: andi.shyti, conor+dt, devicetree, digetx, jonathanh, krzk+dt,
	linux-i2c, linux-kernel, linux-tegra, thierry.reding
  Cc: akhilrajeev, ldewangan, robh

Add compatible for Tegra256 I2C controllers. Tegra256 consists of
8 generic Tegra I2C controllers similar to previous generations.
The parent clock frequency is different in these controllers and
hence the timing parameter values are different from the previous
ones.

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
---
 .../devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml         | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
index 6b6f6762d122..6f58eb79a7b3 100644
--- a/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
+++ b/Documentation/devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml
@@ -80,6 +80,11 @@ properties:
           support for 64 KiB transactions whereas earlier chips supported no
           more than 4 KiB per transactions.
         const: nvidia,tegra194-i2c
+      - description: |
+          Tegra256 has 8 generic I2C controllers. The controllers are similar to
+          the previous generations, but have a different parent clock and hence
+          the timing parameters are configured differently.
+        const: nvidia,tegra256-i2c
 
   reg:
     maxItems: 1
@@ -186,6 +191,7 @@ allOf:
             contains:
               enum:
                 - nvidia,tegra194-i2c
+                - nvidia,tegra256-i2c
     then:
       required:
         - resets
-- 
2.50.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/2] i2c: tegra: Add Tegra256 support
  2025-07-31  9:11 [PATCH 0/2] i2c: tegra: Add Tegra256 I2C controller support Akhil R
  2025-07-31  9:11 ` [PATCH 1/2] dt-bindings: i2c: nvidia,tegra20-i2c: Add Tegra256 I2C compatible Akhil R
@ 2025-07-31  9:11 ` Akhil R
  2025-08-01  9:56   ` Thierry Reding
  1 sibling, 1 reply; 6+ messages in thread
From: Akhil R @ 2025-07-31  9:11 UTC (permalink / raw)
  To: andi.shyti, conor+dt, devicetree, digetx, jonathanh, krzk+dt,
	linux-i2c, linux-kernel, linux-tegra, thierry.reding
  Cc: akhilrajeev, ldewangan, robh

Add compatible and the hardware struct for Tegra256. Tegra256 controllers
use a different parent clock. Hence the timing parameters are different
from the previous generations to meet the expected frequencies.

Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
---
 drivers/i2c/busses/i2c-tegra.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

diff --git a/drivers/i2c/busses/i2c-tegra.c b/drivers/i2c/busses/i2c-tegra.c
index 4eb31b913c1a..e533460bccc3 100644
--- a/drivers/i2c/busses/i2c-tegra.c
+++ b/drivers/i2c/busses/i2c-tegra.c
@@ -1649,7 +1649,33 @@ static const struct tegra_i2c_hw_feature tegra194_i2c_hw = {
 	.has_interface_timing_reg = true,
 };
 
+static const struct tegra_i2c_hw_feature tegra256_i2c_hw = {
+	.has_continue_xfer_support = true,
+	.has_per_pkt_xfer_complete_irq = true,
+	.clk_divisor_hs_mode = 7,
+	.clk_divisor_std_mode = 0x7a,
+	.clk_divisor_fast_mode = 0x40,
+	.clk_divisor_fast_plus_mode = 0x19,
+	.has_config_load_reg = true,
+	.has_multi_master_mode = true,
+	.has_slcg_override_reg = true,
+	.has_mst_fifo = true,
+	.has_mst_reset = true,
+	.quirks = &tegra194_i2c_quirks,
+	.supports_bus_clear = true,
+	.has_apb_dma = false,
+	.tlow_std_mode = 0x8,
+	.thigh_std_mode = 0x7,
+	.tlow_fast_fastplus_mode = 0x3,
+	.thigh_fast_fastplus_mode = 0x3,
+	.setup_hold_time_std_mode = 0x08080808,
+	.setup_hold_time_fast_fast_plus_mode = 0x02020202,
+	.setup_hold_time_hs_mode = 0x090909,
+	.has_interface_timing_reg = true,
+};
+
 static const struct of_device_id tegra_i2c_of_match[] = {
+	{ .compatible = "nvidia,tegra256-i2c", .data = &tegra256_i2c_hw, },
 	{ .compatible = "nvidia,tegra194-i2c", .data = &tegra194_i2c_hw, },
 	{ .compatible = "nvidia,tegra186-i2c", .data = &tegra186_i2c_hw, },
 #if IS_ENABLED(CONFIG_ARCH_TEGRA_210_SOC)
-- 
2.50.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] dt-bindings: i2c: nvidia,tegra20-i2c: Add Tegra256 I2C compatible
  2025-07-31  9:11 ` [PATCH 1/2] dt-bindings: i2c: nvidia,tegra20-i2c: Add Tegra256 I2C compatible Akhil R
@ 2025-07-31 17:37   ` Rob Herring (Arm)
  2025-08-01  9:56   ` Thierry Reding
  1 sibling, 0 replies; 6+ messages in thread
From: Rob Herring (Arm) @ 2025-07-31 17:37 UTC (permalink / raw)
  To: Akhil R
  Cc: linux-i2c, andi.shyti, digetx, linux-tegra, devicetree, ldewangan,
	conor+dt, thierry.reding, linux-kernel, jonathanh, krzk+dt


On Thu, 31 Jul 2025 14:41:21 +0530, Akhil R wrote:
> Add compatible for Tegra256 I2C controllers. Tegra256 consists of
> 8 generic Tegra I2C controllers similar to previous generations.
> The parent clock frequency is different in these controllers and
> hence the timing parameter values are different from the previous
> ones.
> 
> Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
> ---
>  .../devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml         | 6 ++++++
>  1 file changed, 6 insertions(+)
> 

Acked-by: Rob Herring (Arm) <robh@kernel.org>


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] i2c: tegra: Add Tegra256 support
  2025-07-31  9:11 ` [PATCH 2/2] i2c: tegra: Add Tegra256 support Akhil R
@ 2025-08-01  9:56   ` Thierry Reding
  0 siblings, 0 replies; 6+ messages in thread
From: Thierry Reding @ 2025-08-01  9:56 UTC (permalink / raw)
  To: Akhil R
  Cc: andi.shyti, conor+dt, devicetree, digetx, jonathanh, krzk+dt,
	linux-i2c, linux-kernel, linux-tegra, ldewangan, robh

[-- Attachment #1: Type: text/plain, Size: 492 bytes --]

On Thu, Jul 31, 2025 at 02:41:22PM +0530, Akhil R wrote:
> Add compatible and the hardware struct for Tegra256. Tegra256 controllers
> use a different parent clock. Hence the timing parameters are different
> from the previous generations to meet the expected frequencies.
> 
> Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
> ---
>  drivers/i2c/busses/i2c-tegra.c | 26 ++++++++++++++++++++++++++
>  1 file changed, 26 insertions(+)

Acked-by: Thierry Reding <treding@nvidia.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] dt-bindings: i2c: nvidia,tegra20-i2c: Add Tegra256 I2C compatible
  2025-07-31  9:11 ` [PATCH 1/2] dt-bindings: i2c: nvidia,tegra20-i2c: Add Tegra256 I2C compatible Akhil R
  2025-07-31 17:37   ` Rob Herring (Arm)
@ 2025-08-01  9:56   ` Thierry Reding
  1 sibling, 0 replies; 6+ messages in thread
From: Thierry Reding @ 2025-08-01  9:56 UTC (permalink / raw)
  To: Akhil R
  Cc: andi.shyti, conor+dt, devicetree, digetx, jonathanh, krzk+dt,
	linux-i2c, linux-kernel, linux-tegra, ldewangan, robh

[-- Attachment #1: Type: text/plain, Size: 563 bytes --]

On Thu, Jul 31, 2025 at 02:41:21PM +0530, Akhil R wrote:
> Add compatible for Tegra256 I2C controllers. Tegra256 consists of
> 8 generic Tegra I2C controllers similar to previous generations.
> The parent clock frequency is different in these controllers and
> hence the timing parameter values are different from the previous
> ones.
> 
> Signed-off-by: Akhil R <akhilrajeev@nvidia.com>
> ---
>  .../devicetree/bindings/i2c/nvidia,tegra20-i2c.yaml         | 6 ++++++
>  1 file changed, 6 insertions(+)

Acked-by: Thierry Reding <treding@nvidia.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-08-01  9:56 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-31  9:11 [PATCH 0/2] i2c: tegra: Add Tegra256 I2C controller support Akhil R
2025-07-31  9:11 ` [PATCH 1/2] dt-bindings: i2c: nvidia,tegra20-i2c: Add Tegra256 I2C compatible Akhil R
2025-07-31 17:37   ` Rob Herring (Arm)
2025-08-01  9:56   ` Thierry Reding
2025-07-31  9:11 ` [PATCH 2/2] i2c: tegra: Add Tegra256 support Akhil R
2025-08-01  9:56   ` Thierry Reding

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).