All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rob Herring <robh@kernel.org>
To: Shree Ramamoorthy <s-ramamoorthy@ti.com>
Cc: lee@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	praneeth@ti.com, m-leonard@ti.com, rklein@nvidia.com
Subject: Re: [PATCH] mfd: dt-bindings: Convert TPS65910 to DT schema
Date: Tue, 8 Jul 2025 11:58:27 -0500	[thread overview]
Message-ID: <20250708165827.GA607073-robh@kernel.org> (raw)
In-Reply-To: <20250702220217.155647-1-s-ramamoorthy@ti.com>

On Wed, Jul 02, 2025 at 05:02:17PM -0500, Shree Ramamoorthy wrote:
> Convert the TI TPS65910 documentation to DT schema format.
> 
> Fix incorrect I2C address in example: should be 0x2d.
> 
> TPS65910 datasheet: https://www.ti.com/lit/gpn/tps65910
> 
> Signed-off-by: Shree Ramamoorthy <s-ramamoorthy@ti.com>
> ---
>  .../devicetree/bindings/mfd/ti,tps65910.yaml  | 333 ++++++++++++++++++
>  .../devicetree/bindings/mfd/tps65910.txt      | 205 -----------
>  2 files changed, 333 insertions(+), 205 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/mfd/ti,tps65910.yaml
>  delete mode 100644 Documentation/devicetree/bindings/mfd/tps65910.txt
> 
> diff --git a/Documentation/devicetree/bindings/mfd/ti,tps65910.yaml b/Documentation/devicetree/bindings/mfd/ti,tps65910.yaml
> new file mode 100644
> index 000000000000..789b3c6d89cd
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/ti,tps65910.yaml
> @@ -0,0 +1,333 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/ti,tps65910.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: TI TPS65910 Power Management Integrated Circuit
> +
> +maintainers:
> +  - Shree Ramamoorthy <s-ramamoorthy@ti.com>
> +
> +description:
> +  TPS65910 device is a Power Management IC that provides 3 step-down converters,
> +  1 stepup converter, and 8 LDOs. The device contains an embedded power controller (EPC),
> +  1 GPIO, and an RTC.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - ti,tps65910
> +      - ti,tps65911
> +
> +  reg:
> +    description: I2C slave address
> +    maxItems: 1
> +
> +  gpio-controller: true
> +
> +  '#gpio-cells':
> +    const: 2
> +    description: |
> +      The first cell is the GPIO number.
> +      The second cell is used to specify additional options <unused>.
> +      See ../gpio/gpio.txt for more information.

Don't add references to old docs. Or new ones, just drop the last line.

> +
> +  interrupts:
> +    maxItems: 1
> +
> +  interrupt-controller: true
> +
> +  '#interrupt-cells':
> +    description: Specifies the IRQ number and flags, as defined in
> +      Documentation/devicetree/bindings/interrupt-controller/interrupts.txt

Drop the reference.

> +    const: 2
> +
> +  ti,vmbch-threshold:
> +    description: |
> +      (TPS65911) Main battery charged threshold comparator.
> +      See VMBCH_VSEL in TPS65910 datasheet.
> +    $ref: /schemas/types.yaml#/definitions/uint32-array

Doesn't look like an array to me...

> +    minItems: 1
> +    maxItems: 1
> +    items:
> +      minimum: 0

0 is already the min.

> +      maximum: 3
> +
> +  ti,vmbch2-threshold:
> +    description: |
> +      (TPS65911) Main battery discharged threshold comparator.
> +      See VMBCH_VSEL in TPS65910 datasheet.
> +    $ref: /schemas/types.yaml#/definitions/uint32-array
> +    minItems: 1
> +    maxItems: 1
> +    items:
> +      minimum: 0
> +      maximum: 3

Same comments here.

> +
> +  ti,en-ck32k-xtal:
> +    type: boolean
> +    description: Enable external 32-kHz crystal oscillator.
> +
> +  ti,en-gpio-sleep:
> +    description: |
> +      Enable sleep control for gpios.
> +      There should be 9 entries here, one for each gpio.

Don't repeat constraints in free form text.

