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

title: Qualcomm SoundWire Slave devices on PM4125/PM2250 PMIC audio codec.

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

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

properties:
  compatible:
    const: sdw20217010c00

  reg:
    maxItems: 1

  qcom,tx-port-mapping:
    description: |
      Specifies static port mapping between device and host tx ports.
      In the order of the device port index which are adc1_port, adc23_port,
      dmic03_mbhc_port, dmic46_port.
      Supports maximum 2 tx soundwire ports.

      PM4125 TX Port 1 (ADC1,2 & DMIC0 & MBHC)    <=> SWR0 Port 1
      PM4125 TX Port 2 (ADC1 & DMIC0,1,2 & MBHC)  <=> SWR0 Port 2

    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 2
    maxItems: 2
    items:
      enum: [1, 2, 3, 4]

  qcom,rx-port-mapping:
    description: |
      Specifies static port mapping between device and host rx ports.
      In the order of device port index which are hph_port, clsh_port,
      comp_port, lo_port, dsd port.
      Supports maximum 2 rx soundwire ports.

      PM4125 RX Port 1 (HPH_L/R)       <==>    SWR1 Port 1 (HPH_L/R)
      PM4125 RX Port 2 (COMP_L/R)      <==>    SWR1 Port 3 (COMP_L/R)

    $ref: /schemas/types.yaml#/definitions/uint32-array
    minItems: 2
    maxItems: 2
    items:
      enum: [1, 2, 3, 4, 5]

required:
  - compatible
  - reg

oneOf:
  - required:
      - qcom,tx-port-mapping
  - required:
      - qcom,rx-port-mapping

additionalProperties: false

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