linux-arm-msm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bhupesh Sharma <bhupesh.sharma@linaro.org>
To: linux-arm-msm@vger.kernel.org, linux-crypto@vger.kernel.org
Cc: bhupesh.sharma@linaro.org, bhupesh.linux@gmail.com,
	linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	robh+dt@kernel.org, agross@kernel.org,
	herbert@gondor.apana.org.au, davem@davemloft.net,
	stephan@gerhold.net, Thara Gopinath <thara.gopinath@linaro.org>,
	Bjorn Andersson <bjorn.andersson@linaro.org>
Subject: [PATCH v5 14/22] crypto: qce: core: Add support to initialize interconnect path
Date: Wed, 10 Nov 2021 16:29:14 +0530	[thread overview]
Message-ID: <20211110105922.217895-15-bhupesh.sharma@linaro.org> (raw)
In-Reply-To: <20211110105922.217895-1-bhupesh.sharma@linaro.org>

From: Thara Gopinath <thara.gopinath@linaro.org>

Crypto engine on certain Snapdragon processors like sm8150, sm8250, sm8350
etc. requires interconnect path between the engine and memory to be
explicitly enabled and bandwidth set prior to any operations. Add support
in the qce core to enable the interconnect path appropriately.

Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Cc: Rob Herring <robh+dt@kernel.org>
Signed-off-by: Bhupesh Sharma <bhupesh.sharma@linaro.org>
[Make header file inclusion alphabetical and use devm_of_icc_get()]
Signed-off-by: Thara Gopinath <thara.gopinath@linaro.org>
---
 drivers/crypto/qce/core.c | 34 +++++++++++++++++++++++++++-------
 drivers/crypto/qce/core.h |  1 +
 2 files changed, 28 insertions(+), 7 deletions(-)

diff --git a/drivers/crypto/qce/core.c b/drivers/crypto/qce/core.c
index d3780be44a76..89d9c01ba009 100644
--- a/drivers/crypto/qce/core.c
+++ b/drivers/crypto/qce/core.c
@@ -5,6 +5,7 @@
 
 #include <linux/clk.h>
 #include <linux/dma-mapping.h>
+#include <linux/interconnect.h>
 #include <linux/interrupt.h>
 #include <linux/module.h>
 #include <linux/mod_devicetable.h>
@@ -22,6 +23,8 @@
 #define QCE_MAJOR_VERSION5	0x05
 #define QCE_QUEUE_LENGTH	1
 
+#define QCE_DEFAULT_MEM_BANDWIDTH	393600
+
 static const struct qce_algo_ops *qce_ops[] = {
 #ifdef CONFIG_CRYPTO_DEV_QCE_SKCIPHER
 	&skcipher_ops,
@@ -206,21 +209,35 @@ static int qce_crypto_probe(struct platform_device *pdev)
 	if (ret < 0)
 		return ret;
 
+	qce->mem_path = devm_of_icc_get(qce->dev, "memory");
+	if (IS_ERR(qce->mem_path))
+		return PTR_ERR(qce->mem_path);
+
 	qce->core = devm_clk_get(qce->dev, "core");
-	if (IS_ERR(qce->core))
-		return PTR_ERR(qce->core);
+	if (IS_ERR(qce->core)) {
+		ret = PTR_ERR(qce->core);
+		goto err;
+	}
 
 	qce->iface = devm_clk_get(qce->dev, "iface");
-	if (IS_ERR(qce->iface))
-		return PTR_ERR(qce->iface);
+	if (IS_ERR(qce->iface)) {
+		ret = PTR_ERR(qce->iface);
+		goto err;
+	}
 
 	qce->bus = devm_clk_get(qce->dev, "bus");
-	if (IS_ERR(qce->bus))
-		return PTR_ERR(qce->bus);
+	if (IS_ERR(qce->bus)) {
+		ret = PTR_ERR(qce->bus);
+		goto err;
+	}
+
+	ret = icc_set_bw(qce->mem_path, QCE_DEFAULT_MEM_BANDWIDTH, QCE_DEFAULT_MEM_BANDWIDTH);
+	if (ret)
+		goto err;
 
 	ret = clk_prepare_enable(qce->core);
 	if (ret)
-		return ret;
+		goto err_mem_path_disable;
 
 	ret = clk_prepare_enable(qce->iface);
 	if (ret)
@@ -260,6 +277,9 @@ static int qce_crypto_probe(struct platform_device *pdev)
 	clk_disable_unprepare(qce->iface);
 err_clks_core:
 	clk_disable_unprepare(qce->core);
+err_mem_path_disable:
+	icc_set_bw(qce->mem_path, 0, 0);
+err:
 	return ret;
 }
 
