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