162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/soc/qcom/qcom,apr.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Qualcomm APR/GPR (Asynchronous/Generic Packet Router) 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Srinivas Kandagatla <srinivas.kandagatla@linaro.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_cidescription: | 1362306a36Sopenharmony_ci This binding describes the Qualcomm APR/GPR, APR/GPR is a IPC protocol for 1462306a36Sopenharmony_ci communication between Application processor and QDSP. APR/GPR is mainly 1562306a36Sopenharmony_ci used for audio/voice services on the QDSP. 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ciproperties: 1862306a36Sopenharmony_ci compatible: 1962306a36Sopenharmony_ci enum: 2062306a36Sopenharmony_ci - qcom,apr 2162306a36Sopenharmony_ci - qcom,apr-v2 2262306a36Sopenharmony_ci - qcom,gpr 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci power-domains: 2562306a36Sopenharmony_ci maxItems: 1 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci qcom,apr-domain: 2862306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 2962306a36Sopenharmony_ci enum: [1, 2, 3, 4, 5, 6, 7] 3062306a36Sopenharmony_ci description: 3162306a36Sopenharmony_ci Selects the processor domain for apr 3262306a36Sopenharmony_ci 1 = APR simulator 3362306a36Sopenharmony_ci 2 = PC Domain 3462306a36Sopenharmony_ci 3 = Modem Domain 3562306a36Sopenharmony_ci 4 = ADSP Domain 3662306a36Sopenharmony_ci 5 = Application processor Domain 3762306a36Sopenharmony_ci 6 = Modem2 Domain 3862306a36Sopenharmony_ci 7 = Application Processor2 Domain 3962306a36Sopenharmony_ci deprecated: true 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ci qcom,domain: 4262306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32 4362306a36Sopenharmony_ci minimum: 1 4462306a36Sopenharmony_ci maximum: 7 4562306a36Sopenharmony_ci description: 4662306a36Sopenharmony_ci Selects the processor domain for apr 4762306a36Sopenharmony_ci 1 = APR simulator 4862306a36Sopenharmony_ci 2 = PC Domain 4962306a36Sopenharmony_ci 3 = Modem Domain 5062306a36Sopenharmony_ci 4 = ADSP Domain 5162306a36Sopenharmony_ci 5 = Application processor Domain 5262306a36Sopenharmony_ci 6 = Modem2 Domain 5362306a36Sopenharmony_ci 7 = Application Processor2 Domain 5462306a36Sopenharmony_ci Selects the processor domain for gpr 5562306a36Sopenharmony_ci 1 = Modem Domain 5662306a36Sopenharmony_ci 2 = Audio DSP Domain 5762306a36Sopenharmony_ci 3 = Application Processor Domain 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci qcom,glink-channels: 6062306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/string-array 6162306a36Sopenharmony_ci description: Channel name used for the communication 6262306a36Sopenharmony_ci maxItems: 1 6362306a36Sopenharmony_ci 6462306a36Sopenharmony_ci qcom,intents: 6562306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-matrix 6662306a36Sopenharmony_ci minItems: 1 6762306a36Sopenharmony_ci maxItems: 32 6862306a36Sopenharmony_ci items: 6962306a36Sopenharmony_ci items: 7062306a36Sopenharmony_ci - description: size of each intent to preallocate 7162306a36Sopenharmony_ci - description: amount of intents to preallocate 7262306a36Sopenharmony_ci minimum: 1 7362306a36Sopenharmony_ci description: 7462306a36Sopenharmony_ci List of (size, amount) pairs describing what intents should be 7562306a36Sopenharmony_ci preallocated for this virtual channel. This can be used to tweak the 7662306a36Sopenharmony_ci default intents available for the channel to meet expectations of the 7762306a36Sopenharmony_ci remote. 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci qcom,smd-channels: 8062306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/string-array 8162306a36Sopenharmony_ci description: Channel name used for the communication 8262306a36Sopenharmony_ci items: 8362306a36Sopenharmony_ci - const: apr_audio_svc 8462306a36Sopenharmony_ci 8562306a36Sopenharmony_ci '#address-cells': 8662306a36Sopenharmony_ci const: 1 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci '#size-cells': 8962306a36Sopenharmony_ci const: 0 9062306a36Sopenharmony_ci 9162306a36Sopenharmony_cipatternProperties: 9262306a36Sopenharmony_ci "^service@[1-9a-d]$": 9362306a36Sopenharmony_ci type: object 9462306a36Sopenharmony_ci $ref: /schemas/soc/qcom/qcom,apr-services.yaml 9562306a36Sopenharmony_ci additionalProperties: true 9662306a36Sopenharmony_ci description: 9762306a36Sopenharmony_ci APR/GPR static port services. 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci properties: 10062306a36Sopenharmony_ci compatible: 10162306a36Sopenharmony_ci enum: 10262306a36Sopenharmony_ci - qcom,q6core 10362306a36Sopenharmony_ci - qcom,q6asm 10462306a36Sopenharmony_ci - qcom,q6afe 10562306a36Sopenharmony_ci - qcom,q6adm 10662306a36Sopenharmony_ci - qcom,q6apm 10762306a36Sopenharmony_ci - qcom,q6prm 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_cirequired: 11062306a36Sopenharmony_ci - compatible 11162306a36Sopenharmony_ci - qcom,domain 11262306a36Sopenharmony_ci 11362306a36Sopenharmony_ciallOf: 11462306a36Sopenharmony_ci - if: 11562306a36Sopenharmony_ci properties: 11662306a36Sopenharmony_ci compatible: 11762306a36Sopenharmony_ci enum: 11862306a36Sopenharmony_ci - qcom,gpr 11962306a36Sopenharmony_ci then: 12062306a36Sopenharmony_ci properties: 12162306a36Sopenharmony_ci qcom,glink-channels: 12262306a36Sopenharmony_ci items: 12362306a36Sopenharmony_ci - const: adsp_apps 12462306a36Sopenharmony_ci power-domains: false 12562306a36Sopenharmony_ci else: 12662306a36Sopenharmony_ci properties: 12762306a36Sopenharmony_ci qcom,glink-channels: 12862306a36Sopenharmony_ci items: 12962306a36Sopenharmony_ci - const: apr_audio_svc 13062306a36Sopenharmony_ci 13162306a36Sopenharmony_ci - if: 13262306a36Sopenharmony_ci required: 13362306a36Sopenharmony_ci - qcom,glink-channels 13462306a36Sopenharmony_ci then: 13562306a36Sopenharmony_ci properties: 13662306a36Sopenharmony_ci qcom,smd-channels: false 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci - if: 13962306a36Sopenharmony_ci required: 14062306a36Sopenharmony_ci - qcom,smd-channels 14162306a36Sopenharmony_ci then: 14262306a36Sopenharmony_ci properties: 14362306a36Sopenharmony_ci qcom,glink-channels: false 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_ciadditionalProperties: false 14662306a36Sopenharmony_ci 14762306a36Sopenharmony_ciexamples: 14862306a36Sopenharmony_ci - | 14962306a36Sopenharmony_ci #include <dt-bindings/soc/qcom,apr.h> 15062306a36Sopenharmony_ci apr { 15162306a36Sopenharmony_ci compatible = "qcom,apr-v2"; 15262306a36Sopenharmony_ci qcom,domain = <APR_DOMAIN_ADSP>; 15362306a36Sopenharmony_ci qcom,glink-channels = "apr_audio_svc"; 15462306a36Sopenharmony_ci qcom,intents = <512 20>; 15562306a36Sopenharmony_ci #address-cells = <1>; 15662306a36Sopenharmony_ci #size-cells = <0>; 15762306a36Sopenharmony_ci 15862306a36Sopenharmony_ci q6core: service@3 { 15962306a36Sopenharmony_ci compatible = "qcom,q6core"; 16062306a36Sopenharmony_ci reg = <APR_SVC_ADSP_CORE>; 16162306a36Sopenharmony_ci qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd"; 16262306a36Sopenharmony_ci }; 16362306a36Sopenharmony_ci 16462306a36Sopenharmony_ci service@4 { 16562306a36Sopenharmony_ci compatible = "qcom,q6afe"; 16662306a36Sopenharmony_ci reg = <APR_SVC_AFE>; 16762306a36Sopenharmony_ci qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd"; 16862306a36Sopenharmony_ci 16962306a36Sopenharmony_ci clock-controller { 17062306a36Sopenharmony_ci compatible = "qcom,q6afe-clocks"; 17162306a36Sopenharmony_ci #clock-cells = <2>; 17262306a36Sopenharmony_ci }; 17362306a36Sopenharmony_ci 17462306a36Sopenharmony_ci dais { 17562306a36Sopenharmony_ci compatible = "qcom,q6afe-dais"; 17662306a36Sopenharmony_ci #address-cells = <1>; 17762306a36Sopenharmony_ci #size-cells = <0>; 17862306a36Sopenharmony_ci #sound-dai-cells = <1>; 17962306a36Sopenharmony_ci /* ... */ 18062306a36Sopenharmony_ci }; 18162306a36Sopenharmony_ci /* ... */ 18262306a36Sopenharmony_ci }; 18362306a36Sopenharmony_ci }; 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci - | 18662306a36Sopenharmony_ci #include <dt-bindings/soc/qcom,gpr.h> 18762306a36Sopenharmony_ci gpr { 18862306a36Sopenharmony_ci compatible = "qcom,gpr"; 18962306a36Sopenharmony_ci qcom,domain = <GPR_DOMAIN_ID_ADSP>; 19062306a36Sopenharmony_ci qcom,glink-channels = "adsp_apps"; 19162306a36Sopenharmony_ci qcom,intents = <512 20>; 19262306a36Sopenharmony_ci #address-cells = <1>; 19362306a36Sopenharmony_ci #size-cells = <0>; 19462306a36Sopenharmony_ci 19562306a36Sopenharmony_ci service@1 { 19662306a36Sopenharmony_ci compatible = "qcom,q6apm"; 19762306a36Sopenharmony_ci reg = <GPR_APM_MODULE_IID>; 19862306a36Sopenharmony_ci #sound-dai-cells = <0>; 19962306a36Sopenharmony_ci qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd"; 20062306a36Sopenharmony_ci 20162306a36Sopenharmony_ci dais { 20262306a36Sopenharmony_ci compatible = "qcom,q6apm-dais"; 20362306a36Sopenharmony_ci iommus = <&apps_smmu 0x1801 0x0>; 20462306a36Sopenharmony_ci }; 20562306a36Sopenharmony_ci 20662306a36Sopenharmony_ci bedais { 20762306a36Sopenharmony_ci compatible = "qcom,q6apm-lpass-dais"; 20862306a36Sopenharmony_ci #sound-dai-cells = <1>; 20962306a36Sopenharmony_ci }; 21062306a36Sopenharmony_ci }; 21162306a36Sopenharmony_ci }; 212