mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Thierry Reding <thierry.reding@kernel.org>
To: Lee Jones <lee@kernel.org>, Rob Herring <robh@kernel.org>,
	 Krzysztof Kozlowski <krzk+dt@kernel.org>,
	 Conor Dooley <conor+dt@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>,
	 Mark Brown <broonie@kernel.org>,
	Laxman Dewangan <ldewangan@nvidia.com>,
	 Thierry Reding <thierry.reding@kernel.org>,
	 Jonathan Hunter <jonathanh@nvidia.com>
Cc: mfd@lists.linux.dev, devicetree@vger.kernel.org,
	 linux-kernel@vger.kernel.org,
	Thierry Reding <thierry.reding@gmail.com>,
	 linux-sound@vger.kernel.org, linux-tegra@vger.kernel.org,
	 Thierry Reding <treding@nvidia.com>
Subject: [PATCH 1/2] dt-bindings: mfd: as3722: Convert to json-schema
Date: Mon, 28 Sep 2026 18:24:40 +0200	[thread overview]
Message-ID: <20260928-as3722-bindings-v1-1-35f423a9f2b2@nvidia.com> (raw)
In-Reply-To: <20260928-as3722-bindings-v1-0-35f423a9f2b2@nvidia.com>

From: Thierry Reding <treding@nvidia.com>

Convert the AMS AS3722 PMIC bindings from the free-form text format to
json-schema.

Signed-off-by: Thierry Reding <treding@nvidia.com>
---
 .../devicetree/bindings/mfd/ams,as3722.yaml        | 276 +++++++++++++++++++++
 Documentation/devicetree/bindings/mfd/as3722.txt   | 214 ----------------
 .../bindings/regulator/as3722-regulator.txt        |  91 -------
 3 files changed, 276 insertions(+), 305 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/ams,as3722.yaml b/Documentation/devicetree/bindings/mfd/ams,as3722.yaml
