public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
* [PATCH v7 0/5] Add microchip sama7d65 SoC I3C support
@ 2026-05-25  9:24 Manikandan Muralidharan
  2026-05-25  9:24 ` [PATCH v7 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible Manikandan Muralidharan
                   ` (4 more replies)
  0 siblings, 5 replies; 7+ messages in thread
From: Manikandan Muralidharan @ 2026-05-25  9:24 UTC (permalink / raw)
  To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
	nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, bmasney,
	aubin.constans, Ryan.Wanner, romain.sioen, tytso, cristian.birsan,
	adrian.hunter, npitre, linux-i3c, devicetree, linux-kernel,
	linux-arm-kernel, linux-clk
  Cc: Manikandan Muralidharan

Add support for microchip sama7d65 SoC I3C master only IP which is
based on mipi-i3c-hci from synopsys implementing version 1.0
specification. The platform specific changes are integrated in the
mipi-i3c-hci driver using existing quirks.

I3C in master mode supports up to 12.5MHz, SDR mode data transfer in
mixed bus mode (I2C and I3C target devices on same i3c bus).

Please refer to the individual patches for changelogs.

Durai Manickam KR (2):
  clk: at91: sama7d65: add peripheral clock for I3C
  ARM: dts: microchip: add I3C controller

Manikandan Muralidharan (3):
  dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible
  i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the
    required quirk
  ARM: configs: at91: sama7: add sama7d65 i3c-hci

 .../devicetree/bindings/i3c/mipi-i3c-hci.yaml | 27 ++++++++++++++++---
 arch/arm/boot/dts/microchip/sama7d65.dtsi     |  8 ++++++
 arch/arm/configs/sama7_defconfig              |  2 ++
 drivers/clk/at91/sama7d65.c                   |  1 +
 drivers/i3c/master/mipi-i3c-hci/core.c        | 10 +++++++
 5 files changed, 44 insertions(+), 4 deletions(-)

-- 
2.25.1



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

