Commit 2cb80529 authored by Charles Keepax's avatar Charles Keepax Committed by Rob Herring
Browse files

mfd: madera: Move binding over to dtschema



Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.cirrus.com>
[robh: Drop $ref on *-supply]
Signed-off-by: default avatarRob Herring <robh@kernel.org>
parent 067243ba
Loading
Loading
Loading
Loading
+299 −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/mfd/cirrus,madera.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Cirrus Logic Madera class audio CODECs Multi-Functional Device

maintainers:
  - patches@opensource.cirrus.com

description: |
  These devices are audio SoCs with extensive digital capabilities and a range
  of analogue I/O.

  See also the child driver bindings in:

    bindings/pinctrl/cirrus,madera.yaml
    bindings/regulator/wlf,arizona.yaml
    bindings/sound/cirrus,madera.yaml

allOf:
  - $ref: /schemas/pinctrl/cirrus,madera.yaml#
  - $ref: /schemas/regulator/wlf,arizona.yaml#
  - $ref: /schemas/sound/cirrus,madera.yaml#
  - if:
      properties:
        compatible:
          contains:
            enum:
              - cirrus,cs47l85
              - wlf,wm1840
    then:
      properties:
        SPKVDDL-supply:
          description:
            Left speaker driver power supply.

        SPKVDDR-supply:
          description:
            Right speaker driver power supply.

      required:
        - SPKVDDL-supply
        - SPKVDDR-supply
    else:
      required:
        - DCVDD-supply
  - if:
      properties:
        compatible:
          contains:
            enum:
              - cirrus,cs47l15
              - cirrus,cs47l35
    then:
      properties:
        SPKVDD-supply:
          description:
            Mono speaker driver power supply.

      required:
        - SPKVDD-supply
  - if:
      properties:
        compatible:
          contains:
            enum:
              - cirrus,cs47l35
              - cirrus,cs47l85
              - cirrus,cs47l90
              - cirrus,cs47l91
              - wlf,wm1840
    then:
      properties:
        DBVDD2-supply:
          description:
            Databus power supply.

      required:
        - DBVDD2-supply
  - if:
      properties:
        compatible:
          contains:
            enum:
              - cirrus,cs47l85
              - cirrus,cs47l90
              - cirrus,cs47l91
              - wlf,wm1840
    then:
      properties:
        DBVDD3-supply:
          description:
            Databus power supply.

        DBVDD4-supply:
          description:
            Databus power supply.
  - if:
     properties:
       compatible:
         contains:
           enum:
             - cirrus,cs47l15
    then:
      required:
        - MICVDD-supply
    else:
      properties:
        CPVDD2-supply:
          description:
            Secondary charge pump power supply.

      required:
        - CPVDD2-supply

properties:
  compatible:
    enum:
      - cirrus,cs47l15
      - cirrus,cs47l35
      - cirrus,cs47l85
      - cirrus,cs47l90
      - cirrus,cs47l91
      - cirrus,cs42l92
      - cirrus,cs47l92
      - cirrus,cs47l93
      - cirrus,wm1840

  reg:
    maxItems: 1

  gpio-controller: true

  '#gpio-cells':
    description:
      The first cell is the pin number. The second cell is reserved for
      future use and must be zero
    const: 2

  interrupt-controller: true

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

  interrupts:
    maxItems: 1

  reset-gpios:
    description:
      One entry specifying the GPIO controlling /RESET.  As defined in
      bindings/gpio.txt.  Although optional, it is strongly recommended
      to use a hardware reset.
    maxItems: 1

  clocks:
    description:
      Should reference the clocks supplied on MCLK1, MCLK2 and MCLK3.
    minItems: 1
    maxItems: 3

  clock-names:
    description: |
      May contain up to three strings:
        "mclk1" For the clock supplied on MCLK1, recommended to be a
                high quality audio reference clock.
        "mclk2" For the clock supplied on MCLK2, required to be an
                always on 32k clock.
        "mclk3" For the clock supplied on MCLK3.
    oneOf:
      - items:
        - const: mclk1
      - items:
        - const: mclk2
      - items:
        - const: mclk3
      - items:
        - const: mclk1
        - const: mclk2
      - items:
        - const: mclk1
        - const: mclk3
      - items:
        - const: mclk2
        - const: mclk3
      - items:
        - const: mclk1
        - const: mclk2
        - const: mclk3

  AVDD-supply:
    description:
      Analogue power supply.

  DBVDD1-supply:
    description:
      Databus power supply.

  CPVDD1-supply:
    description:
      Charge pump power supply.

  DCVDD-supply:
    description:
      Digital power supply, optional on CS47L85, WM1840 where it can
      be supplied internally.

  MICVDD-supply:
    description:
      Microphone power supply, normally supplied internally except on
      cs47l24, wm1831 where it is mandatory.

