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
next prev parent 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®