From 0c8aa550321e333bea72e5cd5bc87ac19a5e8af3 Mon Sep 17 00:00:00 2001 From: Srinivas Kandagatla Date: Mon, 7 Dec 2015 11:56:24 +0000 Subject: [PATCH] remoteproc: tz: Allow no scm clocks support 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 --- drivers/remoteproc/qcom_tz_pil.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/remoteproc/qcom_tz_pil.c b/drivers/remoteproc/qcom_tz_pil.c index 2f43b00fee13..f3e5442e5566 100644 --- a/drivers/remoteproc/qcom_tz_pil.c +++ b/drivers/remoteproc/qcom_tz_pil.c @@ -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; -- 2.39.5