dt-bindings: mfd: twl: Add missing sub-nodes for TWL4030 & TWL603x

Update the main TI TWL-family binding to be self-contained and to fix
pre-existing validation errors.

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].

Reviewed-by: Rob Herring <robh@kernel.org>
Acked-by: Uwe Kleine-König <ukleinek@kernel.org>
Signed-off-by: Jihed Chaibi <jihed.chaibi.dev@gmail.com>
Reviewed-by: Andreas Kemnade <andreas@kemnade.info>
Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
Jihed Chaibi 2025-09-14 21:25:14 +02:00 committed by Lee Jones
parent 354f31e9d2
commit 02dde2c4c3
4 changed files with 272 additions and 127 deletions

View File

@ -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 functions like
USB transceiver or Audio amplifier.
These chips are connected to an i2c bus.
These chips are connected to an I2C bus.
allOf:
- if:
@ -49,33 +49,14 @@ allOf:
ti,retain-on-reset: false
properties:
madc:
type: object
$ref: /schemas/iio/adc/ti,twl4030-madc.yaml
unevaluatedProperties: false
charger:
type: object
$ref: /schemas/power/supply/twl4030-charger.yaml
unevaluatedProperties: false
pwrbutton:
type: object
additionalProperties: false
properties:
compatible:
const: ti,twl4030-pwrbutton
interrupts:
items:
- items:
const: 8
gpadc: false
usb-comparator: false
watchdog:
type: object
additionalProperties: false
properties:
compatible:
const: ti,twl4030-wdt
- if:
properties:
compatible:
@ -106,15 +87,30 @@ allOf:
properties:
charger:
type: object
properties:
compatible:
const: ti,twl6030-charger
$ref: /schemas/power/supply/ti,twl6030-charger.yaml
unevaluatedProperties: false
gpadc:
type: object
properties:
compatible:
const: ti,twl6030-gpadc
pwrbutton: false
madc: false
watchdog: false
audio: false
keypad: false
twl4030-usb: false
gpio: false
power: false
- if:
properties:
compatible:
@ -142,23 +138,36 @@ allOf:
properties:
charger:
type: object
properties:
compatible:
items:
- const: ti,twl6032-charger
- const: ti,twl6030-charger
$ref: /schemas/power/supply/ti,twl6030-charger.yaml
unevaluatedProperties: false
gpadc:
type: object
properties:
compatible:
const: ti,twl6032-gpadc
pwrbutton: false
madc: false
watchdog: false
audio: false
keypad: false
twl4030-usb: false
gpio: false
power: false
properties:
compatible:
description:
TWL4030 for integrated power-management/audio CODEC device used in OMAP3
based boards
description: >
TWL4030 for integrated power-management/audio CODEC device used in
OMAP3 based boards.
TWL6030/32 for integrated power-management used in OMAP4 based boards
enum:
- ti,twl4030
@ -181,28 +190,221 @@ properties:
"#clock-cells":
const: 1
clocks:
maxItems: 1
clock-names:
const: fck
charger:
type: object
additionalProperties: true
properties:
compatible: true
required:
- compatible
rtc:
type: object
additionalProperties: false
properties:
compatible:
const: ti,twl4030-rtc
interrupts:
maxItems: 1
madc:
type: object
$ref: /schemas/iio/adc/ti,twl4030-madc.yaml
unevaluatedProperties: false
pwrbutton:
type: object
additionalProperties: false
properties:
compatible:
const: ti,twl4030-pwrbutton
interrupts:
items:
- items:
const: 8
watchdog:
type: object
additionalProperties: false
properties:
compatible:
const: ti,twl4030-wdt
audio:
type: object
additionalProperties: true
properties:
compatible:
const: ti,twl4030-audio
required:
- compatible
keypad:
type: object
additionalProperties: true
properties:
compatible:
const: ti,twl4030-keypad
required:
- compatible
twl4030-usb:
type: object
additionalProperties: true
properties:
compatible:
const: ti,twl4030-usb
required:
- compatible
gpio:
type: object
additionalProperties: true
properties:
compatible:
const: ti,twl4030-gpio
required:
- compatible
power:
type: object
additionalProperties: false
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-omap3-evm)
may be paired with a generic fallback (generally for power saving mode).
properties:
compatible:
oneOf:
# Case 1: A single compatible string is provided.
- enum:
- ti,twl4030-power
- ti,twl4030-power-reset
- ti,twl4030-power-idle
- ti,twl4030-power-idle-osc-off
- ti,twl4030-power-omap3-sdp
- ti,twl4030-power-omap3-ldp
- ti,twl4030-power-omap3-evm
# Case 2: The specific, valid fallback for 'idle-osc-off'.
- items:
- const: ti,twl4030-power-idle-osc-off
- const: ti,twl4030-power-idle
# Case 3: The specific, valid fallback for 'omap3-evm'.
- items:
- const: ti,twl4030-power-omap3-evm
- const: ti,twl4030-power-idle
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
gpadc:
type: object
$ref: /schemas/iio/adc/ti,twl6030-gpadc.yaml
unevaluatedProperties: false
properties:
compatible: true
usb-comparator:
type: object
additionalProperties: true
properties:
compatible:
const: ti,twl6030-usb
required:
- compatible
pwm:
type: object
$ref: /schemas/pwm/pwm.yaml#
unevaluatedProperties: false
description:
PWM controllers (PWM1 and PWM2 on TWL4030, PWM0 and PWM1 on TWL6030/32).
properties:
compatible:
enum:
- ti,twl4030-pwm
- ti,twl6030-pwm
'#pwm-cells':
const: 2
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'
patternProperties:
"^regulator-":
type: object
unevaluatedProperties: false
$ref: /schemas/regulator/regulator.yaml
properties:
compatible: true
regulator-initial-mode:
@ -211,12 +413,13 @@ patternProperties:
# with low power consumption with low load current capability
- 0x0e # Active mode, the regulator can deliver its nominal output
# voltage with full-load current capability
ti,retain-on-reset:
description:
Does not turn off the supplies during warm
reset. Could be needed for VMMC, as TWL6030
reset sequence for this signal does not comply
with the SD specification.
description: >
Does not turn off the supplies during warm reset.
Could be needed for VMMC, as TWL6030 reset sequence for
this signal does not comply with the SD specification.
type: boolean
unevaluatedProperties: false
@ -271,6 +474,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 +538,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>;
};
};
};
...

View File

@ -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;
};
};
};

View File

@ -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>;
};

View File

@ -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>;
};