new file mode 100644
index 000000000000..6a6444500396
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/ams,as3722.yaml
@@ -0,0 +1,276 @@
+# 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 IC
+
+maintainers:
+  - Laxman Dewangan <ldewangan@nvidia.com>
+  - Lee Jones <lee.jones@linaro.org>
+
+properties:
+  compatible:
+    const: ams,as3722
+
+  reg:
+    maxItems: 1
+
+  interrupts:
+    maxItems: 1
+
+  # standard properties
+  interrupt-controller:
+    description: The AS3722 has an internal interrupt controller which takes
+      the interrupt request from internal sub-blocks like RTC, regulators,
+      GPIOs as well as external input.
+
+  "#interrupt-cells":
+    description: 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.
+    const: 2
+
+  # from gpio.yaml
+  gpio-controller: true
+  "#gpio-cells": true
+
+  # optional properties
+  ams,enable-internal-int-pullup:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description: Boolean property, to enable internal pullup on interrupt pin.
+      Omitting this will disable internal pullup on INT pin.
+
+  ams,enable-internal-i2c-pullup:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description: Boolean property, to enable internal pullup on I2C SCL/SDA
+      pins. Omitting this will disable internal pullup on I2C SCL/SDA lines.
+
+  ams,enable-ac-ok-power-on:
+    $ref: /schemas/types.yaml#/definitions/flag
+    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:
+    $ref: /schemas/types.yaml#/definitions/flag
+    description: The AS3722 supports the system power off by turning off all
+      its rails. The device node should contain this boolean property to
+      enable this functionality.
+
+  pinmux:
+    type: object
+    description: |
+      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".
+
+    patternProperties:
+      "^gpio[0-7_]+$":
+        description: |
+          Child nodes of the pinmux node represent 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.
+        type: object
+        properties:
+          pins:
+            $ref: /schemas/types.yaml#/definitions/string-array
+            description: List of pins for this configuration group.
+            items:
+              enum: [ gpio0, gpio1, gpio2, gpio3, gpio4, gpio5, gpio6, gpio7 ]
+
+          function:
+            $ref: /schemas/types.yaml#/definitions/string
+            description: Function configuration for this configuration group.
+            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:
+            $ref: /schemas/types.yaml#/definitions/flag
+
+          bias-pull-up:
+            $ref: /schemas/types.yaml#/definitions/flag
+
+          bias-pull-down:
+            $ref: /schemas/types.yaml#/definitions/flag
+
+          bias-high-impedance:
+            $ref: /schemas/types.yaml#/definitions/flag
+
+          drive-open-drain:
+            $ref: /schemas/types.yaml#/definitions/flag
+
+        additionalProperties: false
+
+        required:
+          - pins
+
+  regulators:
+    type: object
+    description: Device has multiple DCDC and LDOs. The node "regulators" is
+      required if regulator functionality is needed.
+
+    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-7]|ldo9|ldo10|ldo11)$":
+        type: object
+        description: These sub-nodes must be named after one of the regulators
+          found on the AS3277. Each sub-node should contain the constraints and
+          initialization information for that regulator.
+
+        properties:
+          ams,ext-control:
+            $ref: /schemas/types.yaml#/definitions/uint32
+            description: External control of the rail. The value of this
+              property will tell which external input is controlling this rail.
+              Valid values are 0, 1, 2 ad 3. If this property does not exist,
+              the default value is 0. The external control pin macros are
+              defined in dt-bindings/mfd/as3722.h.
+            oneOf:
+              - description: there is no external control of this rail
+                const: 0
+              - description: rail is controlled by ENABLE1 input pin
+                const: 1
+              - description: rail is controlled by ENABLE2 input pin
+                const: 2
+              - description: rail is controlled by ENABLE3 input pin
+                const: 3
+            default: 0
+
+          ams,enable-tracking:
+            $ref: /schemas/types.yaml#/definitions/flag
+            description: Enable tracking with SD1, only supported by LDO3.
+
+additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - interrupt-controller
+  - "#interrupt-cells"
+
+allOf:
+  - $ref: /schemas/gpio/gpio.yaml
+
+examples:
+  - |
+    #include <dt-bindings/mfd/as3722.h>
+
+    i2c {
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        pmic@48 {
+            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 = <&vdd_5v0_sys>;
+
+                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;
+                };
+            };
+        };
+    };
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;
-			};
-			....
-	};
-};
diff --git a/Documentation/devicetree/bindings/regulator/as3722-regulator.txt b/Documentation/devicetree/bindings/regulator/as3722-regulator.txt
deleted file mode 100644
index caad0c8a258d..000000000000
--- a/Documentation/devicetree/bindings/regulator/as3722-regulator.txt
+++ /dev/null
@@ -1,91 +0,0 @@
-Regulator of AMS AS3722 PMIC.
-Name of the regulator subnode must be "regulators".
-
-Optional properties:
---------------------
-The input supply of regulators are the optional properties on the
-regulator node. The AS3722 is having 7 DCDC step-down regulators as
-sd[0-6], 10 LDOs as ldo[0-7], ldo[9-11]. 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 nodes:
---------------
-- regulators : Must contain a sub-node per regulator from the list below.
-	       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 custom properties  are listed below.
-	       sd[0-6], ldo[0-7], ldo[9-11].
-
-	       Optional sub-node properties:
-	       ----------------------------
-		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.
-		ams,enable-tracking: Enable tracking with SD1, only supported
-			by LDO3.
-
-Example:
--------
-	ams3722: ams3722 {
-		compatible = "ams,as3722";
-		reg = <0x40>;
-		...
-
-		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;
-			};
-			....
-		};
-	};

-- 
2.55.0


  reply	other threads:[~2026-09-28 16:24 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-28 16:24 [PATCH 0/2] arm64: tegra: Fix DT validation issues for Tegra132 Thierry Reding
2026-09-28 16:24 ` Thierry Reding [this message]
2026-09-28 21:41   ` [PATCH 1/2] dt-bindings: mfd: as3722: Convert to json-schema Rob Herring
2026-09-28 16:24 ` [PATCH 2/2] dt-bindings: sound: tegra-ahub: " Thierry Reding
2026-09-28 16:38   ` Mark Brown
2026-09-28 19:23   ` Mark Brown
2026-09-29 11:44     ` Thierry Reding
2026-09-28 21:46   ` Rob Herring
2026-09-29 11:21     ` Thierry Reding

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260928-as3722-bindings-v1-1-35f423a9f2b2@nvidia.com \
    --to=thierry.reding@kernel.org \
    --cc=broonie@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=jonathanh@nvidia.com \
    --cc=krzk+dt@kernel.org \
    --cc=ldewangan@nvidia.com \
    --cc=lee@kernel.org \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=mfd@lists.linux.dev \
    --cc=robh@kernel.org \
    --cc=thierry.reding@gmail.com \
    --cc=treding@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®