required:
  - compatible
  - gpio-controller
  - '#gpio-cells'
  - interrupt-controller
  - '#interrupt-cells'
  - interrupt-parent
  - interrupts
  - AVDD-supply
  - DBVDD1-supply
  - CPVDD1-supply

unevaluatedProperties: false

examples:
  - |
    #include <dt-bindings/sound/madera.h>
    i2c@e0004000 {
        #address-cells = <1>;
        #size-cells = <0>;
        reg = <0xe0004000 0x1000>;

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

            reset-gpios = <&gpio 0>;
            wlf,ldoena = <&gpio 1>;

            interrupt-controller;
            #interrupt-cells = <2>;
            interrupts = <&host_irq1>;
            interrupt-parent = <&gic>;

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

            AVDD-supply = <&vdd1v8>;
            DBVDD1-supply = <&vdd1v8>;
            DBVDD2-supply = <&vdd1v8>;
            DBVDD3-supply = <&vdd1v8>;
            DBVDD4-supply = <&vdd1v8>;
            CPVDD1-supply = <&vdd1v8>;
            CPVDD2-supply = <&vdd1v2>;
            SPKVDDL-supply = <&vdd5v>;
            SPKVDDR-supply = <&vdd5v>;

            clocks = <&clks 0>, <&clks 1>, <&clks 2>;
            clock-names = "mclk1", "mclk2", "mclk3";

            cirrus,dmic-ref = <0 0 MADERA_DMIC_REF_MICBIAS1>;
            cirrus,inmode = <
                MADERA_INMODE_SE   MADERA_INMODE_SE
                MADERA_INMODE_SE   MADERA_INMODE_SE
                MADERA_INMODE_DIFF MADERA_INMODE_DIFF
            >;
            cirrus,max-channels-clocked = <2 0 0>;

            pinctrl-names = "default";
            pinctrl-0 = <&pinsettings>;

            pinsettings: pin-settings {
                aif1-pins {
                    groups = "aif1";
                    function = "aif1";
                    bias-bus-hold;
                };

                aif2-pins {
                    groups = "aif2";
                    function = "aif2";
                    bias-bus-hold;
                };

                aif3-pins {
                    groups = "aif3";
                    function = "aif3";
                    bias-bus-hold;
                };
            };
        };
    };
+0 −114
Original line number Diff line number Diff line
Cirrus Logic Madera class audio codecs Multi-Functional Device

These devices are audio SoCs with extensive digital capabilities and a range
of analogue I/O.

See also the child driver bindings in:
bindings/pinctrl/cirrus,madera-pinctrl.txt
bindings/regulator/arizona-regulator.txt
bindings/sound/madera.txt

