Linux Audio

Check our new training course

Embedded Linux Audio

Check our new training course
with Creative Commons CC-BY-SA
lecture materials

Bootlin logo

Elixir Cross Referencer

Loading...
# 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) binding

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-v2
      - qcom,gpr

  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

  '#address-cells':
    const: 1

  '#size-cells':
    const: 0

#APR/GPR Services
patternProperties:
  "^service@[1-9a-d]$":
    type: object
    description:
      APR/GPR node's client devices use subnodes for desired static port services.

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

      reg:
        minimum: 1
        maximum: 13
        description:
          APR Service ID
            3 = DSP Core Service
            4 = Audio  Front End Service.
            5 = Voice Stream Manager Service.
            6 = Voice processing manager.
            7 = Audio Stream Manager Service.
            8 = Audio Device Manager Service.
            9 = Multimode voice manager.
            10 = Core voice stream.
            11 = Core voice processor.
            12 = Ultrasound stream manager.
            13 = Listen stream manager.
          GPR Service ID
            1 = Audio Process Manager Service
            2 = Proxy Resource Manager Service.
            3 = AMDB Service.
            4 = Voice processing manager.

      qcom,protection-domain:
        $ref: /schemas/types.yaml#/definitions/string-array
        description: protection domain service name and path for apr service
          possible values are
          "avs/audio", "msm/adsp/audio_pd".
          "kernel/elf_loader", "msm/modem/wlan_pd".
          "tms/servreg", "msm/adsp/audio_pd".
          "tms/servreg", "msm/modem/wlan_pd".
          "tms/servreg", "msm/slpi/sensor_pd".

      '#address-cells':
        const: 1

      '#size-cells':
        const: 0

    patternProperties:
      "^.*@[0-9a-f]+$":
        type: object
        description:
          Service based devices like clock controllers or digital audio interfaces.

    additionalProperties: false

required:
  - compatible
  - qcom,domain

additionalProperties: false

examples:
  - |
    #include <dt-bindings/soc/qcom,apr.h>
    apr {
        compatible = "qcom,apr-v2";
        qcom,domain = <APR_DOMAIN_ADSP>;
        #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";
        };

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

        q6asm: service@7 {
          compatible = "qcom,q6asm";
          reg = <APR_SVC_ASM>;
          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
        };

        q6adm: service@8 {
          compatible = "qcom,q6adm";
          reg = <APR_SVC_ADM>;
          qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
        };
    };

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

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