Unverified Commit 14ebd62c authored by Jonathan Bakker's avatar Jonathan Bakker Committed by Mark Brown
Browse files

ASoC: Add bindings for Samsung Aries audio complex



The audio system on S5PV210 Aries boards have a wm8994 codec connected
to the Samsung I2S0 DAI.  Jack detection is done via GPIOs, an ADC, and
an extcon device (fsa9480).

There are two main variants, one with an FM radio and where the wm8994 is
the master for the modem audio and the other without FM and the modem is
the master.

Signed-off-by: default avatarJonathan Bakker <xc-racer2@live.ca>
Link: https://lore.kernel.org/r/BN6PR04MB0660866A9B5FD4B9E74D7C31A39F0@BN6PR04MB0660.namprd04.prod.outlook.com


Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 3f2ec71c
Loading
Loading
Loading
Loading
+147 −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/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:
    oneOf:
      - const: samsung,aries-wm8994
        description: With FM radio and modem master

      - const: samsung,fascinate4g-wm8994
        description: Without FM radio and modem slave

  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:
    description: GPIO for switching between tv-out and mic paths

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

  headset-key-gpios:
    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>;
        };
    };