dt-bindings: soc: qcom: apr: Add protection domain bindings
authorSibi Sankar <sibis@codeaurora.org>
Thu, 12 Mar 2020 12:08:41 +0000 (17:38 +0530)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Sun, 15 Mar 2020 05:38:44 +0000 (22:38 -0700)
Qualcomm SoCs (starting with MSM8998) allow for multiple protection
domains (PDs) to run on the same Q6 sub-system. This allows for
services like AVS AUDIO to have their own separate address space and
crash/recover without disrupting the other PDs running on the same Q6
ADSP. Add "qcom,protection-domain" bindings to capture the dependencies
between the APR service and the PD on which the apr service runs.

Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sibi Sankar <sibis@codeaurora.org>
Link: https://lore.kernel.org/r/20200312120842.21991-3-sibis@codeaurora.org
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Documentation/devicetree/bindings/soc/qcom/qcom,apr.txt

index db50126..f8fa71f 100644 (file)
@@ -45,6 +45,18 @@ by the individual bindings for the specific service
                        12 - Ultrasound stream manager.
                        13 - Listen stream manager.
 
+- qcom,protection-domain
+       Usage: optional
+       Value type: <stringlist>
+       Definition: Must list the protection domain service name and path
+                   that the particular apr service has a dependency on.
+       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".
+
 = EXAMPLE
 The following example represents a QDSP based sound card on a MSM8996 device
 which uses apr as communication between Apps and QDSP.
@@ -82,3 +94,41 @@ which uses apr as communication between Apps and QDSP.
                        ...
                };
        };
+
+= EXAMPLE 2
+The following example represents a QDSP based sound card with protection domain
+dependencies specified. Here some of the apr services are dependent on services
+running on protection domain hosted on ADSP/SLPI remote processors while others
+have no such dependency.
+
+       apr {
+               compatible = "qcom,apr-v2";
+               qcom,glink-channels = "apr_audio_svc";
+               qcom,apr-domain = <APR_DOMAIN_ADSP>;
+
+               q6core {
+                       compatible = "qcom,q6core";
+                       reg = <APR_SVC_ADSP_CORE>;
+               };
+
+               q6afe: q6afe {
+                       compatible = "qcom,q6afe";
+                       reg = <APR_SVC_AFE>;
+                       qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+                       ...
+               };
+
+               q6asm: q6asm {
+                       compatible = "qcom,q6asm";
+                       reg = <APR_SVC_ASM>;
+                       qcom,protection-domain = "tms/servreg", "msm/slpi/sensor_pd";
+                       ...
+               };
+
+               q6adm: q6adm {
+                       compatible = "qcom,q6adm";
+                       reg = <APR_SVC_ADM>;
+                       qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
+                       ...
+               };
+       };