]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
remoteproc: tz: Allow no scm clocks support
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Mon, 7 Dec 2015 11:56:24 +0000 (11:56 +0000)
committerSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Mon, 11 Jan 2016 09:55:15 +0000 (09:55 +0000)
On APQ8064 I could not find any scm clocks related to scm and Q6, so
this patch is a temporary workaround to get the q6 loading working on
ifc6410.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
drivers/remoteproc/qcom_tz_pil.c

index 2f43b00fee137a963f89423e6eb8cb5df55b93e6..f3e5442e55663f4cf0a302197932fa2de90d1e5f 100644 (file)
@@ -61,6 +61,7 @@ struct qproc {
        struct regulator *pll;
 
        unsigned proxy_clk_count;
+       bool    no_scm_clks;
        struct clk *scm_core_clk;
        struct clk *scm_iface_clk;
        struct clk *scm_bus_clk;
@@ -82,6 +83,9 @@ static int qproc_scm_clk_enable(struct qproc *qproc)
 {
        int ret;
 
+       if (qproc->no_scm_clks)
+               return 0;
+
        ret = clk_prepare_enable(qproc->scm_core_clk);
        if (ret)
                goto bail;
@@ -110,6 +114,9 @@ bail:
 
 static void qproc_scm_clk_disable(struct qproc *qproc)
 {
+       if (qproc->no_scm_clks)
+               return;
+
        clk_disable_unprepare(qproc->scm_core_clk);
        clk_disable_unprepare(qproc->scm_iface_clk);
        clk_disable_unprepare(qproc->scm_bus_clk);
@@ -480,6 +487,9 @@ static int qproc_init_clocks(struct qproc *qproc)
        long rate;
        int ret;
 
+       if (qproc->no_scm_clks)
+               return 0;
+
        qproc->scm_core_clk = devm_clk_get(qproc->dev, "scm_core_clk");
        if (IS_ERR(qproc->scm_core_clk)) {
                if (PTR_ERR(qproc->scm_core_clk) != -EPROBE_DEFER)
@@ -621,6 +631,9 @@ static int qproc_probe(struct platform_device *pdev)
        qproc->smd_edge_node = of_parse_phandle(pdev->dev.of_node,
                                                "qcom,smd-edges", 0);
 
+       qproc->no_scm_clks = of_device_is_compatible(pdev->dev.of_node,
+                                                    "qcom,apq8064-tz-pil");
+
        ret = qproc_init_pas(qproc);
        if (ret)
                goto free_rproc;