Required properties:

  - compatible : One of the following chip-specific strings:
        "cirrus,cs47l15"
        "cirrus,cs47l35"
        "cirrus,cs47l85"
        "cirrus,cs47l90"
        "cirrus,cs47l91"
        "cirrus,cs42l92"
        "cirrus,cs47l92"
        "cirrus,cs47l93"
        "cirrus,wm1840"

  - reg : I2C slave address when connected using I2C, chip select number when
    using SPI.

  - DCVDD-supply : Power supply for the device as defined in
    bindings/regulator/regulator.txt
    Mandatory on CS47L15, CS47L35, CS47L90, CS47L91, CS42L92, CS47L92, CS47L93
    Optional on CS47L85, WM1840

  - AVDD-supply, DBVDD1-supply, DBVDD2-supply, CPVDD1-supply, CPVDD2-supply :
    Power supplies for the device

  - DBVDD3-supply, DBVDD4-supply : Power supplies for the device
    (CS47L85, CS47L90, CS47L91, WM1840)

  - SPKVDDL-supply, SPKVDDR-supply : Power supplies for the device
    (CS47L85, WM1840)

  - SPKVDD-supply : Power supply for the device
    (CS47L15, CS47L35)

  - interrupt-controller : Indicates that this device is an interrupt controller

  - #interrupt-cells: the number of cells to describe an IRQ, must be 2.
    The first cell is the IRQ number.
    The second cell is the flags, encoded as the trigger masks from
    bindings/interrupt-controller/interrupts.txt

  - gpio-controller : Indicates this device is a GPIO controller.

  - #gpio-cells : Must be 2. The first cell is the pin number. The second cell
    is reserved for future use and must be zero

  - interrupt-parent : The parent interrupt controller.

  - interrupts : The interrupt line the /IRQ signal for the device is
    connected to.

Optional properties:

  - MICVDD-supply : Power supply, only need to be specified if
    powered externally

  - reset-gpios : One entry specifying the GPIO controlling /RESET.
    As defined in bindings/gpio.txt.
    Although optional, it is strongly recommended to use a hardware reset

  - clocks: Should reference the clocks supplied on MCLK1, MCLK2 and MCLK3
  - clock-names: May contain up to three strings:
      "mclk1" for the clock supplied on MCLK1, recommended to be a high
      quality audio reference clock
      "mclk2" for the clock supplied on MCLK2, required to be an always on
      32k clock
      "mclk3" for the clock supplied on MCLK3

  - MICBIASx : Initial data for the MICBIAS regulators, as covered in
    Documentation/devicetree/bindings/regulator/regulator.txt.
    One for each MICBIAS generator (MICBIAS1, MICBIAS2, ...)
    (all codecs)

    One for each output pin (MICBIAS1A, MIBCIAS1B, MICBIAS2A, ...)
    (all except CS47L85, WM1840)

    The following following additional property is supported for the generator
    nodes:
      - cirrus,ext-cap : Set to 1 if the MICBIAS has external decoupling
        capacitors attached.

Optional child nodes:
    micvdd : Node containing initialization data for the micvdd regulator
    See bindings/regulator/arizona-regulator.txt

    ldo1 : Node containing initialization data for the LDO1 regulator
    See bindings/regulator/arizona-regulator.txt
    (cs47l85, wm1840)

Example:

cs47l85@0 {
	compatible = "cirrus,cs47l85";
	reg = <0>;

	reset-gpios = <&gpio 0>;

	interrupt-controller;
	#interrupt-cells = <2>;
	interrupts = <&host_irq1>;
	interrupt-parent = <&gic>;

	gpio-controller;
	#gpio-cells = <2>;
};
+3 −3
Original line number Diff line number Diff line
@@ -4089,9 +4089,9 @@ L: patches@opensource.cirrus.com
S:	Supported
W:	https://github.com/CirrusLogic/linux-drivers/wiki
T:	git https://github.com/CirrusLogic/linux-drivers.git
F:	Documentation/devicetree/bindings/mfd/madera.txt
F:	Documentation/devicetree/bindings/pinctrl/cirrus,madera-pinctrl.txt
F:	Documentation/devicetree/bindings/sound/madera.txt
F:	Documentation/devicetree/bindings/mfd/cirrus,madera.yaml
F:	Documentation/devicetree/bindings/pinctrl/cirrus,madera.yaml
F:	Documentation/devicetree/bindings/sound/cirrus,madera.yaml
F:	drivers/gpio/gpio-madera*
F:	drivers/irqchip/irq-madera*
F:	drivers/mfd/cs47l*