* [PATCH v7 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible
  2026-05-25  9:24 [PATCH v7 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
@ 2026-05-25  9:24 ` Manikandan Muralidharan
  2026-05-25  9:24 ` [PATCH v7 2/5] clk: at91: sama7d65: add peripheral clock for I3C Manikandan Muralidharan
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 7+ messages in thread
From: Manikandan Muralidharan @ 2026-05-25  9:24 UTC (permalink / raw)
  To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
	nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, bmasney,
	aubin.constans, Ryan.Wanner, romain.sioen, tytso, cristian.birsan,
	adrian.hunter, npitre, linux-i3c, devicetree, linux-kernel,
	linux-arm-kernel, linux-clk
  Cc: Manikandan Muralidharan, Conor Dooley

Add the microchip,sama7d65-i3c-hci compatible string to the MIPI I3C
HCI binding. The Microchip SAMA7D65 I3C controller is based on the
MIPI HCI specification but requires two clocks, so add a conditional
constraint when this compatible is present.

Acked-by: Conor Dooley <conor.dooley@microchip•com>
Reviewed-by: Frank Li <Frank.Li@nxp•com>
Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip•com>
---
Changes in v5:
- drop min/maxItems around clock entries
- use if/then/else clause instead of separate allOf entry
- cosmetic fixes for indentation and formatting

Changes in v4:
- Define and describe the clock property in the top-level properties
  section rather than inside the if/then conditional

 .../devicetree/bindings/i3c/mipi-i3c-hci.yaml | 27 ++++++++++++++++---
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/i3c/mipi-i3c-hci.yaml b/Documentation/devicetree/bindings/i3c/mipi-i3c-hci.yaml
index 39bb1a1784c9..d488fb420945 100644
--- a/Documentation/devicetree/bindings/i3c/mipi-i3c-hci.yaml
+++ b/Documentation/devicetree/bindings/i3c/mipi-i3c-hci.yaml
@@ -9,9 +9,6 @@ title: MIPI I3C HCI
 maintainers:
   - Nicolas Pitre <npitre@baylibre•com>
 
-allOf:
-  - $ref: /schemas/i3c/i3c.yaml#
-
 description: |
   MIPI I3C Host Controller Interface
 
@@ -28,9 +25,17 @@ description: |
 
 properties:
   compatible:
-    const: mipi-i3c-hci
+    enum:
+      - mipi-i3c-hci
+      - microchip,sama7d65-i3c-hci
   reg:
     maxItems: 1
+
+  clocks:
+    items:
+      - description: Peripheral bus clock
+      - description: System Generic clock
+
   interrupts:
     maxItems: 1
 
@@ -39,6 +44,20 @@ required:
   - reg
   - interrupts
 
+allOf:
+  - $ref: /schemas/i3c/i3c.yaml#
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: microchip,sama7d65-i3c-hci
+    then:
+      required:
+        - clocks
+    else:
+      properties:
+        clocks: false
+
 unevaluatedProperties: false
 
 examples:
-- 
2.25.1



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

* [PATCH v7 2/5] clk: at91: sama7d65: add peripheral clock for I3C
  2026-05-25  9:24 [PATCH v7 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
  2026-05-25  9:24 ` [PATCH v7 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible Manikandan Muralidharan
@ 2026-05-25  9:24 ` Manikandan Muralidharan
  2026-05-31 14:50   ` Claudiu Beznea
  2026-05-25  9:24 ` [PATCH v7 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the required quirk Manikandan Muralidharan
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 7+ messages in thread
From: Manikandan Muralidharan @ 2026-05-25  9:24 UTC (permalink / raw)
  To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
	nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, bmasney,
	aubin.constans, Ryan.Wanner, romain.sioen, tytso, cristian.birsan,
	adrian.hunter, npitre, linux-i3c, devicetree, linux-kernel,
	linux-arm-kernel, linux-clk
  Cc: Durai Manickam KR, Manikandan Muralidharan

From: Durai Manickam KR <durai.manickamkr@microchip•com>

Add peripheral clock description for I3C.

Signed-off-by: Durai Manickam KR <durai.manickamkr@microchip•com>
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon•dev>
Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip•com>
---
Changes in v3:
- Fixed indentation issues in the clock table entry

 drivers/clk/at91/sama7d65.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/clk/at91/sama7d65.c b/drivers/clk/at91/sama7d65.c
index 7dee2b160ffb..ba8ff413fa2c 100644
--- a/drivers/clk/at91/sama7d65.c
+++ b/drivers/clk/at91/sama7d65.c
@@ -677,6 +677,7 @@ static struct {
 	{ .n = "uhphs_clk",	.p = PCK_PARENT_HW_MCK5, .id = 101, },
 	{ .n = "dsi_clk",	.p = PCK_PARENT_HW_MCK3, .id = 103, },
 	{ .n = "lvdsc_clk",	.p = PCK_PARENT_HW_MCK3, .id = 104, },
+	{ .n = "i3cc_clk",	.p = PCK_PARENT_HW_MCK8, .id = 105, },
 };
 
 /*
-- 
2.25.1



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

* [PATCH v7 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the required quirk
  2026-05-25  9:24 [PATCH v7 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
  2026-05-25  9:24 ` [PATCH v7 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible Manikandan Muralidharan
  2026-05-25  9:24 ` [PATCH v7 2/5] clk: at91: sama7d65: add peripheral clock for I3C Manikandan Muralidharan
@ 2026-05-25  9:24 ` Manikandan Muralidharan
  2026-05-25  9:24 ` [PATCH v7 4/5] ARM: dts: microchip: add I3C controller Manikandan Muralidharan
  2026-05-25  9:24 ` [PATCH v7 5/5] ARM: configs: at91: sama7: add sama7d65 i3c-hci Manikandan Muralidharan
  4 siblings, 0 replies; 7+ messages in thread
From: Manikandan Muralidharan @ 2026-05-25  9:24 UTC (permalink / raw)
  To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
	nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, bmasney,
	aubin.constans, Ryan.Wanner, romain.sioen, tytso, cristian.birsan,
	adrian.hunter, npitre, linux-i3c, devicetree, linux-kernel,
	linux-arm-kernel, linux-clk
  Cc: Manikandan Muralidharan

Add support for microchip sama7d65 SoC I3C HCI master only IP
with additional clock support to enable bulk clock acquisition
and apply the required quirks.

Reviewed-by: Adrian Hunter <adrian.hunter@intel•com>
Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip•com>
---
Changes in v7:
- Use (void *)(ulong) cast instead of direct (void *) cast in
  of_device_id.data for pointer-size safety across architectures
- Update commit message body to explicitly mention quirk application

Changes in v6:
- Reorder local variable definitions in i3c_hci_probe in descending
  order of line length

Changes in v5:
- Remove HCI_QUIRK_CLK_SUPPORT quirk and call
  devm_clk_bulk_get_all_enabled unconditionally, eliminating the
  need for a clock-specific quirk flag

Changes in v4:
- Remove the clock index variable MCHP_I3C_CLK_IDX as it is no
  longer needed after switching to bulk clock handling

Changes in v3:
- Make use of existing HCI_QUIRK_* code base instead of introducing
  separate MCHP_HCI_QUIRK_* flags
- Introduce HCI_QUIRK_CLK_SUPPORT to handle peripheral and system
  generic clk in bulk

Changes in v2:
- Platform specific changes integrated in the existing mipi-i3c-hci
  driver by introducing separate MCHP_HCI_QUIRK_* quirks and vendor
  specific quirk files rather than a standalone driver

 drivers/i3c/master/mipi-i3c-hci/core.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
index b781dbed2165..4cdf2abd4219 100644
--- a/drivers/i3c/master/mipi-i3c-hci/core.c
+++ b/drivers/i3c/master/mipi-i3c-hci/core.c
@@ -8,6 +8,7 @@
  */
 
 #include <linux/bitfield.h>
+#include <linux/clk.h>
 #include <linux/device.h>
 #include <linux/errno.h>
 #include <linux/i3c/master.h>
@@ -969,6 +970,7 @@ static int i3c_hci_init(struct i3c_hci *hci)
 static int i3c_hci_probe(struct platform_device *pdev)
 {
 	const struct mipi_i3c_hci_platform_data *pdata = pdev->dev.platform_data;
+	struct clk_bulk_data *clks;
 	struct i3c_hci *hci;
 	int irq, ret;
 
@@ -1001,6 +1003,11 @@ static int i3c_hci_probe(struct platform_device *pdev)
 	if (!hci->quirks && platform_get_device_id(pdev))
 		hci->quirks = platform_get_device_id(pdev)->driver_data;
 
+	ret = devm_clk_bulk_get_all_enabled(&pdev->dev, &clks);
+	if (ret < 0)
+		return dev_err_probe(&pdev->dev, ret,
+				     "Failed to get clocks\n");
+
 	ret = i3c_hci_init(hci);
 	if (ret)
 		return ret;
@@ -1031,6 +1038,9 @@ static void i3c_hci_remove(struct platform_device *pdev)
 
 static const __maybe_unused struct of_device_id i3c_hci_of_match[] = {
 	{ .compatible = "mipi-i3c-hci", },
+	{ .compatible = "microchip,sama7d65-i3c-hci",
+	  .data = (void *)(ulong)(HCI_QUIRK_PIO_MODE | HCI_QUIRK_OD_PP_TIMING |
+				  HCI_QUIRK_RESP_BUF_THLD) },
 	{},
 };
 MODULE_DEVICE_TABLE(of, i3c_hci_of_match);
-- 
2.25.1



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

* [PATCH v7 4/5] ARM: dts: microchip: add I3C controller
  2026-05-25  9:24 [PATCH v7 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
                   ` (2 preceding siblings ...)
  2026-05-25  9:24 ` [PATCH v7 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the required quirk Manikandan Muralidharan
@ 2026-05-25  9:24 ` Manikandan Muralidharan
  2026-05-25  9:24 ` [PATCH v7 5/5] ARM: configs: at91: sama7: add sama7d65 i3c-hci Manikandan Muralidharan
  4 siblings, 0 replies; 7+ messages in thread
From: Manikandan Muralidharan @ 2026-05-25  9:24 UTC (permalink / raw)
  To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
	nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, bmasney,
	aubin.constans, Ryan.Wanner, romain.sioen, tytso, cristian.birsan,
	adrian.hunter, npitre, linux-i3c, devicetree, linux-kernel,
	linux-arm-kernel, linux-clk
  Cc: Durai Manickam KR, Manikandan Muralidharan

From: Durai Manickam KR <durai.manickamkr@microchip•com>

Add I3C controller for sama7d65 SoC.

Signed-off-by: Durai Manickam KR <durai.manickamkr@microchip•com>
Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip•com>
---
Changes in v3:
- Remove clock-names property as the driver acquires and enables
  clocks in bulk using devm_clk_bulk_get_all_enabled

 arch/arm/boot/dts/microchip/sama7d65.dtsi | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm/boot/dts/microchip/sama7d65.dtsi b/arch/arm/boot/dts/microchip/sama7d65.dtsi
index 67253bbc08df..ec200848c153 100644
--- a/arch/arm/boot/dts/microchip/sama7d65.dtsi
+++ b/arch/arm/boot/dts/microchip/sama7d65.dtsi
@@ -1055,5 +1055,13 @@ gic: interrupt-controller@e8c11000 {
 			#address-cells = <0>;
 			interrupt-controller;
 		};
+
+		i3c: i3c@e9000000 {
+			compatible = "microchip,sama7d65-i3c-hci";
+			reg = <0xe9000000 0x300>;
+			interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&pmc PMC_TYPE_PERIPHERAL 105>, <&pmc PMC_TYPE_GCK 105>;
+			status = "disabled";
+		};
 	};
 };
-- 
2.25.1



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

* [PATCH v7 5/5] ARM: configs: at91: sama7: add sama7d65 i3c-hci
  2026-05-25  9:24 [PATCH v7 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
                   ` (3 preceding siblings ...)
  2026-05-25  9:24 ` [PATCH v7 4/5] ARM: dts: microchip: add I3C controller Manikandan Muralidharan
@ 2026-05-25  9:24 ` Manikandan Muralidharan
  4 siblings, 0 replies; 7+ messages in thread
From: Manikandan Muralidharan @ 2026-05-25  9:24 UTC (permalink / raw)
  To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
	nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, bmasney,
	aubin.constans, Ryan.Wanner, romain.sioen, tytso, cristian.birsan,
	adrian.hunter, npitre, linux-i3c, devicetree, linux-kernel,
	linux-arm-kernel, linux-clk
  Cc: Manikandan Muralidharan, Durai Manickam KR

Enable the configs needed for I3C framework and microchip
sama7d65 i3c-hci driver.

Signed-off-by: Durai Manickam KR <durai.manickamkr@microchip•com>
Reviewed-by: Claudiu Beznea <claudiu.beznea@tuxon•dev>
Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip•com>
---
 arch/arm/configs/sama7_defconfig | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/configs/sama7_defconfig b/arch/arm/configs/sama7_defconfig
index e52f671ccec4..6470c7d3fe8a 100644
--- a/arch/arm/configs/sama7_defconfig
+++ b/arch/arm/configs/sama7_defconfig
@@ -117,6 +117,8 @@ CONFIG_HW_RANDOM=y
 CONFIG_I2C=y
 CONFIG_I2C_CHARDEV=y
 CONFIG_I2C_AT91=y
+CONFIG_I3C=y
+CONFIG_MIPI_I3C_HCI=y
 CONFIG_SPI=y
 CONFIG_SPI_ATMEL=y
 CONFIG_SPI_ATMEL_QUADSPI=y
-- 
2.25.1



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

* Re: [PATCH v7 2/5] clk: at91: sama7d65: add peripheral clock for I3C
  2026-05-25  9:24 ` [PATCH v7 2/5] clk: at91: sama7d65: add peripheral clock for I3C Manikandan Muralidharan
@ 2026-05-31 14:50   ` Claudiu Beznea
  0 siblings, 0 replies; 7+ messages in thread
From: Claudiu Beznea @ 2026-05-31 14:50 UTC (permalink / raw)
  To: Manikandan Muralidharan, alexandre.belloni, Frank.Li, robh,
	krzk+dt, conor+dt, nicolas.ferre, linux, mturquette, sboyd,
	bmasney, aubin.constans, Ryan.Wanner, romain.sioen, tytso,
	cristian.birsan, adrian.hunter, npitre, linux-i3c, devicetree,
	linux-kernel, linux-arm-kernel, linux-clk
  Cc: Durai Manickam KR



On 5/25/26 12:24, Manikandan Muralidharan wrote:
> From: Durai Manickam KR<durai.manickamkr@microchip•com>
> 
> Add peripheral clock description for I3C.
> 
> Signed-off-by: Durai Manickam KR<durai.manickamkr@microchip•com>
> Reviewed-by: Claudiu Beznea<claudiu.beznea@tuxon•dev>
> Signed-off-by: Manikandan Muralidharan<manikandan.m@microchip•com>

Applied to clk-microchip, thanks!


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

end of thread, other threads:[~2026-05-31 14:51 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-25  9:24 [PATCH v7 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
2026-05-25  9:24 ` [PATCH v7 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible Manikandan Muralidharan
2026-05-25  9:24 ` [PATCH v7 2/5] clk: at91: sama7d65: add peripheral clock for I3C Manikandan Muralidharan
2026-05-31 14:50   ` Claudiu Beznea
2026-05-25  9:24 ` [PATCH v7 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the required quirk Manikandan Muralidharan
2026-05-25  9:24 ` [PATCH v7 4/5] ARM: dts: microchip: add I3C controller Manikandan Muralidharan
2026-05-25  9:24 ` [PATCH v7 5/5] ARM: configs: at91: sama7: add sama7d65 i3c-hci Manikandan Muralidharan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox