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

title: Qualcomm PM4125 Audio Codec

maintainers:
  - Alexey Klimov <alexey.klimov@linaro.org>

description:
  The audio codec IC found on Qualcomm PM4125/PM2250 PMIC.
  It has RX and TX Soundwire slave devices.

allOf:
  - $ref: dai-common.yaml#

properties:
  compatible:
    const: qcom,pm4125-codec

  reg:
    description:
      Specifies the SPMI base address for the audio codec peripherals. The
      address space contains reset register needed to power-on the codec.
    maxItems: 1

  reg-names:
    maxItems: 1

  vdd-io-supply:
    description: A reference to the 1.8V I/O supply

  vdd-cp-supply:
    description: A reference to the charge pump I/O supply

  vdd-mic-bias-supply:
    description: A reference to the 3.3V mic bias supply

  vdd-pa-vpos-supply:
    description: A reference to the PA VPOS supply

  qcom,tx-device:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: A reference to Soundwire tx device phandle

  qcom,rx-device:
    $ref: /schemas/types.yaml#/definitions/phandle-array
    description: A reference to Soundwire rx device phandle

  qcom,micbias1-microvolt:
    description: micbias1 voltage
    minimum: 1800000
    maximum: 2850000

  qcom,micbias2-microvolt:
    description: micbias2 voltage
    minimum: 1800000
    maximum: 2850000

  qcom,micbias3-microvolt:
    description: micbias3 voltage
    minimum: 1800000
    maximum: 2850000

  qcom,mbhc-buttons-vthreshold-microvolt:
    description:
      Array of 8 Voltage threshold values corresponding to headset
      button0 - button7
    minItems: 8
    maxItems: 8

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

required:
  - compatible
  - reg
  - vdd-io-supply
  - vdd-cp-supply
  - vdd-mic-bias-supply
  - vdd-pa-vpos-supply
  - qcom,tx-device
  - qcom,rx-device
  - qcom,micbias1-microvolt
  - qcom,micbias2-microvolt
  - qcom,micbias3-microvolt
  - '#sound-dai-cells'

unevaluatedProperties: false

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

    spmi {
        #address-cells = <2>;
        #size-cells = <0>;

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

            audio-codec@f000 {
                compatible = "qcom,pm4125-codec";
                reg = <0xf000>;
                vdd-io-supply = <&pm4125_l15>;
                vdd-cp-supply = <&pm4125_s4>;
                vdd-pa-vpos-supply = <&pm4125_s4>;
                vdd-mic-bias-supply = <&pm4125_l22>;
                qcom,micbias1-microvolt = <1800000>;
                qcom,micbias2-microvolt = <1800000>;
                qcom,micbias3-microvolt = <1800000>;
                qcom,rx-device = <&pm4125_rx>;
                qcom,tx-device = <&pm4125_tx>;
                #sound-dai-cells = <1>;
            };
        };
    };

    /* ... */

    soundwire@a610000 {
        reg = <0x0a610000 0x2000>;
        #address-cells = <2>;
        #size-cells = <0>;
        pm4125_rx: audio-codec@0,4 {
            compatible = "sdw20217010c00";
            reg = <0 4>;
            qcom,rx-port-mapping = <1 3>;
        };
    };
...