diff --git a/drivers/crypto/qce/core.h b/drivers/crypto/qce/core.h
index 085774cdf641..228fcd69ec51 100644
--- a/drivers/crypto/qce/core.h
+++ b/drivers/crypto/qce/core.h
@@ -35,6 +35,7 @@ struct qce_device {
 	void __iomem *base;
 	struct device *dev;
 	struct clk *core, *iface, *bus;
+	struct icc_path *mem_path;
 	struct qce_dma_data dma;
 	int burst_size;
 	unsigned int pipe_pair_id;
-- 
2.31.1


  parent reply	other threads:[~2021-11-10 11:01 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-10 10:59 [PATCH v5 00/22] Enable Qualcomm Crypto Engine on sm8150 & sm8250 Bhupesh Sharma
2021-11-10 10:59 ` [PATCH v5 01/22] arm64: dts: qcom: msm8996: Fix qcom,controlled-remotely property Bhupesh Sharma
2021-11-10 10:59 ` [PATCH v5 02/22] arm64: dts: qcom: msm8996: Fix 'dma' nodes in dts Bhupesh Sharma
2021-11-17  5:53   ` Vinod Koul
2021-11-10 10:59 ` [PATCH v5 03/22] dt-bindings: qcom-bam: Convert binding to YAML Bhupesh Sharma
2021-11-10 19:44   ` Rob Herring
2021-11-15  6:04     ` Bhupesh Sharma
2021-11-12  8:41   ` Vladimir Zapolskiy
2021-11-15  6:00     ` Bhupesh Sharma
2021-11-13 19:13   ` Bjorn Andersson
2021-11-15  8:05     ` Bhupesh Sharma
2021-11-10 10:59 ` [PATCH v5 04/22] dt-bindings: qcom-bam: Add 'interconnects' & 'interconnect-names' to optional properties Bhupesh Sharma
2021-11-18 23:52   ` Rob Herring
2021-11-10 10:59 ` [PATCH v5 05/22] dt-bindings: qcom-bam: Add 'iommus' " Bhupesh Sharma
2021-11-18 23:52   ` Rob Herring
2021-11-10 10:59 ` [PATCH v5 06/22] dt-bindings: qcom-bam: Add "powered remotely" mode Bhupesh Sharma
2021-11-12 10:20   ` Vladimir Zapolskiy
2021-11-10 10:59 ` [PATCH v5 07/22] dt-bindings: qcom-qce: Convert bindings to yaml Bhupesh Sharma
2021-11-13 19:41   ` Bjorn Andersson
2021-11-10 10:59 ` [PATCH v5 08/22] dt-bindings: qcom-qce: Add 'interconnects' and 'interconnect-names' Bhupesh Sharma
2021-11-18 23:53   ` Rob Herring
2021-11-10 10:59 ` [PATCH v5 09/22] dt-bindings: qcom-qce: Move 'clocks' to optional properties Bhupesh Sharma
2021-11-13 20:02   ` Bjorn Andersson
2021-11-15  5:34     ` Bhupesh Sharma
2021-11-18 23:57       ` Rob Herring
2021-11-10 10:59 ` [PATCH v5 10/22] dt-bindings: qcom-qce: Add 'iommus' " Bhupesh Sharma
2021-11-13 21:23   ` Bjorn Andersson
2021-11-10 10:59 ` [PATCH v5 11/22] dt-bindings: crypto : Add new compatible strings for qcom-qce Bhupesh Sharma
2021-11-12 10:25   ` Vladimir Zapolskiy
2021-11-15  5:28     ` Bhupesh Sharma
2021-11-10 10:59 ` [PATCH v5 12/22] arm64/dts: qcom: Use new compatibles for crypto nodes Bhupesh Sharma
2021-11-12 10:26   ` Vladimir Zapolskiy
2021-11-15  5:04     ` Bhupesh Sharma
2021-11-10 10:59 ` [PATCH v5 13/22] dma: qcom: bam_dma: Add support to initialize interconnect path Bhupesh Sharma
2021-11-12 10:32   ` Vladimir Zapolskiy
2021-11-15  5:27     ` Bhupesh Sharma
2021-11-15 17:53   ` Bjorn Andersson
2022-05-12 23:39   ` Dmitry Baryshkov
2021-11-10 10:59 ` Bhupesh Sharma [this message]
2021-11-12 10:40   ` [PATCH v5 14/22] crypto: qce: core: " Vladimir Zapolskiy
2021-11-15 18:25   ` Bjorn Andersson
2021-11-10 10:59 ` [PATCH v5 15/22] crypto: qce: Add new compatibles for qce crypto driver Bhupesh Sharma
2021-11-12 10:36   ` Vladimir Zapolskiy
2021-11-15  5:07     ` Bhupesh Sharma
2021-11-10 10:59 ` [PATCH v5 16/22] crypto: qce: core: Make clocks optional Bhupesh Sharma
2021-11-15 18:06   ` Bjorn Andersson
2021-11-10 10:59 ` [PATCH v5 17/22] crypto: qce: Print a failure msg in case probe() fails Bhupesh Sharma
2021-11-12 10:42   ` Vladimir Zapolskiy
2021-11-15  5:14     ` Bhupesh Sharma
2021-11-15 18:10   ` Bjorn Andersson
2021-11-10 10:59 ` [PATCH v5 18/22] crypto: qce: Defer probing if BAM dma channel is not yet initialized Bhupesh Sharma
2021-11-15 18:29   ` Bjorn Andersson
2021-11-10 10:59 ` [PATCH v5 19/22] crypto: qce: Add 'sm8250-qce' compatible string check Bhupesh Sharma
2021-11-15 18:32   ` Bjorn Andersson
2021-11-10 10:59 ` [PATCH v5 20/22] crypto: qce: Add 'sm8150-qce' " Bhupesh Sharma
2021-11-10 10:59 ` [PATCH v5 21/22] arm64/dts: qcom: sm8250: Add dt entries to support crypto engine Bhupesh Sharma
2021-11-15 18:34   ` Bjorn Andersson
2021-11-15 20:11   ` Bjorn Andersson
2021-11-10 10:59 ` [PATCH v5 22/22] arm64/dts: qcom: sm8150: " Bhupesh Sharma
2022-02-11 21:49 ` [PATCH v5 00/22] Enable Qualcomm Crypto Engine on sm8150 & sm8250 Jordan Crouse

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211110105922.217895-15-bhupesh.sharma@linaro.org \
    --to=bhupesh.sharma@linaro.org \
    --cc=agross@kernel.org \
    --cc=bhupesh.linux@gmail.com \
    --cc=bjorn.andersson@linaro.org \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=stephan@gerhold.net \
    --cc=thara.gopinath@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).