[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250903171042.GB2493698-robh@kernel.org>
Date: Wed, 3 Sep 2025 12:10:42 -0500
From: Rob Herring <robh@...nel.org>
To: Jihed Chaibi <jihed.chaibi.dev@...il.com>
Cc: lee@...nel.org, krzk+dt@...nel.org, andreas@...nade.info,
conor+dt@...nel.org, ukleinek@...nel.org,
devicetree@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-pwm@...r.kernel.org, shuah@...nel.org
Subject: Re: [PATCH v5] dt-bindings: mfd: twl: Add missing sub-nodes for
TWL4030 & TWL603x
On Tue, Sep 02, 2025 at 11:29:21PM +0200, Jihed Chaibi wrote:
> Update the main TI TWL-family binding to be self-contained and to fix
> pre-existing validation errors.
>
> Following maintainer feedback, the simple power and PWM bindings are
> now defined directly within this file, and their legacy .txt files
> are removed.
>
> To ensure future patches are bisectable, child nodes whose bindings
> are in other patches (audio, keypad, usb, etc.) are now defined using
> a flexible 'additionalProperties: true' pattern. This removes hard
> dependencies between the MFD and subsystem bindings.
>
> The complete dtbs_check for this binding is clean except for two
> warnings originating from pre-existing bugs in the OMAP DTS files,
> for which fixes have already been submitted separately [1][2].
>
> Signed-off-by: Jihed Chaibi <jihed.chaibi.dev@...il.com>
>
> ---
> Changes in v5:
> - Restructured the entire binding to define properties at the top
> level instead of if/then blocks, per maintainer feedback.
> - Added specific compatible enums for new child nodes instead of a
> generic 'compatible: true'.
> - Set 'unevaluatedProperties: false' for 'pwm' and 'pwmled' nodes to
> enforce strict validation.
> - Expanded 'power' node compatible enum to include all board-specific
> compatible strings (used in existing device trees, e.g. OMAP3-based
> boards) for more complete coverage.
> - Corrected the schema for the 'power' node compatible to properly
> handle single and fallback entries.
>
> Changes in v4:
> - Reworked binding to be independent and bisectable per maintainer
> feedback by using 'additionalProperties: true' for child nodes.
> - Added board-specific compatibles to the 'power' node enum.
> - Added definitions for 'clocks' and 'clock-names' properties.
> - Renamed 'twl6030-usb' child node to 'usb-comparator' to match
> existing Device Tree usage (twl6030.dtsi).
> - Fixed some spelling/grammar erros in the description.
>
> Changes in v3:
> - New patch to consolidate simple bindings (power, pwm) and add
> definitions for all child nodes to fix dtbs_check validation
> errors found in v2.
>
> Changes in v2:
> - This patch is split from larger series [3] per maintainer feedback.
> - Added missing sub-node definitions, resolving dtbs_check errors.
>
> [1] https://lore.kernel.org/all/20250822222530.113520-1-jihed.chaibi.dev@gmail.com/
> [2] https://lore.kernel.org/all/20250822225052.136919-1-jihed.chaibi.dev@gmail.com/
> [3] https://lore.kernel.org/all/20250816021523.167049-1-jihed.chaibi.dev@gmail.com/
> ---
> .../devicetree/bindings/mfd/ti,twl.yaml | 159 +++++++++++++++++-
> .../devicetree/bindings/mfd/twl4030-power.txt | 48 ------
> .../devicetree/bindings/pwm/ti,twl-pwm.txt | 17 --
> .../devicetree/bindings/pwm/ti,twl-pwmled.txt | 17 --
> 4 files changed, 157 insertions(+), 84 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/mfd/twl4030-power.txt
> delete mode 100644 Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt
> delete mode 100644 Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt
>
> diff --git a/Documentation/devicetree/bindings/mfd/ti,twl.yaml b/Documentation/devicetree/bindings/mfd/ti,twl.yaml
> index f162ab60c09..397eed9b628 100644
> --- a/Documentation/devicetree/bindings/mfd/ti,twl.yaml
> +++ b/Documentation/devicetree/bindings/mfd/ti,twl.yaml
> @@ -11,9 +11,9 @@ maintainers:
>
> description: |
> The TWLs are Integrated Power Management Chips.
> - Some version might contain much more analog function like
> + Some versions might contain much more analog functionality like
> USB transceiver or Audio amplifier.
> - These chips are connected to an i2c bus.
> + These chips are connected to an I2C bus.
>
> allOf:
> - if:
> @@ -181,6 +181,12 @@ properties:
> "#clock-cells":
> const: 1
>
> + clocks:
> + maxItems: 1
> +
> + clock-names:
> + const: fck
> +
> charger:
> type: object
> additionalProperties: true
> @@ -198,6 +204,131 @@ properties:
> interrupts:
> maxItems: 1
>
> + audio:
> + type: object
> + additionalProperties: true
blank line
> + properties:
> + compatible:
> + const: ti,twl4030-audio
> +
> + keypad:
> + type: object
> + additionalProperties: true
blank line
> + properties:
> + compatible:
> + const: ti,twl4030-keypad
required:
- compatible
Otherwise, with no compatible you can put anything in the node. Same for
the others with 'additionalProperties: true'
> +
> + pwm:
> + type: object
> + $ref: /schemas/pwm/pwm.yaml#
> + unevaluatedProperties: false
> + description:
> + PWM controllers (PWM1 and PWM2 on TWL4030, PWM0 and PWM1 on TWL6030/32).
blank line
> + properties:
> + compatible:
> + enum:
> + - ti,twl4030-pwm
> + - ti,twl6030-pwm
blank line
> + '#pwm-cells':
> + const: 2
blank line
Same formatting needed elsewhere.
> + required:
> + - compatible
> + - '#pwm-cells'
> +
> + pwmled:
> + type: object
> + $ref: /schemas/pwm/pwm.yaml#
> + unevaluatedProperties: false
> + description:
> + PWM controllers connected to LED terminals (PWMA and PWMB on TWL4030,
> + LED PWM on TWL6030/32, mainly used as charging indicator LED).
> + properties:
> + compatible:
> + enum:
> + - ti,twl4030-pwmled
> + - ti,twl6030-pwmled
> + '#pwm-cells':
> + const: 2
> + required:
> + - compatible
> + - '#pwm-cells'
> +
> + twl4030-usb:
> + type: object
> + additionalProperties: true
> + properties:
> + compatible:
> + const: ti,twl4030-usb
> +
> + usb-comparator:
> + type: object
> + additionalProperties: true
> + properties:
> + compatible:
> + const: ti,twl6030-usb
> +
> + gpio:
> + type: object
> + additionalProperties: true
> + properties:
> + compatible:
> + const: ti,twl4030-gpio
> +
> + power:
> + type: object
> + description:
> + The power management module inside the TWL4030 provides several
> + facilities to control the power resources, including power scripts.
> + For now, the binding only supports the complete shutdown of the
> + system after poweroff.
> + Board-specific compatible strings may be used for platform-specific
> + power configurations.
> + A board-specific compatible string (e.g., ti,twl4030-power-n900) may
> + be paired with a generic fallback (generally for power saving mode).
blank lines between paragraphs and use '>' modifier on 'description'
when you have paragraphs/formatting.
> + additionalProperties: false
> + properties:
> + compatible:
> + oneOf:
> + - enum:
> + - ti,twl4030-power
> + - ti,twl4030-power-reset
> + - ti,twl4030-power-idle
> + - ti,twl4030-power-idle-osc-off
> + # Add all board-specific compatibles for completeness
> + - ti,twl4030-power-omap3-sdp
> + - ti,twl4030-power-omap3-ldp
> + - ti,twl4030-power-omap3-evm
> + - ti,twl4030-power-beagleboard-xm
> + - ti,twl4030-power-n900
> + - items:
> + - enum:
> + - ti,twl4030-power
> + - ti,twl4030-power-reset
> + - ti,twl4030-power-idle
> + - ti,twl4030-power-idle-osc-off
> + # Add all board-specific compatibles for completeness
> + - ti,twl4030-power-omap3-sdp
> + - ti,twl4030-power-omap3-ldp
> + - ti,twl4030-power-omap3-evm
> + - ti,twl4030-power-beagleboard-xm
> + - ti,twl4030-power-n900
> + - enum:
> + # Fallback (for power saving mode)
> + - ti,twl4030-power-idle
> + - ti,twl4030-power-idle-osc-off
> + ti,system-power-controller:
> + type: boolean
> + deprecated: true
> + description:
> + DEPRECATED. The standard 'system-power-controller'
> + property on the parent node should be used instead.
> + ti,use_poweroff:
> + type: boolean
> + deprecated: true
> + description: DEPRECATED, to be removed.
> + required:
> + - compatible
> +
> patternProperties:
> "^regulator-":
> type: object
> @@ -271,6 +402,16 @@ examples:
> compatible = "ti,twl6030-vmmc";
> ti,retain-on-reset;
> };
> +
> + pwm {
> + compatible = "ti,twl6030-pwm";
> + #pwm-cells = <2>;
> + };
> +
> + pwmled {
> + compatible = "ti,twl6030-pwmled";
> + #pwm-cells = <2>;
> + };
> };
> };
>
> @@ -325,6 +466,20 @@ examples:
> watchdog {
> compatible = "ti,twl4030-wdt";
> };
> +
> + power {
> + compatible = "ti,twl4030-power";
> + };
> +
> + pwm {
> + compatible = "ti,twl4030-pwm";
> + #pwm-cells = <2>;
> + };
> +
> + pwmled {
> + compatible = "ti,twl4030-pwmled";
> + #pwm-cells = <2>;
> + };
> };
> };
> ...
> diff --git a/Documentation/devicetree/bindings/mfd/twl4030-power.txt b/Documentation/devicetree/bindings/mfd/twl4030-power.txt
> deleted file mode 100644
> index 3d19963312c..00000000000
> --- a/Documentation/devicetree/bindings/mfd/twl4030-power.txt
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -Texas Instruments TWL family (twl4030) reset and power management module
> -
> -The power management module inside the TWL family provides several facilities
> -to control the power resources, including power scripts. For now, the
> -binding only supports the complete shutdown of the system after poweroff.
> -
> -Required properties:
> -- compatible : must be one of the following
> - "ti,twl4030-power"
> - "ti,twl4030-power-reset"
> - "ti,twl4030-power-idle"
> - "ti,twl4030-power-idle-osc-off"
> -
> -The use of ti,twl4030-power-reset is recommended at least on
> -3530 that needs a special configuration for warm reset to work.
> -
> -When using ti,twl4030-power-idle, the TI recommended configuration
> -for idle modes is loaded to the tlw4030 PMIC.
> -
> -When using ti,twl4030-power-idle-osc-off, the TI recommended
> -configuration is used with the external oscillator being shut
> -down during off-idle. Note that this does not work on all boards
> -depending on how the external oscillator is wired.
> -
> -Optional properties:
> -
> -- ti,system-power-controller: This indicates that TWL4030 is the
> - power supply master of the system. With this flag, the chip will
> - initiate an ACTIVE-to-OFF or SLEEP-to-OFF transition when the
> - system poweroffs.
> -
> -- ti,use_poweroff: Deprecated name for ti,system-power-controller
> -
> -Example:
> -&i2c1 {
> - clock-frequency = <2600000>;
> -
> - twl: twl@48 {
> - reg = <0x48>;
> - interrupts = <7>; /* SYS_NIRQ cascaded to intc */
> - interrupt-parent = <&intc>;
> -
> - twl_power: power {
> - compatible = "ti,twl4030-power";
> - ti,use_poweroff;
> - };
> - };
> -};
> diff --git a/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt b/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt
> deleted file mode 100644
> index d97ca1964e9..00000000000
> --- a/Documentation/devicetree/bindings/pwm/ti,twl-pwm.txt
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -Texas Instruments TWL series PWM drivers
> -
> -Supported PWMs:
> -On TWL4030 series: PWM1 and PWM2
> -On TWL6030 series: PWM0 and PWM1
> -
> -Required properties:
> -- compatible: "ti,twl4030-pwm" or "ti,twl6030-pwm"
> -- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
> - the cells format.
> -
> -Example:
> -
> -twl_pwm: pwm {
> - compatible = "ti,twl6030-pwm";
> - #pwm-cells = <2>;
> -};
> diff --git a/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt b/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt
> deleted file mode 100644
> index 31ca1b032ef..00000000000
> --- a/Documentation/devicetree/bindings/pwm/ti,twl-pwmled.txt
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -Texas Instruments TWL series PWM drivers connected to LED terminals
> -
> -Supported PWMs:
> -On TWL4030 series: PWMA and PWMB (connected to LEDA and LEDB terminals)
> -On TWL6030 series: LED PWM (mainly used as charging indicator LED)
> -
> -Required properties:
> -- compatible: "ti,twl4030-pwmled" or "ti,twl6030-pwmled"
> -- #pwm-cells: should be 2. See pwm.yaml in this directory for a description of
> - the cells format.
> -
> -Example:
> -
> -twl_pwmled: pwmled {
> - compatible = "ti,twl6030-pwmled";
> - #pwm-cells = <2>;
> -};
> --
> 2.39.5
>
Powered by blists - more mailing lists