[PATCH] dt-bindings: mfd: as3722: Convert to DT schema

From: Shaunak Datar

Date: Mon Sep 14 2026 - 13:45:59 EST


Convert the AS3722 PMIC binding from the text format to YAML Schema to
enable DT Schema validation.

Signed-off-by: Shaunak Datar <shaunakkdatar@xxxxxxxxx>
---
.../devicetree/bindings/mfd/ams,as3722.yaml | 230 ++++++++++++++++++
.../devicetree/bindings/mfd/as3722.txt | 214 ----------------
2 files changed, 230 insertions(+), 214 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mfd/ams,as3722.yaml
delete mode 100644 Documentation/devicetree/bindings/mfd/as3722.txt

diff --git a/Documentation/devicetree/bindings/mfd/ams,as3722.yaml b/Documentation/devicetree/bindings/mfd/ams,as3722.yaml
new file mode 100644
index 000000000000..065537f50e06
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/ams,as3722.yaml
@@ -0,0 +1,230 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/ams,as3722.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: ams AS3722 Power Management Integrated Circuit
+
+maintainers:
+ - Laxman Dewangan <ldewangan@xxxxxxxxxx>
+
+properties:
+ compatible:
+ const: ams,as3722
+
+ reg:
+ description: I2C device address.
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ interrupt-controller: true
+
+ "#interrupt-cells":
+ const: 2
+ description: |
+ Should be set to 2 for IRQ number and flags.
+ The first cell is the IRQ number. IRQ numbers for different interrupt
+ source of AS3722 are defined at dt-bindings/mfd/as3722.h
+ The second cell is the flags, encoded as the trigger masks from
+ dt-bindings/interrupt-controller/irq.h
+
+ gpio-controller: true
+
+ "#gpio-cells":
+ const: 2
+ description:
+ The first cell is the pin number and the second cell is used to
+ specify the GPIO polarity.
+
+ ams,enable-internal-int-pullup:
+ type: boolean
+ description:
+ Boolean property, to enable internal pullup on interrupt pin. Missing
+ this will disable internal pullup on INT pin.
+
+ ams,enable-internal-i2c-pullup:
+ type: boolean
+ description:
+ Boolean property, to enable internal pullup on i2c scl/sda pins.
+ Missing this will disable internal pullup on i2c scl/sda lines.
+
+ ams,enable-ac-ok-power-on:
+ type: boolean
+ description:
+ Boolean property, to enable exit out of power off mode with AC_OK pin
+ (pin enabled in power off mode).
+
+ ams,system-power-controller:
+ type: boolean
+ description:
+ Boolean, to enable the power off functionality through this device.
+
+ pinmux:
+ type: object
+ additionalProperties: false
+ description:
+ Pin control setting at boot. Each subnode represents some desired
+ configuration for a list of pins. This configuration can include the
+ mux function to select on those pin(s), and various pin configuration
+ parameters, such as pull-up, open drain.
+
+ patternProperties:
+ "^gpio[0-9_-]+$":
+ type: object
+ $ref: /schemas/pinctrl/pinmux-node.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ pins:
+ description: List of pins.
+ items:
+ enum: [gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7]
+
+ function:
+ enum: [gpio, interrupt-out, gpio-in-interrupt,
+ vsup-vbat-low-undebounce-out, vsup-vbat-low-debounce-out,
+ voltage-in-standby, oc-pg-sd0, oc-pg-sd6, powergood-out,
+ pwm-in, pwm-out, clk32k-out, watchdog-in, soft-reset-in]
+
+ bias-disable: true
+ bias-pull-up: true
+ bias-pull-down: true
+ bias-high-impedance: true
+ drive-open-drain: true
+
+ required:
+ - pins
+
+ regulators:
+ type: object
+ additionalProperties: false
+ description:
+ Container for the regulator subnodes and their input supplies.
+
+ properties:
+ vsup-sd2-supply:
+ description: Input supply for SD2.
+ vsup-sd3-supply:
+ description: Input supply for SD3.
+ vsup-sd4-supply:
+ description: Input supply for SD4.
+ vsup-sd5-supply:
+ description: Input supply for SD5.
+ vin-ldo0-supply:
+ description: Input supply for LDO0.
+ vin-ldo1-6-supply:
+ description: Input supply for LDO1 and LDO6.
+ vin-ldo2-5-7-supply:
+ description: Input supply for LDO2, LDO5 and LDO7.
+ vin-ldo3-4-supply:
+ description: Input supply for LDO3 and LDO4.
+ vin-ldo9-10-supply:
+ description: Input supply for LDO9 and LDO10.
+ vin-ldo11-supply:
+ description: Input supply for LDO11.
+
+ patternProperties:
+ "^(sd[0-6]|ldo[0-79]|ldo1[01])$":
+ type: object
+ $ref: /schemas/regulator/regulator.yaml#
+ unevaluatedProperties: false
+
+ properties:
+ ams,ext-control:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ enum: [0, 1, 2, 3]
+ description: |
+ External control of the rail. The option of this properties
+ will tell which external input is controlling this rail.
+ Valid values are 0, 1, 2 and 3.
+ 0: There is no external control of this rail.
+ 1: Rail is controlled by ENABLE1 input pin.
+ 2: Rail is controlled by ENABLE2 input pin.
+ 3: Rail is controlled by ENABLE3 input pin.
+ Missing this property on DT will be assumed as no external
+ control. The external control pin macros are defined at
+ dt-bindings/mfd/as3722.h
+
+ ams,enable-tracking:
+ type: boolean
+ description:
+ Enable tracking with SD1, only supported by LDO3.
+
+required:
+ - compatible
+ - reg
+ - interrupt-controller
+ - "#interrupt-cells"
+
+additionalProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/interrupt-controller/arm-gic.h>
+ #include <dt-bindings/mfd/as3722.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ pmic@40 {
+ compatible = "ams,as3722";
+ reg = <0x40>;
+ interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+
+ ams,system-power-controller;
+
+ interrupt-controller;
+ #interrupt-cells = <2>;
+
+ gpio-controller;
+ #gpio-cells = <2>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&as3722_default>;
+
+ as3722_default: pinmux {
+ gpio0 {
+ pins = "gpio0";
+ function = "gpio";
+ bias-pull-down;
+ };
+
+ gpio1_2_4_7 {
+ pins = "gpio1", "gpio2", "gpio4", "gpio7";
+ function = "gpio";
+ bias-pull-up;
+ };
+
+ gpio3_5_6 {
+ pins = "gpio3", "gpio5", "gpio6";
+ bias-high-impedance;
+ };
+ };
+
+ regulators {
+ vsup-sd2-supply = <&vdd_5v0_sys>;
+ vsup-sd3-supply = <&vdd_5v0_sys>;
+ vin-ldo0-supply = <&vdd_1v35_lp0>;
+
+ sd0 {
+ regulator-name = "vdd_cpu";
+ regulator-min-microvolt = <700000>;
+ regulator-max-microvolt = <1400000>;
+ regulator-always-on;
+ ams,ext-control = <AS3722_EXT_CONTROL_PIN_ENABLE2>;
+ };
+
+ ldo3 {
+ regulator-name = "vdd_rtc";
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-always-on;
+ ams,enable-tracking;
+ };
+ };
+ };
+ };
diff --git a/Documentation/devicetree/bindings/mfd/as3722.txt b/Documentation/devicetree/bindings/mfd/as3722.txt
deleted file mode 100644
index 2a665741d7fe..000000000000
--- a/Documentation/devicetree/bindings/mfd/as3722.txt
+++ /dev/null
@@ -1,214 +0,0 @@
-* ams AS3722 Power management IC.
-
-Required properties:
--------------------
-- compatible: Must be "ams,as3722".
-- reg: I2C device address.
-- interrupt-controller: AS3722 has internal interrupt controller which takes the
- interrupt request from internal sub-blocks like RTC, regulators, GPIOs as well
- as external input.
-- #interrupt-cells: Should be set to 2 for IRQ number and flags.
- The first cell is the IRQ number. IRQ numbers for different interrupt source
- of AS3722 are defined at dt-bindings/mfd/as3722.h
- The second cell is the flags, encoded as the trigger masks from binding document
- interrupts.txt, using dt-bindings/irq.
-
-Optional properties:
---------------------
-- ams,enable-internal-int-pullup: Boolean property, to enable internal pullup on
- interrupt pin. Missing this will disable internal pullup on INT pin.
-- ams,enable-internal-i2c-pullup: Boolean property, to enable internal pullup on
- i2c scl/sda pins. Missing this will disable internal pullup on i2c
- scl/sda lines.
-- ams,enable-ac-ok-power-on: Boolean property, to enable exit out of power off
- mode with AC_OK pin (pin enabled in power off mode).
-
-Optional submodule and their properties:
-=======================================
-
-Pinmux and GPIO:
-===============
-Device has 8 GPIO pins which can be configured as GPIO as well as the special IO
-functions.
-
-Please refer to pinctrl-bindings.txt in this directory for details of the
-common pinctrl bindings used by client devices, including the meaning of the
-phrase "pin configuration node".
-
-Following are properties which is needed if GPIO and pinmux functionality
-is required:
- Required properties:
- -------------------
- - gpio-controller: Marks the device node as a GPIO controller.
- - #gpio-cells: Number of GPIO cells. Refer to binding document
- gpio/gpio.txt
-
- Optional properties:
- --------------------
- Following properties are require if pin control setting is required
- at boot.
- - pinctrl-names: A pinctrl state named "default" be defined, using the
- bindings in pinctrl/pinctrl-bindings.txt.
- - pinctrl[0...n]: Properties to contain the phandle that refer to
- different nodes of pin control settings. These nodes represents
- the pin control setting of state 0 to state n. Each of these
- nodes contains different subnodes to represents some desired
- configuration for a list of pins. This configuration can
- include the mux function to select on those pin(s), and
- various pin configuration parameters, such as pull-up,
- open drain.
-
- Each subnode have following properties:
- Required properties:
- - pins: List of pins. Valid values of pins properties are:
- gpio0, gpio1, gpio2, gpio3, gpio4, gpio5,
- gpio6, gpio7
-
- Optional properties:
- function, bias-disable, bias-pull-up, bias-pull-down,
- bias-high-impedance, drive-open-drain.
-
- Valid values for function properties are:
- gpio, interrupt-out, gpio-in-interrupt,
- vsup-vbat-low-undebounce-out,
- vsup-vbat-low-debounce-out,
- voltage-in-standby, oc-pg-sd0, oc-pg-sd6,
- powergood-out, pwm-in, pwm-out, clk32k-out,
- watchdog-in, soft-reset-in
-
-Regulators:
-===========
-Device has multiple DCDC and LDOs. The node "regulators" is require if regulator
-functionality is needed.
-
-Following are properties of regulator subnode.
-
- Optional properties:
- -------------------
- The input supply of regulators are the optional properties on the
- regulator node. The input supply of these regulators are provided
- through following properties:
- vsup-sd2-supply: Input supply for SD2.
- vsup-sd3-supply: Input supply for SD3.
- vsup-sd4-supply: Input supply for SD4.
- vsup-sd5-supply: Input supply for SD5.
- vin-ldo0-supply: Input supply for LDO0.
- vin-ldo1-6-supply: Input supply for LDO1 and LDO6.
- vin-ldo2-5-7-supply: Input supply for LDO2, LDO5 and LDO7.
- vin-ldo3-4-supply: Input supply for LDO3 and LDO4.
- vin-ldo9-10-supply: Input supply for LDO9 and LDO10.
- vin-ldo11-supply: Input supply for LDO11.
-
- Optional sub nodes for regulators:
- ---------------------------------
- The subnodes name is the name of regulator and it must be one of:
- sd[0-6], ldo[0-7], ldo[9-11]
-
- Each sub-node should contain the constraints and initialization
- information for that regulator. See regulator.txt for a description
- of standard properties for these sub-nodes.
- Additional optional custom properties are listed below.
- ams,ext-control: External control of the rail. The option of
- this properties will tell which external input is
- controlling this rail. Valid values are 0, 1, 2 ad 3.
- 0: There is no external control of this rail.
- 1: Rail is controlled by ENABLE1 input pin.
- 2: Rail is controlled by ENABLE2 input pin.
- 3: Rail is controlled by ENABLE3 input pin.
- Missing this property on DT will be assume as no
- external control. The external control pin macros
- are defined @dt-bindings/mfd/as3722.h
-
- ams,enable-tracking: Enable tracking with SD1, only supported
- by LDO3.
-
-Power-off:
-=========
-AS3722 supports the system power off by turning off all its rails.
-The device node should have the following properties to enable this
-functionality
-ams,system-power-controller: Boolean, to enable the power off functionality
- through this device.
-
-Example:
---------
-#include <dt-bindings/mfd/as3722.h>
-...
-ams3722 {
- compatible = "ams,as3722";
- reg = <0x48>;
-
- ams,system-power-controller;
-
- interrupt-parent = <&intc>;
- interrupt-controller;
- #interrupt-cells = <2>;
-
- gpio-controller;
- #gpio-cells = <2>;
-
- pinctrl-names = "default";
- pinctrl-0 = <&as3722_default>;
-
- as3722_default: pinmux {
- gpio0 {
- pins = "gpio0";
- function = "gpio";
- bias-pull-down;
- };
-
- gpio1_2_4_7 {
- pins = "gpio1", "gpio2", "gpio4", "gpio7";
- function = "gpio";
- bias-pull-up;
- };
-
- gpio5 {
- pins = "gpio5";
- function = "clk32k_out";
- };
- }
-
- regulators {
- vsup-sd2-supply = <...>;
- ...
-
- sd0 {
- regulator-name = "vdd_cpu";
- regulator-min-microvolt = <700000>;
- regulator-max-microvolt = <1400000>;
- regulator-always-on;
- ams,ext-control = <2>;
- };
-
- sd1 {
- regulator-name = "vdd_core";
- regulator-min-microvolt = <700000>;
- regulator-max-microvolt = <1400000>;
- regulator-always-on;
- ams,ext-control = <1>;
- };
-
- sd2 {
- regulator-name = "vddio_ddr";
- regulator-min-microvolt = <1350000>;
- regulator-max-microvolt = <1350000>;
- regulator-always-on;
- };
-
- sd4 {
- regulator-name = "avdd-hdmi-pex";
- regulator-min-microvolt = <1050000>;
- regulator-max-microvolt = <1050000>;
- regulator-always-on;
- };
-
- sd5 {
- regulator-name = "vdd-1v8";
- regulator-min-microvolt = <1800000>;
- regulator-max-microvolt = <1800000>;
- regulator-always-on;
- };
- ....
- };
-};

base-commit: cba2348ab114391f5b1a00fa65c5b739f13f0563
--
2.54.0