dt-bindings: mfd: Convert TI TWL6040 to DT schema

Convert the Texas Instruments TWL6040 audio codecs family bindings to DT
schema.

During the conversion, the following updates were made:
- Changed 'twl6040,audpwron-gpio' to 'ti,audpwron-gpio', which was
  misnamed in the old txt binding.
- Made 'gpio-controller', '#gpio-cells', and 'ti,audpwron-gpio' optional
  because modern platforms do not require them.
- Renamed the vibra 'vddvibl_uV'/'vddvibr_uV' properties to
  'ti,vddvibl-uV'/'ti,vddvibr-uV', the names actually read by the
  twl6040-vibra driver.
- Required 'vddvibl-supply' and 'vddvibr-supply' when the 'vibra' child
  node is present, since the twl6040-vibra driver unconditionally
  requests both.

Signed-off-by: Eduard Bostina <egbostina@gmail.com>
Reviewed-by: Rob Herring (Arm) <robh@kernel.org>
Link: https://patch.msgid.link/20260905215234.454266-1-egbostina@gmail.com
Signed-off-by: Lee Jones <lee@kernel.org>
This commit is contained in:
Eduard Bostina 2026-09-05 21:52:34 +00:00 committed by Lee Jones
parent 86bcfdc6f1
commit 9b34455435
2 changed files with 156 additions and 67 deletions

View File

@ -0,0 +1,156 @@
# 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 family audio codec
maintainers:
- Eduard Bostina <egbostina@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":
const: 0
ti,audpwron-gpio:
maxItems: 1
description: Power on GPIO line for the twl6040
vio-supply:
description: Regulator for the twl6040 VIO supply
v2v1-supply:
description: Regulator for the twl6040 V2V1 supply
enable-active-high:
type: boolean
description: To power on the twl6040 during boot.
clocks:
minItems: 1
maxItems: 2
clock-names:
minItems: 1
maxItems: 2
items:
enum:
- clk32k
- mclk
vddvibl-supply:
description: Regulator for the left vibra motor
vddvibr-supply:
description: Regulator for the right vibra motor
vibra:
type: object
additionalProperties: false
properties:
ti,vibldrv-res:
$ref: /schemas/types.yaml#/definitions/uint32
description: Resistance parameter for left driver
ti,vibrdrv-res:
$ref: /schemas/types.yaml#/definitions/uint32
description: Resistance parameter for right driver
ti,viblmotor-res:
$ref: /schemas/types.yaml#/definitions/uint32
description: Resistance parameter for left motor
ti,vibrmotor-res:
$ref: /schemas/types.yaml#/definitions/uint32
description: Resistance parameter for right motor
ti,vddvibl-uV:
$ref: /schemas/types.yaml#/definitions/uint32
description: vddvibl default voltage if it needs to be changed
ti,vddvibr-uV:
$ref: /schemas/types.yaml#/definitions/uint32
description: vddvibr default voltage if it needs to be changed
required:
- ti,vibldrv-res
- ti,vibrdrv-res
- ti,viblmotor-res
- ti,vibrmotor-res
required:
- compatible
- reg
- interrupts
- "#clock-cells"
- vio-supply
- v2v1-supply
allOf:
- if:
required:
- vibra
then:
required:
- vddvibl-supply
- vddvibr-supply
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
audio-codec@4b {
compatible = "ti,twl6040";
reg = <0x4b>;
interrupts = <0 119 IRQ_TYPE_LEVEL_HIGH>;
interrupt-parent = <&gic>;
gpio-controller;
#gpio-cells = <1>;
#clock-cells = <0>;
ti,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 {
ti,vibldrv-res = <8>;
ti,vibrdrv-res = <3>;
ti,viblmotor-res = <10>;
ti,vibrmotor-res = <10>;
};
};
};

View File

@ -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"