[PATCH v3 2/2] dt-bindings: i3c: silvaco,i3c-master: Add Amlogic A9 support
From: Junyi Zhao via B4 Relay
Date: Fri Nov 06 2026 - 02:16:32 EST
From: Junyi Zhao <junyi.zhao@xxxxxxxxxxx>
Amlogic A9 SoCs integrate the Silvaco I3C master IP in two domains:
the EE-domain instance (amlogic,a9-i3c) takes "pclk" and "fast_clk"
like the NXP integration, while the AO-domain instance
(amlogic,a9-ao-i3c) lives in the Always-On domain and generates its
bus clock from a divider inside the controller's own register space,
so there is no external fast clock and only "pclk" is exposed.
The two instances differ from the vanilla Silvaco/NXP integrations in
clock topology and required init, so the driver matches them by
dedicated compatibles instead of the "silvaco,i3c-master-v1"
fallback: a fallback would bind the generic driver data, which
neither programs the fast clock rate nor handles the AO internal
divider, and the variant would then fail to work.
Add both compatibles to the schema without the fallback, following
nuvoton,npcm845-i3c, and use per-compatible if/then conditionals to
enforce the clock counts: two clocks for the EE-domain instance and
one clock for the AO-domain instance.
Signed-off-by: Junyi Zhao <junyi.zhao@xxxxxxxxxxx>
---
.../bindings/i3c/silvaco,i3c-master.yaml | 26 ++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml b/Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml
index 853092f75..d892d42be 100644
--- a/Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml
+++ b/Documentation/devicetree/bindings/i3c/silvaco,i3c-master.yaml
@@ -13,6 +13,8 @@ properties:
compatible:
oneOf:
- enum:
+ - amlogic,a9-i3c
+ - amlogic,a9-ao-i3c
- nuvoton,npcm845-i3c
- silvaco,i3c-master-v1
- items:
@@ -28,14 +30,14 @@ properties:
maxItems: 1
clocks:
- minItems: 2
+ minItems: 1
items:
- description: system clock
- description: bus clock
- description: other (slower) events clock
clock-names:
- minItems: 2
+ minItems: 1
items:
- const: pclk
- const: fast_clk
@@ -70,15 +72,35 @@ allOf:
compatible:
contains:
enum:
+ - amlogic,a9-i3c
- nxp,imx94-i3c
- nxp,imx95-i3c
then:
properties:
clocks:
+ minItems: 2
maxItems: 2
clock-names:
+ minItems: 2
maxItems: 2
+ - if:
+ properties:
+ compatible:
+ contains:
+ enum:
+ - amlogic,a9-ao-i3c
+ then:
+ properties:
+ clocks:
+ maxItems: 1
+ description:
+ The "ao" variant is the controller instance in the Always-On (AO)
+ domain, which has no separate bus clock and derives the
+ bus clock from an internal divider.
+ clock-names:
+ maxItems: 1
+
unevaluatedProperties: false
examples:
--
2.42.0