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

title: Qualcomm SoundWire Controller

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
  - Srinivasa Rao Mandadapu <quic_srivasam@quicinc.com>

description:
  The Qualcomm SoundWire controller along with its board specific bus parameters.

properties:
  compatible:
    enum:
      - qcom,soundwire-v1.3.0
      - qcom,soundwire-v1.5.0
      - qcom,soundwire-v1.5.1
      - qcom,soundwire-v1.6.0
      - qcom,soundwire-v1.7.0

  reg:
    maxItems: 1

  interrupts:
    minItems: 1
    items:
      - description: specify the SoundWire controller core.
      - description: specify the Soundwire controller wake IRQ.

  interrupt-names:
    minItems: 1
    items:
      - const: core
      - const: wakeup

  clocks:
    items:
      - description: iface clock

  clock-names:
    items:
      - const: iface

  resets:
    items:
      - description: SWR_AUDIO_CGCR RESET

  reset-names:
    items:
      - const: swr_audio_cgcr

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

  '#address-cells':
    const: 2

  '#size-cells':
    const: 0

  wakeup-source: true

  qcom,din-ports:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: count of data in ports

  qcom,dout-ports:
    $ref: /schemas/types.yaml#/definitions/uint32
    description: count of data out ports

  qcom,ports-word-length:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      Size of payload channel sample.
      Value of 0xff indicates that this option is not implemented
      or applicable for the respective data port.
      More info in MIPI Alliance SoundWire 1.0 Specifications.
    minItems: 3
    maxItems: 8

  qcom,ports-sinterval-low:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      Sample interval low of each data port.
      Out ports followed by In ports. Used for Sample Interval calculation.
      Value of 0xff indicates that this option is not implemented
      or applicable for the respective data port.
      More info in MIPI Alliance SoundWire 1.0 Specifications.
    minItems: 3
    maxItems: 8

  qcom,ports-offset1:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      Payload transport window offset1 of each data port.
      Out ports followed by In ports.
      Value of 0xff indicates that this option is not implemented
      or applicable for the respective data port.
      More info in MIPI Alliance SoundWire 1.0 Specifications.
    minItems: 3
    maxItems: 8

  qcom,ports-offset2:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      Payload transport window offset2 of each data port.
      Out ports followed by In ports.
      Value of 0xff indicates that this option is not implemented
      or applicable for the respective data port.
      More info in MIPI Alliance SoundWire 1.0 Specifications.
    minItems: 3
    maxItems: 8

  qcom,ports-lane-control:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      Identify which data lane the data port uses.
      Out ports followed by In ports.
      Value of 0xff indicates that this option is not implemented
      or applicable for the respective data port.
      More info in MIPI Alliance SoundWire 1.0 Specifications.
    minItems: 3
    maxItems: 8

  qcom,ports-block-pack-mode:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      Indicate the block packing mode.
      0 to indicate Blocks are per Channel
      1 to indicate Blocks are per Port.
      Out ports followed by In ports.
      Value of 0xff indicates that this option is not implemented
      or applicable for the respective data port.
      More info in MIPI Alliance SoundWire 1.0 Specifications.
    minItems: 3
    maxItems: 8
    items:
      oneOf:
        - minimum: 0
          maximum: 1
        - const: 0xff

  qcom,ports-hstart:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      Identifying lowerst numbered coloum in SoundWire Frame,
      i.e. left edge of the Transport sub-frame for each port.
      Out ports followed by In ports.
      Value of 0xff indicates that this option is not implemented
      or applicable for the respective data port.
      More info in MIPI Alliance SoundWire 1.0 Specifications.
    minItems: 3
    maxItems: 8
    items:
      oneOf:
        - minimum: 0
          maximum: 15
        - const: 0xff

  qcom,ports-hstop:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      Identifying highest numbered coloum in SoundWire Frame,
      i.e. the right edge of the Transport
      sub-frame for each port. Out ports followed by In ports.
      Value of 0xff indicates that this option is not implemented
      or applicable for the respective data port.
      More info in MIPI Alliance SoundWire 1.0 Specifications.
    minItems: 3
    maxItems: 8
    items:
      oneOf:
        - minimum: 0
          maximum: 15
        - const: 0xff

  qcom,ports-block-group-count:
    $ref: /schemas/types.yaml#/definitions/uint8-array
    description:
      In range 1 to 4 to indicate how many sample intervals are combined
      into a payload. Out ports followed by In ports.
      Value of 0xff indicates that this option is not implemented
      or applicable for the respective data port.
      More info in MIPI Alliance SoundWire 1.0 Specifications.
    minItems: 3
    maxItems: 8
    items:
      oneOf:
        - minimum: 0
          maximum: 4
        - const: 0xff

  label:
    maxItems: 1

patternProperties:
  "^.*@[0-9a-f],[0-9a-f]$":
    type: object
    description:
      Child nodes for a standalone audio codec or speaker amplifier IC.
      It has RX and TX Soundwire secondary devices.
    properties:
      compatible:
        pattern: "^sdw[0-9a-f]{1}[0-9a-f]{4}[0-9a-f]{4}[0-9a-f]{2}$"

required:
  - compatible
  - reg
  - interrupts
  - clocks
  - clock-names
  - '#sound-dai-cells'
  - '#address-cells'
  - '#size-cells'
  - qcom,dout-ports
  - qcom,din-ports
  - qcom,ports-sinterval-low
  - qcom,ports-offset1
  - qcom,ports-offset2

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/interrupt-controller/irq.h>
    #include <dt-bindings/clock/qcom,lpassaudiocc-sc7280.h>

    soundwire@3210000 {
        compatible = "qcom,soundwire-v1.6.0";
        reg = <0x03210000 0x2000>;

        interrupts = <GIC_SPI 155 IRQ_TYPE_LEVEL_HIGH>,
                     <&pdc 130 IRQ_TYPE_LEVEL_HIGH>;

        interrupt-names = "core", "wakeup";

        clocks = <&lpass_rx_macro>;
        clock-names = "iface";

        qcom,din-ports = <0>;
        qcom,dout-ports = <5>;

        resets = <&lpass_audiocc LPASS_AUDIO_SWR_RX_CGCR>;
        reset-names = "swr_audio_cgcr";

        qcom,ports-word-length =        /bits/ 8 <0x01 0x07 0x04 0xff 0xff>;
        qcom,ports-sinterval-low =      /bits/ 8 <0x03 0x3f 0x1f 0x03 0x03>;
        qcom,ports-offset1 =            /bits/ 8 <0x00 0x00 0x0b 0x01 0x01>;
        qcom,ports-offset2 =            /bits/ 8 <0x00 0x00 0x0b 0x00 0x00>;
        qcom,ports-lane-control =       /bits/ 8 <0x01 0x00 0x00 0x00 0x00>;
        qcom,ports-block-pack-mode =    /bits/ 8 <0xff 0x00 0x01 0xff 0xff>;
        qcom,ports-hstart =             /bits/ 8 <0xff 0x03 0xff 0xff 0xff>;
        qcom,ports-hstop =              /bits/ 8 <0xff 0x06 0xff 0xff 0xff>;
        qcom,ports-block-group-count =  /bits/ 8 <0xff 0xff 0xff 0xff 0x00>;

        #sound-dai-cells = <1>;
        #address-cells = <2>;
        #size-cells = <0>;

        codec@0,4 {
            compatible = "sdw20217010d00";
            reg = <0 4>;
            qcom,rx-port-mapping = <1 2 3 4 5>;
        };
    };
