remoteproc: qcom: Add SLPI rproc support to load and boot slpi proc.
authorAvaneesh Kumar Dwivedi <akdwived@codeaurora.org>
Mon, 30 Jan 2017 15:03:08 +0000 (20:33 +0530)
committerBjorn Andersson <bjorn.andersson@linaro.org>
Mon, 30 Jan 2017 21:48:41 +0000 (13:48 -0800)
This patch add slpi remoteproc support in existing adsp rproc driver.

Signed-off-by: Avaneesh Kumar Dwivedi <akdwived@codeaurora.org>
[bjorn: documented aggre2 and px-supply]
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Documentation/devicetree/bindings/remoteproc/qcom,adsp.txt
drivers/remoteproc/qcom_adsp_pil.c

index b85885a298d83e43b753fbb2c46e06154a3e181f..75ad7b8df0b1d782a2edce8ff80168a25a483556 100644 (file)
@@ -9,6 +9,7 @@ on the Qualcomm ADSP Hexagon core.
        Definition: must be one of:
                    "qcom,msm8974-adsp-pil"
                    "qcom,msm8996-adsp-pil"
+                   "qcom,msm8996-slpi-pil"
 
 - interrupts-extended:
        Usage: required
@@ -24,13 +25,13 @@ on the Qualcomm ADSP Hexagon core.
 - clocks:
        Usage: required
        Value type: <prop-encoded-array>
-       Definition: reference to the xo clock to be held on behalf of the
-                   booting Hexagon core
+       Definition: reference to the xo clock and optionally aggre2 clock to be
+                   held on behalf of the booting Hexagon core
 
 - clock-names:
        Usage: required
        Value type: <stringlist>
-       Definition: must be "xo"
+       Definition: must be "xo" and optionally include "aggre2"
 
 - cx-supply:
        Usage: required
@@ -38,6 +39,12 @@ on the Qualcomm ADSP Hexagon core.
        Definition: reference to the regulator to be held on behalf of the
                    booting Hexagon core
 
+- px-supply:
+       Usage: required
+       Value type: <phandle>
+       Definition: reference to the px regulator to be held on behalf of the
+                   booting Hexagon core
+
 - memory-region:
        Usage: required
        Value type: <phandle>
@@ -96,3 +103,31 @@ ADSP, as it is found on MSM8974 boards.
                        qcom,smd-edge = <1>;
                };
        };
+
+The following example describes the resources needed to boot control the
+SLPI, as it is found on MSM8996 boards.
+
+       slpi {
+               compatible = "qcom,msm8996-slpi-pil";
+               interrupts-extended = <&intc 0 390 IRQ_TYPE_EDGE_RISING>,
+                                     <&slpi_smp2p_in 0 IRQ_TYPE_EDGE_RISING>,
+                                     <&slpi_smp2p_in 1 IRQ_TYPE_EDGE_RISING>,
+                                     <&slpi_smp2p_in 2 IRQ_TYPE_EDGE_RISING>,
+                                     <&slpi_smp2p_in 3 IRQ_TYPE_EDGE_RISING>;
+               interrupt-names = "wdog",
+                                 "fatal",
+                                 "ready",
+                                 "handover",
+                                 "stop-ack";
+
+               clocks = <&rpmcc MSM8996_RPM_SMD_XO_CLK_SRC>,
+                        <&rpmcc MSM8996_RPM_SMD_AGGR2_NOC_CLK>;
+               clock-names = "xo", "aggre2";
+
+               cx-supply = <&pm8994_l26>;
+               px-supply = <&pm8994_lvs2>;
+
+               memory-region = <&slpi_region>;
+               qcom,smem-states = <&slpi_smp2p_out 0>;
+               qcom,smem-state-names = "stop";
+        };
index 87f8d406950032637fdd50088423bbf58d04e274..a65351ea1889f9d86d0e834974b7cedecdbd576d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Qualcomm ADSP Peripheral Image Loader for MSM8974 and MSM8996
+ * Qualcomm ADSP/SLPI Peripheral Image Loader for MSM8974 and MSM8996
  *
  * Copyright (C) 2016 Linaro Ltd
  * Copyright (C) 2014 Sony Mobile Communications AB
@@ -459,9 +459,17 @@ static const struct adsp_data adsp_resource_init = {
                .has_aggre2_clk = false,
 };
 
+static const struct adsp_data slpi_resource_init = {
+               .crash_reason_smem = 424,
+               .firmware_name = "slpi.mdt",
+               .pas_id = 12,
+               .has_aggre2_clk = true,
+};
+
 static const struct of_device_id adsp_of_match[] = {
        { .compatible = "qcom,msm8974-adsp-pil", .data = &adsp_resource_init},
        { .compatible = "qcom,msm8996-adsp-pil", .data = &adsp_resource_init},
+       { .compatible = "qcom,msm8996-slpi-pil", .data = &slpi_resource_init},
        { },
 };
 MODULE_DEVICE_TABLE(of, adsp_of_match);