diff options
Diffstat (limited to 'target/linux/ipq806x/patches-4.9/0072-ipq-scm-TZ-don-t-need-clock-to-be-enabled-disabled-for-ipq.patch')
-rw-r--r-- | target/linux/ipq806x/patches-4.9/0072-ipq-scm-TZ-don-t-need-clock-to-be-enabled-disabled-for-ipq.patch | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/target/linux/ipq806x/patches-4.9/0072-ipq-scm-TZ-don-t-need-clock-to-be-enabled-disabled-for-ipq.patch b/target/linux/ipq806x/patches-4.9/0072-ipq-scm-TZ-don-t-need-clock-to-be-enabled-disabled-for-ipq.patch deleted file mode 100644 index 4f0e544ab6..0000000000 --- a/target/linux/ipq806x/patches-4.9/0072-ipq-scm-TZ-don-t-need-clock-to-be-enabled-disabled-for-ipq.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 0fb08a02baf5114fd3bdbc5aa92d6a6cd6d5ef3f Mon Sep 17 00:00:00 2001 -From: Manoharan Vijaya Raghavan <mraghava@codeaurora.org> -Date: Tue, 24 Jan 2017 20:58:46 +0530 -Subject: ipq: scm: TZ don't need clock to be enabled/disabled for ipq - -When SCM was made as a platform driver, clock management was -addedfor firmware calls. This is not required for IPQ. - -Change-Id: I3d29fafe0266e51f708f2718bab03907078b0f4d -Signed-off-by: Manoharan Vijaya Raghavan <mraghava@codeaurora.org> ---- - drivers/firmware/qcom_scm.c | 87 +++++++++++++++++++++++++++++---------------- - 1 file changed, 57 insertions(+), 30 deletions(-) - -(limited to 'drivers/firmware/qcom_scm.c') - ---- a/drivers/firmware/qcom_scm.c -+++ b/drivers/firmware/qcom_scm.c -@@ -28,12 +28,15 @@ - - #include "qcom_scm.h" - -+#define SCM_NOCLK 1 -+ - struct qcom_scm { - struct device *dev; - struct clk *core_clk; - struct clk *iface_clk; - struct clk *bus_clk; - struct reset_controller_dev reset; -+ int is_clkdisabled; - }; - - static struct qcom_scm *__scm; -@@ -42,6 +45,9 @@ static int qcom_scm_clk_enable(void) - { - int ret; - -+ if (__scm->is_clkdisabled) -+ return 0; -+ - ret = clk_prepare_enable(__scm->core_clk); - if (ret) - goto bail; -@@ -66,6 +72,9 @@ bail: - - static void qcom_scm_clk_disable(void) - { -+ if (__scm->is_clkdisabled) -+ return; -+ - clk_disable_unprepare(__scm->core_clk); - clk_disable_unprepare(__scm->iface_clk); - clk_disable_unprepare(__scm->bus_clk); -@@ -320,37 +329,61 @@ bool qcom_scm_is_available(void) - } - EXPORT_SYMBOL(qcom_scm_is_available); - -+static const struct of_device_id qcom_scm_dt_match[] = { -+ { .compatible = "qcom,scm-apq8064",}, -+ { .compatible = "qcom,scm-msm8660",}, -+ { .compatible = "qcom,scm-msm8960",}, -+ { .compatible = "qcom,scm-ipq807x", .data = (void *)SCM_NOCLK }, -+ { .compatible = "qcom,scm-ipq806x", .data = (void *)SCM_NOCLK }, -+ { .compatible = "qcom,scm-ipq40xx", .data = (void *)SCM_NOCLK }, -+ { .compatible = "qcom,scm-msm8960",}, -+ { .compatible = "qcom,scm-msm8960",}, -+ { .compatible = "qcom,scm",}, -+ {} -+}; -+ - static int qcom_scm_probe(struct platform_device *pdev) - { - struct qcom_scm *scm; -+ const struct of_device_id *id; - int ret; - - scm = devm_kzalloc(&pdev->dev, sizeof(*scm), GFP_KERNEL); - if (!scm) - return -ENOMEM; - -- scm->core_clk = devm_clk_get(&pdev->dev, "core"); -- if (IS_ERR(scm->core_clk)) { -- if (PTR_ERR(scm->core_clk) == -EPROBE_DEFER) -- return PTR_ERR(scm->core_clk); -+ id = of_match_device(qcom_scm_dt_match, &pdev->dev); -+ if (id) -+ scm->is_clkdisabled = (unsigned int)id->data; -+ else -+ scm->is_clkdisabled = 0; -+ -+ if (!(scm->is_clkdisabled)) { -+ -+ scm->core_clk = devm_clk_get(&pdev->dev, "core"); -+ if (IS_ERR(scm->core_clk)) { -+ if (PTR_ERR(scm->core_clk) == -EPROBE_DEFER) -+ return PTR_ERR(scm->core_clk); - -- scm->core_clk = NULL; -- } -- -- if (of_device_is_compatible(pdev->dev.of_node, "qcom,scm")) { -- scm->iface_clk = devm_clk_get(&pdev->dev, "iface"); -- if (IS_ERR(scm->iface_clk)) { -- if (PTR_ERR(scm->iface_clk) != -EPROBE_DEFER) -- dev_err(&pdev->dev, "failed to acquire iface clk\n"); -- return PTR_ERR(scm->iface_clk); -+ scm->core_clk = NULL; - } - -- scm->bus_clk = devm_clk_get(&pdev->dev, "bus"); -- if (IS_ERR(scm->bus_clk)) { -- if (PTR_ERR(scm->bus_clk) != -EPROBE_DEFER) -- dev_err(&pdev->dev, "failed to acquire bus clk\n"); -- return PTR_ERR(scm->bus_clk); -+ if (of_device_is_compatible(pdev->dev.of_node, "qcom,scm")) { -+ scm->iface_clk = devm_clk_get(&pdev->dev, "iface"); -+ if (IS_ERR(scm->iface_clk)) { -+ if (PTR_ERR(scm->iface_clk) != -EPROBE_DEFER) -+ dev_err(&pdev->dev, "failed to acquire iface clk\n"); -+ return PTR_ERR(scm->iface_clk); -+ } -+ -+ scm->bus_clk = devm_clk_get(&pdev->dev, "bus"); -+ if (IS_ERR(scm->bus_clk)) { -+ if (PTR_ERR(scm->bus_clk) != -EPROBE_DEFER) -+ dev_err(&pdev->dev, "failed to acquire bus clk\n"); -+ return PTR_ERR(scm->bus_clk); -+ } - } -+ - } - - scm->reset.ops = &qcom_scm_pas_reset_ops; -@@ -358,10 +391,12 @@ static int qcom_scm_probe(struct platfor - scm->reset.of_node = pdev->dev.of_node; - reset_controller_register(&scm->reset); - -- /* vote for max clk rate for highest performance */ -- ret = clk_set_rate(scm->core_clk, INT_MAX); -- if (ret) -- return ret; -+ if (!(scm->is_clkdisabled)) { -+ /* vote for max clk rate for highest performance */ -+ ret = clk_set_rate(scm->core_clk, INT_MAX); -+ if (ret) -+ return ret; -+ } - - __scm = scm; - __scm->dev = &pdev->dev; -@@ -371,14 +406,6 @@ static int qcom_scm_probe(struct platfor - return 0; - } - --static const struct of_device_id qcom_scm_dt_match[] = { -- { .compatible = "qcom,scm-apq8064",}, -- { .compatible = "qcom,scm-msm8660",}, -- { .compatible = "qcom,scm-msm8960",}, -- { .compatible = "qcom,scm",}, -- {} --}; -- - static struct platform_driver qcom_scm_driver = { - .driver = { - .name = "qcom_scm", |