[PATCH v9 3/4] dt-bindings: mfd: x-powers: Describe AC200 functions
From: James Hilliard
Date: Thu Sep 03 2026 - 16:12:06 EST
From: Jernej Skrabec <jernej.skrabec@xxxxxxxxx>
Describe the AC200 audio codec and TV encoder as child nodes of the
shared I2C register provider. Keep their analog supplies on the function
consumers and describe the TV encoder display graph and optional bandgap
calibration cell.
Add the shared interrupt-controller properties and interrupt numbers needed
by the TV encoder. The Ethernet PHY remains represented on its primary MDIO
bus and is therefore not an MFD child.
Signed-off-by: Jernej Skrabec <jernej.skrabec@xxxxxxxxx>
Signed-off-by: James Hilliard <james.hilliard1@xxxxxxxxx>
---
.../devicetree/bindings/mfd/x-powers,ac200.yaml | 136 +++++++++++++++++++++
MAINTAINERS | 1 +
include/dt-bindings/mfd/x-powers,ac200.h | 13 ++
3 files changed, 150 insertions(+)
diff --git a/Documentation/devicetree/bindings/mfd/x-powers,ac200.yaml b/Documentation/devicetree/bindings/mfd/x-powers,ac200.yaml
index ca7a910b2c73..935dc07138cb 100644
--- a/Documentation/devicetree/bindings/mfd/x-powers,ac200.yaml
+++ b/Documentation/devicetree/bindings/mfd/x-powers,ac200.yaml
@@ -28,15 +28,114 @@ properties:
be 24 or 27 MHz, matching the rates encoded by the documented EPHY clock
selector.
+ interrupts:
+ maxItems: 1
+ description:
+ The shared open-drain INTB output for the TV encoder, Ethernet PHY and
+ RTC interrupts.
+
+ interrupt-controller: true
+
+ '#interrupt-cells':
+ const: 1
+ description:
+ The interrupt number, as defined in
+ include/dt-bindings/mfd/x-powers,ac200.h.
+
+ codec:
+ type: object
+ $ref: /schemas/sound/dai-common.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ compatible:
+ const: x-powers,ac200-codec
+
+ '#sound-dai-cells':
+ const: 0
+
+ ac-ldoin-supply:
+ description: The 3.3 V supply for the audio codec LDO input.
+
+ required:
+ - compatible
+ - '#sound-dai-cells'
+ - ac-ldoin-supply
+
+ tv-encoder:
+ type: object
+ additionalProperties: false
+
+ properties:
+ compatible:
+ const: x-powers,ac200-tve
+
+ interrupts:
+ maxItems: 1
+ description: Cable detection interrupt.
+
+ tv-vcc-supply:
+ description: The 3.3 V supply for the composite-video DAC.
+
+ nvmem-cells:
+ maxItems: 1
+
+ nvmem-cell-names:
+ items:
+ - const: bandgap
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+
+ properties:
+ port@0:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Input from the display pipeline, carrying CCIR656.
+
+ port@1:
+ $ref: /schemas/graph.yaml#/properties/port
+ description: Output to the composite-video connector.
+
+ required:
+ - port@0
+ - port@1
+
+ required:
+ - compatible
+ - interrupts
+ - tv-vcc-supply
+ - ports
+
+ dependencies:
+ nvmem-cells: [ nvmem-cell-names ]
+ nvmem-cell-names: [ nvmem-cells ]
+
required:
- compatible
- reg
- clocks
+allOf:
+ - if:
+ required:
+ - tv-encoder
+ then:
+ required:
+ - interrupts
+ - interrupt-controller
+ - '#interrupt-cells'
+
+dependencies:
+ interrupt-controller: [ '#interrupt-cells', interrupts ]
+ '#interrupt-cells': [ interrupt-controller ]
+
additionalProperties: false
examples:
- |
+ #include <dt-bindings/interrupt-controller/irq.h>
+ #include <dt-bindings/mfd/x-powers,ac200.h>
+
i2c {
#address-cells = <1>;
#size-cells = <0>;
@@ -45,6 +144,43 @@ examples:
compatible = "x-powers,ac200";
reg = <0x10>;
clocks = <&pwm 5>;
+ interrupt-parent = <&pio>;
+ interrupts = <1 20 IRQ_TYPE_LEVEL_LOW>;
+ interrupt-controller;
+ #interrupt-cells = <1>;
+
+ codec {
+ compatible = "x-powers,ac200-codec";
+ #sound-dai-cells = <0>;
+ ac-ldoin-supply = <®_aldo2>;
+ };
+
+ tv-encoder {
+ compatible = "x-powers,ac200-tve";
+ interrupts = <AC200_IRQ_TVE>;
+ tv-vcc-supply = <®_aldo2>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+
+ tve_in: endpoint {
+ remote-endpoint = <&tcon_out_tve>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+
+ tve_out: endpoint {
+ remote-endpoint = <&composite_in>;
+ };
+ };
+ };
+ };
};
};
...
diff --git a/MAINTAINERS b/MAINTAINERS
index 1d03b0060bda..8a48f6a1e593 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -29511,6 +29511,7 @@ L: linux-sunxi@xxxxxxxxxxxxxxx
S: Maintained
F: Documentation/devicetree/bindings/mfd/x-powers,ac200.yaml
F: drivers/mfd/ac200.c
+F: include/dt-bindings/mfd/x-powers,ac200.h
X-POWERS AXP288 PMIC DRIVERS
M: Hans de Goede <hansg@xxxxxxxxxx>
diff --git a/include/dt-bindings/mfd/x-powers,ac200.h b/include/dt-bindings/mfd/x-powers,ac200.h
new file mode 100644
index 000000000000..cc59e2ab4912
--- /dev/null
+++ b/include/dt-bindings/mfd/x-powers,ac200.h
@@ -0,0 +1,13 @@
+/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
+/*
+ * Interrupt numbers of the X-Powers AC200 interrupt controller.
+ */
+
+#ifndef _DT_BINDINGS_MFD_X_POWERS_AC200_H
+#define _DT_BINDINGS_MFD_X_POWERS_AC200_H
+
+#define AC200_IRQ_TVE 0
+#define AC200_IRQ_EPHY 1
+#define AC200_IRQ_RTC 2
+
+#endif /* _DT_BINDINGS_MFD_X_POWERS_AC200_H */
--
2.53.0