* [PATCH v3 0/5] Add microchip sama7d65 SoC I3C support
@ 2026-03-12 4:20 Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible Manikandan Muralidharan
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Manikandan Muralidharan @ 2026-03-12 4:20 UTC (permalink / raw)
To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, ardb,
ebiggers, martin.petersen, tytso, cristian.birsan, adrian.hunter,
jarkko.nikula, kees, npitre, linux-i3c, devicetree, linux-kernel,
linux-arm-kernel, linux-clk
Cc: manikandan.m
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
existing mipi-i3c-hci driver by introducing a quirk
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).
Durai Manickam KR (3):
clk: at91: sama7d65: add peripheral clock for I3C
ARM: dts: microchip: add I3C controller
ARM: configs: at91: sama7: add sama7d65 i3c-hci
Manikandan Muralidharan (2):
dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible
i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the
appropriate quirk
.../devicetree/bindings/i3c/mipi-i3c-hci.yaml | 22 +++++++++++++++----
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 | 12 ++++++++++
drivers/i3c/master/mipi-i3c-hci/hci.h | 4 ++++
6 files changed, 45 insertions(+), 4 deletions(-)
--
2.25.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v3 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible
2026-03-12 4:20 [PATCH v3 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
@ 2026-03-12 4:20 ` Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 2/5] clk: at91: sama7d65: add peripheral clock for I3C Manikandan Muralidharan
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Manikandan Muralidharan @ 2026-03-12 4:20 UTC (permalink / raw)
To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, ardb,
ebiggers, martin.petersen, tytso, cristian.birsan, adrian.hunter,
jarkko.nikula, kees, npitre, linux-i3c, devicetree, linux-kernel,
linux-arm-kernel, linux-clk
Cc: manikandan.m
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.
Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com>
---
.../devicetree/bindings/i3c/mipi-i3c-hci.yaml | 22 +++++++++++++++----
1 file changed, 18 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..db659388a27d 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,7 +25,9 @@ description: |
properties:
compatible:
- const: mipi-i3c-hci
+ enum:
+ - mipi-i3c-hci
+ - microchip,sama7d65-i3c-hci
reg:
maxItems: 1
interrupts:
@@ -39,6 +38,21 @@ required:
- reg
- interrupts
+allOf:
+ - $ref: /schemas/i3c/i3c.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: microchip,sama7d65-i3c-hci
+ then:
+ properties:
+ clocks:
+ minItems: 2
+ maxItems: 2
+ required:
+ - clocks
+
unevaluatedProperties: false
examples:
--
2.25.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 2/5] clk: at91: sama7d65: add peripheral clock for I3C
2026-03-12 4:20 [PATCH v3 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible Manikandan Muralidharan
@ 2026-03-12 4:20 ` Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the appropriate quirk Manikandan Muralidharan
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Manikandan Muralidharan @ 2026-03-12 4:20 UTC (permalink / raw)
To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, ardb,
ebiggers, martin.petersen, tytso, cristian.birsan, adrian.hunter,
jarkko.nikula, kees, npitre, linux-i3c, devicetree, linux-kernel,
linux-arm-kernel, linux-clk
Cc: manikandan.m, Durai Manickam KR
From: Durai Manickam KR <durai.manickamkr@microchip.com>
Add peripheral clock description for I3C.
Signed-off-by: Durai Manickam KR <durai.manickamkr@microchip.com>
Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com>
---
changes in v3:
- Fixed indentation issues
---
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
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the appropriate quirk
2026-03-12 4:20 [PATCH v3 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 2/5] clk: at91: sama7d65: add peripheral clock for I3C Manikandan Muralidharan
@ 2026-03-12 4:20 ` Manikandan Muralidharan
2026-03-12 9:29 ` Adrian Hunter
2026-03-12 4:20 ` [PATCH v3 4/5] ARM: dts: microchip: add I3C controller Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 5/5] ARM: configs: at91: sama7: add sama7d65 i3c-hci Manikandan Muralidharan
4 siblings, 1 reply; 8+ messages in thread
From: Manikandan Muralidharan @ 2026-03-12 4:20 UTC (permalink / raw)
To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, ardb,
ebiggers, martin.petersen, tytso, cristian.birsan, adrian.hunter,
jarkko.nikula, kees, npitre, linux-i3c, devicetree, linux-kernel,
linux-arm-kernel, linux-clk
Cc: manikandan.m
Add support for microchip sama7d65 SoC I3C HCI master only IP
with additional clock support to enable bulk clock acquisition
for Microchip platforms using HCI_QUIRK_CLK_SUPPORT quirk.
Introduce MCHP_I3C_CLK_IDX to define the maximum peripheral
clock index
Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com>
---
Changes in v3:
- Make use of existing HCI_QUIRK_* code base
- Introduce HCI_QUIRK_CLK_SUPPORT to handle/enable the required Peripheral
and system generic clk in bulk
Changes in v2:
- Platform specific changes are integrated in the existing mipi-i3c-hci
driver by introducing separate MCHP_HCI_QUIRK_* quirks and vendor
specific quirk files
---
drivers/i3c/master/mipi-i3c-hci/core.c | 12 ++++++++++++
drivers/i3c/master/mipi-i3c-hci/hci.h | 4 ++++
2 files changed, 16 insertions(+)
diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
index 5879bba78164..6b7716bd517e 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>
@@ -918,6 +919,7 @@ static int i3c_hci_probe(struct platform_device *pdev)
{
const struct mipi_i3c_hci_platform_data *pdata = pdev->dev.platform_data;
struct i3c_hci *hci;
+ struct clk_bulk_data *clks;
int irq, ret;
hci = devm_kzalloc(&pdev->dev, sizeof(*hci), GFP_KERNEL);
@@ -946,6 +948,13 @@ 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;
+ if (hci->quirks & HCI_QUIRK_CLK_SUPPORT) {
+ ret = devm_clk_bulk_get_all_enabled(&pdev->dev, &clks);
+ if (ret < MCHP_I3C_CLK_IDX)
+ return dev_err_probe(&pdev->dev, ret,
+ "Failed to get clocks\n");
+ }
+
ret = i3c_hci_init(hci);
if (ret)
return ret;
@@ -971,6 +980,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 *)(HCI_QUIRK_PIO_MODE | HCI_QUIRK_OD_PP_TIMING |
+ HCI_QUIRK_RESP_BUF_THLD | HCI_QUIRK_CLK_SUPPORT) },
{},
};
MODULE_DEVICE_TABLE(of, i3c_hci_of_match);
diff --git a/drivers/i3c/master/mipi-i3c-hci/hci.h b/drivers/i3c/master/mipi-i3c-hci/hci.h
index 337b7ab1cb06..2571ef6374ce 100644
--- a/drivers/i3c/master/mipi-i3c-hci/hci.h
+++ b/drivers/i3c/master/mipi-i3c-hci/hci.h
@@ -140,12 +140,16 @@ struct i3c_hci_dev_data {
void *ibi_data;
};
+#define MCHP_I3C_CLK_IDX 2 /* Max peripheral clock index for Microchip platforms */
+
/* list of quirks */
#define HCI_QUIRK_RAW_CCC BIT(1) /* CCC framing must be explicit */
#define HCI_QUIRK_PIO_MODE BIT(2) /* Set PIO mode for AMD platforms */
#define HCI_QUIRK_OD_PP_TIMING BIT(3) /* Set OD and PP timings for AMD platforms */
#define HCI_QUIRK_RESP_BUF_THLD BIT(4) /* Set resp buf thld to 0 for AMD platforms */
#define HCI_QUIRK_RPM_ALLOWED BIT(5) /* Runtime PM allowed */
+#define HCI_QUIRK_CLK_SUPPORT BIT(6) /* Enable Clocks for Microchip platforms*/
+
/* global functions */
void mipi_i3c_hci_resume(struct i3c_hci *hci);
--
2.25.1
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 4/5] ARM: dts: microchip: add I3C controller
2026-03-12 4:20 [PATCH v3 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
` (2 preceding siblings ...)
2026-03-12 4:20 ` [PATCH v3 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the appropriate quirk Manikandan Muralidharan
@ 2026-03-12 4:20 ` Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 5/5] ARM: configs: at91: sama7: add sama7d65 i3c-hci Manikandan Muralidharan
4 siblings, 0 replies; 8+ messages in thread
From: Manikandan Muralidharan @ 2026-03-12 4:20 UTC (permalink / raw)
To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, ardb,
ebiggers, martin.petersen, tytso, cristian.birsan, adrian.hunter,
jarkko.nikula, kees, npitre, linux-i3c, devicetree, linux-kernel,
linux-arm-kernel, linux-clk
Cc: manikandan.m, Durai Manickam KR
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 driver enables the clk in bulk
---
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 e21556f46384..f358aae3ec59 100644
--- a/arch/arm/boot/dts/microchip/sama7d65.dtsi
+++ b/arch/arm/boot/dts/microchip/sama7d65.dtsi
@@ -1015,5 +1015,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
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v3 5/5] ARM: configs: at91: sama7: add sama7d65 i3c-hci
2026-03-12 4:20 [PATCH v3 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
` (3 preceding siblings ...)
2026-03-12 4:20 ` [PATCH v3 4/5] ARM: dts: microchip: add I3C controller Manikandan Muralidharan
@ 2026-03-12 4:20 ` Manikandan Muralidharan
4 siblings, 0 replies; 8+ messages in thread
From: Manikandan Muralidharan @ 2026-03-12 4:20 UTC (permalink / raw)
To: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
nicolas.ferre, claudiu.beznea, linux, mturquette, sboyd, ardb,
ebiggers, martin.petersen, tytso, cristian.birsan, adrian.hunter,
jarkko.nikula, kees, npitre, linux-i3c, devicetree, linux-kernel,
linux-arm-kernel, linux-clk
Cc: manikandan.m, Durai Manickam KR
From: Durai Manickam KR <durai.manickamkr@microchip.com>
Enable the configs needed for I3C framework and microchip
sama7d65 i3c-hci driver.
Signed-off-by: Durai Manickam KR <durai.manickamkr@microchip.com>
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 e2ad9a05566f..a59b262e48e1 100644
--- a/arch/arm/configs/sama7_defconfig
+++ b/arch/arm/configs/sama7_defconfig
@@ -115,6 +115,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
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v3 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the appropriate quirk
2026-03-12 4:20 ` [PATCH v3 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the appropriate quirk Manikandan Muralidharan
@ 2026-03-12 9:29 ` Adrian Hunter
[not found] ` <20260312-ricotta-unusable-44c25a03eff8@spud>
0 siblings, 1 reply; 8+ messages in thread
From: Adrian Hunter @ 2026-03-12 9:29 UTC (permalink / raw)
To: Manikandan Muralidharan, alexandre.belloni, Frank.Li, robh,
krzk+dt, conor+dt, nicolas.ferre, claudiu.beznea, linux,
mturquette, sboyd, ardb, ebiggers, martin.petersen, tytso,
cristian.birsan, jarkko.nikula, kees, npitre, linux-i3c,
devicetree, linux-kernel, linux-arm-kernel, linux-clk
On 12/03/2026 06:20, Manikandan Muralidharan wrote:
> Add support for microchip sama7d65 SoC I3C HCI master only IP
> with additional clock support to enable bulk clock acquisition
> for Microchip platforms using HCI_QUIRK_CLK_SUPPORT quirk.
> Introduce MCHP_I3C_CLK_IDX to define the maximum peripheral
> clock index
>
> Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com>
> ---
> Changes in v3:
> - Make use of existing HCI_QUIRK_* code base
> - Introduce HCI_QUIRK_CLK_SUPPORT to handle/enable the required Peripheral
> and system generic clk in bulk
>
> Changes in v2:
> - Platform specific changes are integrated in the existing mipi-i3c-hci
> driver by introducing separate MCHP_HCI_QUIRK_* quirks and vendor
> specific quirk files
>
> ---
> drivers/i3c/master/mipi-i3c-hci/core.c | 12 ++++++++++++
> drivers/i3c/master/mipi-i3c-hci/hci.h | 4 ++++
> 2 files changed, 16 insertions(+)
>
> diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
> index 5879bba78164..6b7716bd517e 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>
> @@ -918,6 +919,7 @@ static int i3c_hci_probe(struct platform_device *pdev)
> {
> const struct mipi_i3c_hci_platform_data *pdata = pdev->dev.platform_data;
> struct i3c_hci *hci;
> + struct clk_bulk_data *clks;
> int irq, ret;
>
> hci = devm_kzalloc(&pdev->dev, sizeof(*hci), GFP_KERNEL);
> @@ -946,6 +948,13 @@ 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;
>
> + if (hci->quirks & HCI_QUIRK_CLK_SUPPORT) {
> + ret = devm_clk_bulk_get_all_enabled(&pdev->dev, &clks);
> + if (ret < MCHP_I3C_CLK_IDX)
Is MCHP_I3C_CLK_IDX really needed? Why not just:
if (ret <= 0)
i.e. don't you anyway have to assume DT has the clocks defined
correctly.
> + return dev_err_probe(&pdev->dev, ret,
> + "Failed to get clocks\n");
> + }
> +
> ret = i3c_hci_init(hci);
> if (ret)
> return ret;
> @@ -971,6 +980,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 *)(HCI_QUIRK_PIO_MODE | HCI_QUIRK_OD_PP_TIMING |
> + HCI_QUIRK_RESP_BUF_THLD | HCI_QUIRK_CLK_SUPPORT) },
> {},
> };
> MODULE_DEVICE_TABLE(of, i3c_hci_of_match);
> diff --git a/drivers/i3c/master/mipi-i3c-hci/hci.h b/drivers/i3c/master/mipi-i3c-hci/hci.h
> index 337b7ab1cb06..2571ef6374ce 100644
> --- a/drivers/i3c/master/mipi-i3c-hci/hci.h
> +++ b/drivers/i3c/master/mipi-i3c-hci/hci.h
> @@ -140,12 +140,16 @@ struct i3c_hci_dev_data {
> void *ibi_data;
> };
>
> +#define MCHP_I3C_CLK_IDX 2 /* Max peripheral clock index for Microchip platforms */
> +
> /* list of quirks */
> #define HCI_QUIRK_RAW_CCC BIT(1) /* CCC framing must be explicit */
> #define HCI_QUIRK_PIO_MODE BIT(2) /* Set PIO mode for AMD platforms */
> #define HCI_QUIRK_OD_PP_TIMING BIT(3) /* Set OD and PP timings for AMD platforms */
> #define HCI_QUIRK_RESP_BUF_THLD BIT(4) /* Set resp buf thld to 0 for AMD platforms */
> #define HCI_QUIRK_RPM_ALLOWED BIT(5) /* Runtime PM allowed */
> +#define HCI_QUIRK_CLK_SUPPORT BIT(6) /* Enable Clocks for Microchip platforms*/
Without MCHP_I3C_CLK_IDX this becomes a generic quirk that others can use
> +
>
> /* global functions */
> void mipi_i3c_hci_resume(struct i3c_hci *hci);
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v3 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the appropriate quirk
[not found] ` <20260312-ricotta-unusable-44c25a03eff8@spud>
@ 2026-03-16 6:36 ` Manikandan.M
0 siblings, 0 replies; 8+ messages in thread
From: Manikandan.M @ 2026-03-16 6:36 UTC (permalink / raw)
To: conor, adrian.hunter
Cc: alexandre.belloni, Frank.Li, robh, krzk+dt, conor+dt,
Nicolas.Ferre, claudiu.beznea, linux, mturquette, sboyd, ardb,
ebiggers, martin.petersen, tytso, Cristian.Birsan, jarkko.nikula,
kees, npitre, linux-i3c, devicetree, linux-kernel,
linux-arm-kernel, linux-clk
On 12/03/26 11:22 pm, Conor Dooley wrote:
> On Thu, Mar 12, 2026 at 11:29:25AM +0200, Adrian Hunter wrote:
>> On 12/03/2026 06:20, Manikandan Muralidharan wrote:
>>> Add support for microchip sama7d65 SoC I3C HCI master only IP
>>> with additional clock support to enable bulk clock acquisition
>>> for Microchip platforms using HCI_QUIRK_CLK_SUPPORT quirk.
>>> Introduce MCHP_I3C_CLK_IDX to define the maximum peripheral
>>> clock index
>>>
>>> Signed-off-by: Manikandan Muralidharan <manikandan.m@microchip.com>
>>> ---
>>> Changes in v3:
>>> - Make use of existing HCI_QUIRK_* code base
>>> - Introduce HCI_QUIRK_CLK_SUPPORT to handle/enable the required Peripheral
>>> and system generic clk in bulk
>>>
>>> Changes in v2:
>>> - Platform specific changes are integrated in the existing mipi-i3c-hci
>>> driver by introducing separate MCHP_HCI_QUIRK_* quirks and vendor
>>> specific quirk files
>>>
>>> ---
>>> drivers/i3c/master/mipi-i3c-hci/core.c | 12 ++++++++++++
>>> drivers/i3c/master/mipi-i3c-hci/hci.h | 4 ++++
>>> 2 files changed, 16 insertions(+)
>>>
>>> diff --git a/drivers/i3c/master/mipi-i3c-hci/core.c b/drivers/i3c/master/mipi-i3c-hci/core.c
>>> index 5879bba78164..6b7716bd517e 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>
>>> @@ -918,6 +919,7 @@ static int i3c_hci_probe(struct platform_device *pdev)
>>> {
>>> const struct mipi_i3c_hci_platform_data *pdata = pdev->dev.platform_data;
>>> struct i3c_hci *hci;
>>> + struct clk_bulk_data *clks;
>>> int irq, ret;
>>>
>>> hci = devm_kzalloc(&pdev->dev, sizeof(*hci), GFP_KERNEL);
>>> @@ -946,6 +948,13 @@ 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;
>>>
>>> + if (hci->quirks & HCI_QUIRK_CLK_SUPPORT) {
>>> + ret = devm_clk_bulk_get_all_enabled(&pdev->dev, &clks);
>>> + if (ret < MCHP_I3C_CLK_IDX)
>>
>> Is MCHP_I3C_CLK_IDX really needed? Why not just:
>>
>> if (ret <= 0)
>>
>> i.e. don't you anyway have to assume DT has the clocks defined
>> correctly.
>
> Ye, I think this is kinda silly. Trust dtbs_check to have the correct
> number for your platform set, and let this be specific.
Thank you Adrian and Conor
I will drop MCHP_I3C_CLK_IDX in the next version.
--
Thanks and Regards,
Manikandan M.
--
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2026-03-16 6:36 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-12 4:20 [PATCH v3 0/5] Add microchip sama7d65 SoC I3C support Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 1/5] dt-bindings: i3c: mipi-i3c-hci: add Microchip SAMA7D65 compatible Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 2/5] clk: at91: sama7d65: add peripheral clock for I3C Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 3/5] i3c: mipi-i3c-hci: add microchip sama7d65 SoC compatible with the appropriate quirk Manikandan Muralidharan
2026-03-12 9:29 ` Adrian Hunter
[not found] ` <20260312-ricotta-unusable-44c25a03eff8@spud>
2026-03-16 6:36 ` Manikandan.M
2026-03-12 4:20 ` [PATCH v3 4/5] ARM: dts: microchip: add I3C controller Manikandan Muralidharan
2026-03-12 4:20 ` [PATCH v3 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