# 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>; }; }; };