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