> +    $ref: /schemas/types.yaml#/definitions/uint32-array
> +    minItems: 9
> +    maxItems: 9
> +    items:
> +      minimum: 0
> +      maximum: 1
> +
> +  ti,system-power-controller:
> +    type: boolean
> +    description: Identify whether or not this pmic controls the system power
> +
> +  ti,sleep-enable:
> +    type: boolean
> +    description: Enable SLEEP state.
> +
> +  ti,sleep-keep-therm:
> +    type: boolean
> +    description: Keep thermal monitoring on in sleep state.
> +
> +  ti,sleep-keep-ck32k:
> +    type: boolean
> +    description: Keep the 32KHz clock output on in sleep state.
> +
> +  ti,sleep-keep-hsclk:
> +    type: boolean
> +    description: Keep high speed internal clock on in sleep state.
> +
> +  regulators:
> +    type: object
> +    description: List of regulators provided by this controller.
> +
> +    patternProperties:
> +      "^(vrtc|vio|vpll|vdac|vmmc|vbb|vddctrl)$":
> +        type: object
> +        $ref: /schemas/regulator/regulator.yaml#
> +        properties:
> +          ti,regulator-ext-sleep-control:
> +            description: |
> +              Enable external sleep control through external inputs:
> +              [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)].
> +              If this property is not defined, it defaults to 0 (not enabled).
> +            $ref: /schemas/types.yaml#/definitions/uint32
> +            enum: [0, 1, 2, 4, 8]
> +        unevaluatedProperties: true

false

> +
> +      "^(vdd[1-3]|vaux([1-2]|33)|vdig[1-2])$":
> +        type: object
> +        $ref: /schemas/regulator/regulator.yaml#
> +        properties:
> +          ti,regulator-ext-sleep-control:
> +            description: |
> +              Enable external sleep control through external inputs:
> +              [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)].
> +              If this property is not defined, it defaults to 0 (not enabled).
> +            $ref: /schemas/types.yaml#/definitions/uint32
> +            enum: [0, 1, 2, 4, 8]
> +        unevaluatedProperties: true

false

> +
> +      "^ldo[1-8]$":
> +        type: object
> +        $ref: /schemas/regulator/regulator.yaml#
> +        properties:
> +          ti,regulator-ext-sleep-control:
> +            description: |
> +              Enable external sleep control through external inputs:
> +              [0 (not enabled), 1 (EN1), 2 (EN2) or 4(EN3)].
> +              If this property is not defined, it defaults to 0 (not enabled).
> +            $ref: /schemas/types.yaml#/definitions/uint32
> +            enum: [0, 1, 2, 4, 8]
> +        unevaluatedProperties: true
> +
> +    additionalProperties: true

false

And move above patternProperties


> +
> +patternProperties:
> +  "^(vcc[1-7]-supply)|vccio-supply$":

^vcc(io|[1-7])-supply$

> +    description: |
> +      Input voltage supply phandle for regulators.
> +      These entries are required if PMIC regulators are enabled, or else it
> +      can cause the regulator registration to fail.

blank line between paragraphs.

