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

title: Qualcomm APR/GPR (Asynchronous/Generic Packet Router)

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

description: |
  This binding describes the Qualcomm APR/GPR, APR/GPR is a IPC protocol for
  communication between Application processor and QDSP. APR/GPR is mainly
  used for audio/voice services on the QDSP.

properties:
  compatible:
    enum:
      - qcom,apr
      - qcom,apr-v2
      - qcom,gpr

  power-domains:
    maxItems: 1

  qcom,apr-domain:
    $ref: /schemas/types.yaml#/definitions/uint32
    enum: [1, 2, 3, 4, 5, 6, 7]
    description:
      Selects the processor domain for apr
        1 = APR simulator
        2 = PC Domain
        3 = Modem Domain
        4 = ADSP Domain
        5 = Application processor Domain
        6 = Modem2 Domain
        7 = Application Processor2 Domain
    deprecated: true

  qcom,domain:
    $ref: /schemas/types.yaml#/definitions/uint32
    minimum: 1
    maximum: 7
    description:
      Selects the processor domain for apr
        1 = APR simulator
        2 = PC Domain
        3 = Modem Domain
        4 = ADSP Domain
        5 = Application processor Domain
        6 = Modem2 Domain
        7 = Application Processor2 Domain
      Selects the processor domain for gpr
        1 = Modem Domain
        2 = Audio DSP Domain
        3 = Application Processor Domain

  qcom,glink-channels:
    $ref: /schemas/types.yaml#/definitions/string-array
    description: Channel name used for the communication
    maxItems: 1

  qcom,intents:
    $ref: /schemas/types.yaml#/definitions/uint32-matrix
    minItems: 1
    maxItems: 32
    items:
      items:
        - description: size of each intent to preallocate
        - description: amount of intents to preallocate
          minimum: 1
    description:
      List of (size, amount) pairs describing what intents should be
      preallocated for this virtual channel. This can be used to tweak the
      default intents available for the channel to meet expectations of the
      remote.

  qcom,smd-channels:
    $ref: /schemas/types.yaml#/definitions/string-array
    description: Channel name used for the communication
    items:
      - const: apr_audio_svc

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

patternProperties:
  "^service@[1-9a-d]$":
    type: object
    $ref: /schemas/soc/qcom/qcom,apr-services.yaml
    additionalProperties: true
    description:
      APR/GPR static port services.

    properties:
      compatible:
        enum:
          - qcom,q6core
          - qcom,q6asm
          - qcom,q6afe
          - qcom,q6adm
          - qcom,q6apm
          - qcom,q6prm

required:
  - compatible
  - qcom,domain

allOf:
  - if:
      properties:
        compatible:
          enum:
            - qcom,gpr
    then:
      properties:
        qcom,glink-channels:
          items:
            - const: adsp_apps
        power-domains: false
    else:
      properties:
        qcom,glink-channels:
          items:
            - const: apr_audio_svc

  - if:
      required:
        - qcom,glink-channels
    then:
      properties:
        qcom,smd-channels: false

  - if:
      required:
        - qcom,smd-channels
    then:
      properties:
        qcom,glink-channels: false

additionalProperties: false

examples:
  - |
    #include <dt-bindings/soc/qcom,apr.h>
    apr {
        compatible = "qcom,apr-v2";
        qcom,domain = <APR_DOMAIN_ADSP>;
        qcom,glink-channels = "apr_audio_svc";
        qcom,intents = <512 20>;
        #address-cells = <1>;
        #size-cells = <0>;

        q6core: service@3 {
            compatible = "qcom,q6core";
            reg = <APR_SVC_ADSP_CORE>;
            qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
        };

        service@4 {
            compatible = "qcom,q6afe";
            reg = <APR_SVC_AFE>;
            qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

            clock-controller {
                compatible = "qcom,q6afe-clocks";
                #clock-cells = <2>;
            };

            dais {
                compatible = "qcom,q6afe-dais";
                #address-cells = <1>;
                #size-cells = <0>;
                #sound-dai-cells = <1>;
                /* ... */
            };
            /* ... */
        };
    };

  - |
    #include <dt-bindings/soc/qcom,gpr.h>
    gpr {
        compatible = "qcom,gpr";
        qcom,domain = <GPR_DOMAIN_ID_ADSP>;
        qcom,glink-channels = "adsp_apps";
        qcom,intents = <512 20>;
        #address-cells = <1>;
        #size-cells = <0>;

        service@1 {
            compatible = "qcom,q6apm";
            reg = <GPR_APM_MODULE_IID>;
            #sound-dai-cells = <0>;
            qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";

            dais {
                compatible = "qcom,q6apm-dais";
                iommus = <&apps_smmu 0x1801 0x0>;
            };

            bedais {
                compatible = "qcom,q6apm-lpass-dais";
                #sound-dai-cells = <1>;
            };
        };
    };
