* [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* 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
* [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