> +      If some input supply is powered through battery or always-on supply, then
> +      it is also required to have these parameters with the proper node handle for always-on
> +      power supply.
> +      tps65910:
> +          vcc1-supply: VDD1 input.
> +          vcc2-supply: VDD2 input.
> +          vcc3-supply: VAUX33 and VMMC input.
> +          vcc4-supply: VAUX1 and VAUX2 input.
> +          vcc5-supply: VPLL and VDAC input.
> +          vcc6-supply: VDIG1 and VDIG2 input.
> +          vcc7-supply: VRTC and VBB input.
> +          vccio-supply: VIO input.
> +      tps65911:
> +          vcc1-supply: VDD1 input.
> +          vcc2-supply: VDD2 input.
> +          vcc3-supply: LDO6, LDO7 and LDO8 input.
> +          vcc4-supply: LDO5 input.
> +          vcc5-supply: LDO3 and LDO4 input.
> +          vcc6-supply: LDO1 and LDO2 input.
> +          vcc7-supply: VRTC input.
> +          vccio-supply: VIO input.
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - interrupt-controller
> +  - '#interrupt-cells'
> +  - gpio-controller
> +  - '#gpio-cells'
> +  - regulators
> +
> +additionalProperties: false
> +
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - ti,tps65910
> +    then:
> +      properties:
> +        regulators:
> +          patternProperties:
> +            "^(ldo[1-8]|vddctrl)$": false
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - ti,tps65911
> +    then:
> +      properties:
> +        regulators:
> +          patternProperties:
> +            "^(vdd3|vaux([1-2]|33)|vdig[1-2])$": false
> +            "^(vpll|vdac|vmmc|vbb)$": false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
> +    i2c {
> +        #address-cells = <1>;
> +        #size-cells = <0>;
> +
> +        pmic: tps65910@2d {

Indent by 4 here...
> +          compatible = "ti,tps65910";

And by 2 here. Be consistent (use 4).

> +          reg = <0x2d>;
> +          interrupt-parent = <&intc>;
> +          interrupts = < 0 118 0x04 >;
> +
> +          #gpio-cells = <2>;
> +          gpio-controller;
> +
> +          #interrupt-cells = <2>;
> +          interrupt-controller;
> +
> +          ti,system-power-controller;
> +
> +          ti,vmbch-threshold = <0>;
> +          ti,vmbch2-threshold = <0>;
> +          ti,en-ck32k-xtal;
> +          ti,en-gpio-sleep = <0 0 1 0 0 0 0 0 0>;
> +
> +          vcc1-supply = <&reg_parent>;
> +          vcc2-supply = <&some_reg>;
> +          vcc3-supply = <&vbat>;
> +          vcc4-supply = <&vbat>;
> +          vcc5-supply = <&vbat>;
> +          vcc6-supply = <&vbat>;
> +          vcc7-supply = <&vbat>;
> +          vccio-supply = <&vbat>;
> +
> +          regulators {
> +            vrtc_reg: vrtc {

Drop unused labels

> +              regulator-name = "vrtc";
> +              regulator-always-on;
> +            };
> +            vio_reg: vio {
> +              regulator-name = "vio";
> +              regulator-min-microvolt = <1500000>;
> +              regulator-max-microvolt = <3300000>;
> +              regulator-always-on;
> +              regulator-boot-on;
> +            };
> +            vdd1_reg: vdd1 {
> +              regulator-name = "vdd1";
> +              regulator-min-microvolt = < 600000>;
> +              regulator-max-microvolt = <1500000>;
> +              regulator-always-on;
> +              regulator-boot-on;
> +              ti,regulator-ext-sleep-control = <0>;
> +            };
> +            vdd2_reg: vdd2 {
> +              regulator-name = "vdd2";
> +              regulator-min-microvolt = < 600000>;
> +              regulator-max-microvolt = <1500000>;
> +              regulator-always-on;
> +              regulator-boot-on;
> +            };
> +            vdd3_reg: vdd3 {
> +              regulator-name = "vdd3";
> +              regulator-min-microvolt = <5000000>;
> +              regulator-max-microvolt = <5000000>;
> +              regulator-always-on;
> +            };
> +            vdig1_reg: vdig1 {
> +              regulator-name = "vdig1";
> +              regulator-min-microvolt = <1200000>;
> +              regulator-max-microvolt = <2700000>;
> +              regulator-always-on;
> +            };
> +            vdig2_reg: vdig2 {
> +              regulator-name = "vdig2";
> +              regulator-min-microvolt = <1000000>;
> +              regulator-max-microvolt = <1800000>;
> +              regulator-always-on;
> +            };
> +            vpll_reg: vpll {
> +              regulator-name = "vpll";
> +              regulator-min-microvolt = <1000000>;
> +              regulator-max-microvolt = <2500000>;
> +              regulator-always-on;
> +            };
> +            vdac_reg: vdac {
> +              regulator-name = "vdac";
> +              regulator-min-microvolt = <1800000>;
> +              regulator-max-microvolt = <2850000>;
> +              regulator-always-on;
> +            };
> +            vaux1_reg: vaux1 {
> +              regulator-name = "vaux1";
> +              regulator-min-microvolt = <1800000>;
> +              regulator-max-microvolt = <2850000>;
> +              regulator-always-on;
> +            };
> +            vaux2_reg: vaux2 {
> +              regulator-name = "vaux2";
> +              regulator-min-microvolt = <1800000>;
> +              regulator-max-microvolt = <3300000>;
> +              regulator-always-on;
> +            };
> +            vaux33_reg: vaux33 {
> +              regulator-name = "vaux33";
> +              regulator-min-microvolt = <1800000>;
> +              regulator-max-microvolt = <3300000>;
> +              regulator-always-on;
> +            };
> +            vmmc_reg: vmmc {
> +              regulator-name = "vmmc";
> +              regulator-min-microvolt = <1800000>;
> +              regulator-max-microvolt = <3300000>;
> +              regulator-always-on;
> +              regulator-boot-on;
> +            };
> +          };
> +        };
> +    };

  reply	other threads:[~2025-07-08 16:58 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-07-02 22:02 [PATCH] mfd: dt-bindings: Convert TPS65910 to DT schema Shree Ramamoorthy
2025-07-08 16:58 ` Rob Herring [this message]
2025-07-08 19:21   ` Shree Ramamoorthy

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=20250708165827.GA607073-robh@kernel.org \
    --to=robh@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=lee@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m-leonard@ti.com \
    --cc=praneeth@ti.com \
    --cc=rklein@nvidia.com \
    --cc=s-ramamoorthy@ti.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.