Unverified Commit 80404e4e authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Mark Brown
Browse files

ASoC: dt-bindings: wlf,wm8994: Convert to dtschema



Convert the Wolfson WM1811/WM8994/WM8958 audio codecs bindings to DT
schema.

Changes against original binding:
1. Add missing LDO1VDD-supply and LDO2VDD-supply.
2. Use "gpios" suffix for wlf,ldo1ena and wlf,ldo2ena (Linux kernel's
   gpiolib already looks for both variants).
3. Do not require AVDD1-supply and DCVDD-supply, because at least on
   Arndale board with Exynos5250 these are being supplied by internal
   LDOs.

Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Acked-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
Link: https://lore.kernel.org/r/20230322193541.827291-1-krzysztof.kozlowski@linaro.org


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 056db840
Loading
Loading
Loading
Loading
+194 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/wlf,wm8994.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Wolfson WM1811/WM8994/WM8958 audio codecs

maintainers:
  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
  - patches@opensource.cirrus.com

description: |
  These devices support both I2C and SPI (configured with pin strapping on the
  board).

  Pins on the device (for linking into audio routes):
  IN1LN, IN1LP, IN2LN, IN2LP:VXRN, IN1RN, IN1RP, IN2RN, IN2RP:VXRP, SPKOUTLP,
  SPKOUTLN, SPKOUTRP, SPKOUTRN, HPOUT1L, HPOUT1R, HPOUT2P, HPOUT2N, LINEOUT1P,
  LINEOUT1N, LINEOUT2P, LINEOUT2N.

properties:
  compatible:
    enum:
      - wlf,wm1811
      - wlf,wm8994
      - wlf,wm8958

  reg:
    maxItems: 1

  clocks:
    minItems: 1
    maxItems: 2

  clock-names:
    minItems: 1
    items:
      - const: MCLK1
      - const: MCLK2

  gpio-controller: true

  '#gpio-cells':
    const: 2

  interrupts:
    maxItems: 1

  interrupt-controller: true

  '#interrupt-cells':
    const: 2
    description:
      The first cell is the IRQ number. The second cell is the flags, encoded
      as the trigger masks.

  AVDD1-supply: true
  AVDD2-supply: true
  CPVDD-supply: true
  DBVDD-supply: true
  DBVDD1-supply: true
  DBVDD2-supply: true
  DBVDD3-supply: true
  DCVDD-supply: true
  LDO1VDD-supply: true
  LDO2VDD-supply: true
  SPKVDD1-supply: true
  SPKVDD2-supply: true

  '#sound-dai-cells':
    const: 0

  wlf,gpio-cfg:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    maxItems: 11
    description:
      A list of GPIO configuration register values. If absent, no configuration
      of these registers is performed. If any value is over 0xffff then the
      register will be left as default. If present 11 values must be supplied.

  wlf,micbias-cfg:
    $ref: /schemas/types.yaml#/definitions/uint32-array
    maxItems: 2
    description:
      Two MICBIAS register values for WM1811 or WM8958.  If absent the register
      defaults will be used.

  wlf,ldo1ena-gpios:
    maxItems: 1
    description:
      Control of LDO1ENA input to device.

  wlf,ldo2ena-gpios:
    maxItems: 1
    description:
      Control of LDO2ENA input to device.

  wlf,lineout1-se:
    type: boolean
    description:
      LINEOUT1 is in single ended mode.

  wlf,lineout2-se:
    type: boolean
    description:
      INEOUT2 is in single ended mode.

  wlf,lineout1-feedback:
    type: boolean
    description:
      LINEOUT1 has common mode feedback connected.

  wlf,lineout2-feedback:
    type: boolean
    description:
      LINEOUT2 has common mode feedback connected.

  wlf,ldoena-always-driven:
    type: boolean
    description:
      LDOENA is always driven.

  wlf,spkmode-pu:
    type: boolean
    description:
      Enable the internal pull-up resistor on the SPKMODE pin.

  wlf,csnaddr-pd:
    type: boolean
    description:
      Enable the internal pull-down resistor on the CS/ADDR pin.

required:
  - compatible
  - reg
  - AVDD2-supply
  - CPVDD-supply
  - SPKVDD1-supply
  - SPKVDD2-supply

