# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/sound/samsung,aries-wm8994.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Samsung Aries audio complex with WM8994 codec

maintainers:
  - Jonathan Bakker <xc-racer2@live.ca>

properties:
  compatible:
    enum:
      # With FM radio and modem master
      - samsung,aries-wm8994
      # Without FM radio and modem slave
      - samsung,fascinate4g-wm8994

  model:
    $ref: /schemas/types.yaml#/definitions/string
    description: The user-visible name of this sound complex.

  cpu:
    type: object
    properties:
      sound-dai:
        minItems: 2
        maxItems: 2
        $ref: /schemas/types.yaml#/definitions/phandle-array
        description: |
          phandles to the I2S controller and bluetooth codec,
          in that order

  codec:
    type: object
    properties:
      sound-dai:
        $ref: /schemas/types.yaml#/definitions/phandle-array
        description: phandle to the WM8994 CODEC

  samsung,audio-routing:
    $ref: /schemas/types.yaml#/definitions/non-unique-string-array
    description: |
      List of the connections between audio
      components;  each entry is a pair of strings, the first being the
      connection's sink, the second being the connection's source;
      valid names for sources and sinks are the WM8994's pins (as
      documented in its binding), and the jacks on the board -
      For samsung,aries-wm8994: HP, SPK, RCV, LINE, Main Mic, Headset Mic,
      or FM In
      For samsung,fascinate4g-wm8994: HP, SPK, RCV, LINE, Main Mic,
      or HeadsetMic

  extcon:
    description: Extcon phandle for dock detection

  main-micbias-supply:
    description: Supply for the micbias on the main mic

  headset-micbias-supply:
    description: Supply for the micbias on the headset mic

  earpath-sel-gpios:
    maxItems: 1
    description: GPIO for switching between tv-out and mic paths

  headset-detect-gpios:
    maxItems: 1
    description: GPIO for detection of headset insertion

  headset-key-gpios:
    maxItems: 1
    description: GPIO for detection of headset key press

  io-channels:
    maxItems: 1
    description: IO channel to read micbias voltage for headset detection

  io-channel-names:
    const: headset-detect

required:
  - compatible
  - model
  - cpu
  - codec
  - samsung,audio-routing
  - extcon
  - main-micbias-supply
  - headset-micbias-supply
  - earpath-sel-gpios
  - headset-detect-gpios
  - headset-key-gpios

additionalProperties: false

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

    sound {
        compatible = "samsung,fascinate4g-wm8994";

        model = "Fascinate4G";

        extcon = <&fsa9480>;

        main-micbias-supply = <&main_micbias_reg>;
        headset-micbias-supply = <&headset_micbias_reg>;

        earpath-sel-gpios = <&gpj2 6 GPIO_ACTIVE_HIGH>;

        io-channels = <&adc 3>;
        io-channel-names = "headset-detect";
        headset-detect-gpios = <&gph0 6 GPIO_ACTIVE_HIGH>;
        headset-key-gpios = <&gph3 6 GPIO_ACTIVE_HIGH>;

        samsung,audio-routing =
            "HP", "HPOUT1L",
            "HP", "HPOUT1R",

            "SPK", "SPKOUTLN",
            "SPK", "SPKOUTLP",

            "RCV", "HPOUT2N",
            "RCV", "HPOUT2P",

            "LINE", "LINEOUT2N",
            "LINE", "LINEOUT2P",

            "IN1LP", "Main Mic",
            "IN1LN", "Main Mic",

            "IN1RP", "Headset Mic",
            "IN1RN", "Headset Mic";

        pinctrl-names = "default";
        pinctrl-0 = <&headset_det &earpath_sel>;

        cpu {
            sound-dai = <&i2s0>, <&bt_codec>;
        };

        codec {
            sound-dai = <&wm8994>;
        };
    };

