.../devicetree/bindings/mfd/ti,twl6040.yaml | 149 ++++++++++++++++++ .../devicetree/bindings/mfd/twl6040.txt | 67 -------- 2 files changed, 149 insertions(+), 67 deletions(-) create mode 100644 Documentation/devicetree/bindings/mfd/ti,twl6040.yaml delete mode 100644 Documentation/devicetree/bindings/mfd/twl6040.txt
Convert the legacy TXT binding for the TWL6040 MFD to the modern YAML
DT schema format. This adds formal validation and improves documentation
for the TWL6040/TWL6041 audio codec, which provides audio, vibra, and GPO
functionality on OMAP4+ platforms.
The unused 'twl6040,audpwron-gpio' property has been dropped from
the schema as it is not used by the driver.
Signed-off-by: Jihed Chaibi <jihed.chaibi.dev@gmail.com>
---
.../devicetree/bindings/mfd/ti,twl6040.yaml | 149 ++++++++++++++++++
.../devicetree/bindings/mfd/twl6040.txt | 67 --------
2 files changed, 149 insertions(+), 67 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mfd/ti,twl6040.yaml
delete mode 100644 Documentation/devicetree/bindings/mfd/twl6040.txt
diff --git a/Documentation/devicetree/bindings/mfd/ti,twl6040.yaml b/Documentation/devicetree/bindings/mfd/ti,twl6040.yaml
new file mode 100644
index 000000000..c8922fce4
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/ti,twl6040.yaml
@@ -0,0 +1,149 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/ti,twl6040.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Texas Instruments TWL6040/TWL6041 Audio Codec
+
+maintainers:
+ - Peter Ujfalusi <peter.ujfalusi@gmail.com>
+
+description:
+ The TWL6040s are 8-channel high quality low-power audio codecs providing
+ audio, vibra and GPO functionality on OMAP4+ platforms.
+ They are connected to the host processor via i2c for commands, McPDM for
+ audio data and commands.
+
+properties:
+ compatible:
+ enum:
+ - ti,twl6040
+ - ti,twl6041
+
+ reg:
+ const: 0x4b
+
+ interrupts:
+ maxItems: 1
+
+ gpio-controller: true
+
+ '#gpio-cells':
+ const: 1
+
+ '#clock-cells':
+ description: TWL6040 is a provider of PDMCLK which is used by McPDM.
+ const: 0
+
+ vio-supply:
+ description: Regulator for the VIO supply.
+
+ v2v1-supply:
+ description: Regulator for the V2V1 supply.
+
+ enable-active-high:
+ type: boolean
+ description: If present, powers on the device during boot.
+
+ clocks:
+ minItems: 1
+ maxItems: 2
+
+ clock-names:
+ minItems: 1
+ maxItems: 2
+ items:
+ enum: [clk32k, mclk]
+
+ # Vibra functionality :
+
+ vddvibl-supply:
+ description: Regulator for the left vibra motor supply.
+
+ vddvibr-supply:
+ description: Regulator for the right vibra motor supply.
+
+ vibra:
+ type: object
+ description: Node for vibra motor configuration parameters.
+ properties:
+ ti,vibldrv-res:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Resistance parameter for the left driver.
+
+ ti,vibrdrv-res:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Resistance parameter for the right driver.
+
+ ti,viblmotor-res:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Resistance parameter for the left motor.
+
+ ti,vibrmotor-res:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Resistance parameter for the right motor.
+
+ vddvibl_uV:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Optional override for the VDDVIBL default voltage (in uV).
+
+ vddvibr_uV:
+ $ref: /schemas/types.yaml#/definitions/uint32
+ description: Optional override for the VDDVIBR default voltage (in uV).
+ required:
+ - ti,vibldrv-res
+ - ti,vibrdrv-res
+ - ti,viblmotor-res
+ - ti,vibrmotor-res
+ additionalProperties: false
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - gpio-controller
+ - '#gpio-cells'
+ - '#clock-cells'
+ - vio-supply
+ - v2v1-supply
+ - vddvibl-supply
+ - vddvibr-supply
+ - vibra
+
+additionalProperties: false
+
+examples:
+ - |
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ twl6040: twl@4b {
+ compatible = "ti,twl6040";
+ reg = <0x4b>;
+
+ interrupts = <0 119 4>;
+ interrupt-parent = <&gic>;
+
+ gpio-controller;
+ #gpio-cells = <1>;
+ #clock-cells = <0>;
+
+ vio-supply = <&v1v8>;
+ v2v1-supply = <&v2v1>;
+ enable-active-high;
+
+ /* regulators for vibra motor */
+ vddvibl-supply = <&vbat>;
+ vddvibr-supply = <&vbat>;
+
+ vibra {
+ /* Vibra driver, motor resistance parameters */
+ ti,vibldrv-res = <8>;
+ ti,vibrdrv-res = <3>;
+ ti,viblmotor-res = <10>;
+ ti,vibrmotor-res = <10>;
+ };
+ };
+ };
diff --git a/Documentation/devicetree/bindings/mfd/twl6040.txt b/Documentation/devicetree/bindings/mfd/twl6040.txt
deleted file mode 100644
index dfd8683ed..000000000
--- a/Documentation/devicetree/bindings/mfd/twl6040.txt
+++ /dev/null
@@ -1,67 +0,0 @@
-Texas Instruments TWL6040 family
-
-The TWL6040s are 8-channel high quality low-power audio codecs providing audio,
-vibra and GPO functionality on OMAP4+ platforms.
-They are connected to the host processor via i2c for commands, McPDM for audio
-data and commands.
-
-Required properties:
-- compatible : "ti,twl6040" for twl6040, "ti,twl6041" for twl6041
-- reg: must be 0x4b for i2c address
-- interrupts: twl6040 has one interrupt line connecteded to the main SoC
-- gpio-controller:
-- #gpio-cells = <1>: twl6040 provides GPO lines.
-- #clock-cells = <0>; twl6040 is a provider of pdmclk which is used by McPDM
-- twl6040,audpwron-gpio: Power on GPIO line for the twl6040
-
-- vio-supply: Regulator for the twl6040 VIO supply
-- v2v1-supply: Regulator for the twl6040 V2V1 supply
-
-Optional properties, nodes:
-- enable-active-high: To power on the twl6040 during boot.
-- clocks: phandle to the clk32k and/or to mclk clock provider
-- clock-names: Must be "clk32k" for the 32K clock and "mclk" for the MCLK.
-
-Vibra functionality
-Required properties:
-- vddvibl-supply: Regulator for the left vibra motor
-- vddvibr-supply: Regulator for the right vibra motor
-- vibra { }: Configuration section for vibra parameters containing the following
- properties:
-- ti,vibldrv-res: Resistance parameter for left driver
-- ti,vibrdrv-res: Resistance parameter for right driver
-- ti,viblmotor-res: Resistance parameter for left motor
-- ti,viblmotor-res: Resistance parameter for right motor
-
-Optional properties within vibra { } section:
-- vddvibl_uV: If the vddvibl default voltage need to be changed
-- vddvibr_uV: If the vddvibr default voltage need to be changed
-
-Example:
-&i2c1 {
- twl6040: twl@4b {
- compatible = "ti,twl6040";
-
- interrupts = <0 119 4>;
- interrupt-parent = <&gic>;
- twl6040,audpwron-gpio = <&gpio4 31 0>;
-
- vio-supply = <&v1v8>;
- v2v1-supply = <&v2v1>;
- enable-active-high;
-
- /* regulators for vibra motor */
- vddvibl-supply = <&vbat>;
- vddvibr-supply = <&vbat>;
-
- vibra {
- /* Vibra driver, motor resistance parameters */
- ti,vibldrv-res = <8>;
- ti,vibrdrv-res = <3>;
- ti,viblmotor-res = <10>;
- ti,vibrmotor-res = <10>;
- };
- };
-};
-
-/include/ "twl6040.dtsi"
--
2.39.5
On 16/08/2025 04:33, Jihed Chaibi wrote: > Convert the legacy TXT binding for the TWL6040 MFD to the modern YAML > DT schema format. This adds formal validation and improves documentation > for the TWL6040/TWL6041 audio codec, which provides audio, vibra, and GPO > functionality on OMAP4+ platforms. > > The unused 'twl6040,audpwron-gpio' property has been dropped from > the schema as it is not used by the driver. > > Signed-off-by: Jihed Chaibi <jihed.chaibi.dev@gmail.com> > --- > .../devicetree/bindings/mfd/ti,twl6040.yaml | 149 ++++++++++++++++++ > .../devicetree/bindings/mfd/twl6040.txt | 67 -------- That's a v3? Where is the changelog and rest of the patches? You need to keep versioning and explain what was happening with the patch (and why). > 2 files changed, 149 insertions(+), 67 deletions(-) > create mode 100644 Documentation/devicetree/bindings/mfd/ti,twl6040.yaml > delete mode 100644 Documentation/devicetree/bindings/mfd/twl6040.txt > > diff --git a/Documentation/devicetree/bindings/mfd/ti,twl6040.yaml b/Documentation/devicetree/bindings/mfd/ti,twl6040.yaml > new file mode 100644 > index 000000000..c8922fce4 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mfd/ti,twl6040.yaml > @@ -0,0 +1,149 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mfd/ti,twl6040.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: Texas Instruments TWL6040/TWL6041 Audio Codec > + > +maintainers: > + - Peter Ujfalusi <peter.ujfalusi@gmail.com> > + > +description: > + The TWL6040s are 8-channel high quality low-power audio codecs providing > + audio, vibra and GPO functionality on OMAP4+ platforms. > + They are connected to the host processor via i2c for commands, McPDM for > + audio data and commands. > + > +properties: > + compatible: > + enum: > + - ti,twl6040 > + - ti,twl6041 > + > + reg: > + const: 0x4b > + > + interrupts: > + maxItems: 1 > + > + gpio-controller: true > + > + '#gpio-cells': > + const: 1 > + > + '#clock-cells': > + description: TWL6040 is a provider of PDMCLK which is used by McPDM. > + const: 0 > + > + vio-supply: > + description: Regulator for the VIO supply. > + > + v2v1-supply: > + description: Regulator for the V2V1 supply. > + > + enable-active-high: > + type: boolean > + description: If present, powers on the device during boot. > + > + clocks: > + minItems: 1 > + maxItems: 2 Why flexible size? Old binding did not suggest that. Any differences should be explained in commit msg. > + > + clock-names: > + minItems: 1 > + maxItems: 2 > + items: > + enum: [clk32k, mclk] Why is this flexible instead of list of items? > + > + # Vibra functionality : > + > + vddvibl-supply: > + description: Regulator for the left vibra motor supply. > + > + vddvibr-supply: > + description: Regulator for the right vibra motor supply. > + > + vibra: > + type: object > + description: Node for vibra motor configuration parameters. > + properties: > + ti,vibldrv-res: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Resistance parameter for the left driver. > + > + ti,vibrdrv-res: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Resistance parameter for the right driver. > + > + ti,viblmotor-res: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Resistance parameter for the left motor. > + > + ti,vibrmotor-res: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Resistance parameter for the right motor. > + > + vddvibl_uV: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Optional override for the VDDVIBL default voltage (in uV). > + > + vddvibr_uV: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: Optional override for the VDDVIBR default voltage (in uV). > + required: > + - ti,vibldrv-res > + - ti,vibrdrv-res > + - ti,viblmotor-res > + - ti,vibrmotor-res > + additionalProperties: false > + > +required: > + - compatible > + - reg > + - interrupts > + - gpio-controller > + - '#gpio-cells' > + - '#clock-cells' > + - vio-supply > + - v2v1-supply > + - vddvibl-supply > + - vddvibr-supply > + - vibra > + > +additionalProperties: false > + > +examples: > + - | > + i2c { > + #address-cells = <1>; > + #size-cells = <0>; > + > + twl6040: twl@4b { Node names should be generic. See also an explanation and list of examples (not exhaustive) in DT specification: https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation audio-codec? > + compatible = "ti,twl6040"; > + reg = <0x4b>; > + > + interrupts = <0 119 4>; Use standard defines. <0> also feels wrong here, that's I2C. > + interrupt-parent = <&gic>; > + > + gpio-controller; > + #gpio-cells = <1>; > + #clock-cells = <0>; > + Best regards, Krzysztof
© 2016 - 2025 Red Hat, Inc.