allOf:
  - $ref: dai-common.yaml#
  - if:
      properties:
        compatible:
          enum:
            - wlf,wm1811
            - wlf,wm8958
    then:
      properties:
        DBVDD-supply: false
        LDO2VDD-supply: false
      required:
        - DBVDD1-supply
        - DBVDD2-supply
        - DBVDD3-supply
    else:
      properties:
        DBVDD1-supply: false
        DBVDD2-supply: false
        DBVDD3-supply: false
      required:
        - DBVDD-supply

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        audio-codec@1a {
            compatible = "wlf,wm1811";
            reg = <0x1a>;
            clocks = <&i2s0 0>;
            clock-names = "MCLK1";

            AVDD2-supply = <&main_dc_reg>;
            CPVDD-supply = <&main_dc_reg>;
            DBVDD1-supply = <&main_dc_reg>;
            DBVDD2-supply = <&main_dc_reg>;
            DBVDD3-supply = <&main_dc_reg>;
            LDO1VDD-supply = <&main_dc_reg>;
            SPKVDD1-supply = <&main_dc_reg>;
            SPKVDD2-supply = <&main_dc_reg>;

            wlf,ldo1ena-gpios = <&gpb0 0 GPIO_ACTIVE_HIGH>;
            wlf,ldo2ena-gpios = <&gpb0 1 GPIO_ACTIVE_HIGH>;
        };
    };
+0 −112
Original line number Diff line number Diff line
WM1811/WM8994/WM8958 audio CODEC

These devices support both I2C and SPI (configured with pin strapping
on the board).

Required properties:

  - compatible : One of "wlf,wm1811", "wlf,wm8994" or "wlf,wm8958".

  - reg : the I2C address of the device for I2C, the chip select
          number for SPI.

  - gpio-controller : Indicates this device is a GPIO controller.
  - #gpio-cells : Must be 2. The first cell is the pin number and the
    second cell is used to specify optional parameters (currently unused).

  - power supplies for the device, as covered in
    Documentation/devicetree/bindings/regulator/regulator.txt, depending
    on compatible:
    - for wlf,wm1811 and wlf,wm8958:
      AVDD1-supply, AVDD2-supply, DBVDD1-supply, DBVDD2-supply, DBVDD3-supply,
      DCVDD-supply, CPVDD-supply, SPKVDD1-supply, SPKVDD2-supply
    - for wlf,wm8994:
      AVDD1-supply, AVDD2-supply, DBVDD-supply, DCVDD-supply, CPVDD-supply,
      SPKVDD1-supply, SPKVDD2-supply

Optional properties:

  - interrupts : The interrupt line the IRQ signal for the device is
    connected to.  This is optional, if it is not connected then none
    of the interrupt related properties should be specified.
  - interrupt-controller : These devices contain interrupt controllers
    and may provide interrupt services to other devices if they have an
    interrupt line connected.
  - #interrupt-cells: the number of cells to describe an IRQ, this should be 2.
    The first cell is the IRQ number.
    The second cell is the flags, encoded as the trigger masks from
    Documentation/devicetree/bindings/interrupt-controller/interrupts.txt

  - clocks : A list of up to two phandle and clock specifier pairs
  - clock-names : A list of clock names sorted in the same order as clocks.
                  Valid clock names are "MCLK1" and "MCLK2".

  - wlf,gpio-cfg : A list of GPIO configuration register values. If absent,
    no configuration of these registers is performed. If any value is
    over 0xffff then the register will be left as default. If present 11
    values must be supplied.

  - wlf,micbias-cfg : Two MICBIAS register values for WM1811 or
    WM8958.  If absent the register defaults will be used.

  - wlf,ldo1ena : GPIO specifier for control of LDO1ENA input to device.
  - wlf,ldo2ena : GPIO specifier for control of LDO2ENA input to device.

  - wlf,lineout1-se : If present LINEOUT1 is in single ended mode.
  - wlf,lineout2-se : If present LINEOUT2 is in single ended mode.

  - wlf,lineout1-feedback : If present LINEOUT1 has common mode feedback
    connected.
  - wlf,lineout2-feedback : If present LINEOUT2 has common mode feedback
    connected.

  - wlf,ldoena-always-driven : If present LDOENA is always driven.

  - wlf,spkmode-pu : If present enable the internal pull-up resistor on
    the SPKMODE pin.

  - wlf,csnaddr-pd : If present enable the internal pull-down resistor on
    the CS/ADDR pin.

Pins on the device (for linking into audio routes):

  * IN1LN
  * IN1LP
  * IN2LN
  * IN2LP:VXRN
  * IN1RN
  * IN1RP
  * IN2RN
  * IN2RP:VXRP
  * SPKOUTLP
  * SPKOUTLN
  * SPKOUTRP
  * SPKOUTRN
  * HPOUT1L
  * HPOUT1R
  * HPOUT2P
  * HPOUT2N
  * LINEOUT1P
  * LINEOUT1N
  * LINEOUT2P
  * LINEOUT2N

Example:

wm8994: codec@1a {
	compatible = "wlf,wm8994";
	reg = <0x1a>;

	gpio-controller;
	#gpio-cells = <2>;

	lineout1-se;

	AVDD1-supply = <&regulator>;
	AVDD2-supply = <&regulator>;
	CPVDD-supply = <&regulator>;
	DBVDD-supply = <&regulator>;
	DCVDD-supply = <&regulator>;
	SPKVDD1-supply = <&regulator>;
	SPKVDD2-supply = <&regulator>;
};