All of lore.kernel.org
 help / color / mirror / Atom feed
* [RESEND 0/2] Port mxs-dcp to imx6ull and imx6sll
@ 2018-11-07 15:33 Leonard Crestez
  2018-11-07 15:33 ` [RESEND 1/2] dt-bindings: crypto: Mention clocks for mxs-dcp Leonard Crestez
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Leonard Crestez @ 2018-11-07 15:33 UTC (permalink / raw)
  To: Herbert Xu, David S . Miller , Marek Vasut
  Cc: Horia Geanta, Franck Lenormand, Fabio Estevam, Shawn Guo,
	linux-crypto, dl-linux-imx, kernel, linux-kernel

The DCP block is present on 6sll and 6ull but not enabled. The hardware is
mostly compatible with 6sl, the only important difference is that explicit
clock enabling is required.

All patches already have review tags from a few weeks ago. No changes
relative to v4: https://lore.kernel.org/patchwork/cover/1001134/

Patches 3/4 were already accepted by Shawn Guo for the imx tree, this
resend is just for the crypto parts now that the merge window is over.

Leonard Crestez (2):
  dt-bindings: crypto: Mention clocks for mxs-dcp
  crypto: mxs-dcp - Add support for dcp clk

 .../devicetree/bindings/crypto/fsl-dcp.txt    |  2 ++
 drivers/crypto/mxs-dcp.c                      | 28 +++++++++++++++++--
 2 files changed, 27 insertions(+), 3 deletions(-)

-- 
2.17.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [RESEND 1/2] dt-bindings: crypto: Mention clocks for mxs-dcp
  2018-11-07 15:33 [RESEND 0/2] Port mxs-dcp to imx6ull and imx6sll Leonard Crestez
@ 2018-11-07 15:33 ` Leonard Crestez
  2018-11-07 15:33 ` [RESEND 2/2] crypto: mxs-dcp - Add support for dcp clk Leonard Crestez
  2018-11-16  6:19 ` [RESEND 0/2] Port mxs-dcp to imx6ull and imx6sll Herbert Xu
  2 siblings, 0 replies; 4+ messages in thread
From: Leonard Crestez @ 2018-11-07 15:33 UTC (permalink / raw)
  To: Herbert Xu, David S . Miller , Marek Vasut
  Cc: Horia Geanta, Franck Lenormand, Fabio Estevam, Shawn Guo,
	linux-crypto, dl-linux-imx, kernel, linux-kernel

Explicit clock enabling is required on 6sll and 6ull so mention that
standard clock bindings are used.

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/crypto/fsl-dcp.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/crypto/fsl-dcp.txt b/Documentation/devicetree/bindings/crypto/fsl-dcp.txt
index 76a0b4e80e83..4e4d387e38a5 100644
--- a/Documentation/devicetree/bindings/crypto/fsl-dcp.txt
+++ b/Documentation/devicetree/bindings/crypto/fsl-dcp.txt
@@ -4,10 +4,12 @@ Required properties:
 - compatible : Should be "fsl,<soc>-dcp"
 - reg : Should contain MXS DCP registers location and length
 - interrupts : Should contain MXS DCP interrupt numbers, VMI IRQ and DCP IRQ
                must be supplied, optionally Secure IRQ can be present, but
 	       is currently not implemented and not used.
+- clocks : Clock reference (only required on some SOCs: 6ull and 6sll).
+- clock-names : Must be "dcp".
 
 Example:
 
 dcp@80028000 {
 	compatible = "fsl,imx28-dcp", "fsl,imx23-dcp";
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [RESEND 2/2] crypto: mxs-dcp - Add support for dcp clk
  2018-11-07 15:33 [RESEND 0/2] Port mxs-dcp to imx6ull and imx6sll Leonard Crestez
  2018-11-07 15:33 ` [RESEND 1/2] dt-bindings: crypto: Mention clocks for mxs-dcp Leonard Crestez
@ 2018-11-07 15:33 ` Leonard Crestez
  2018-11-16  6:19 ` [RESEND 0/2] Port mxs-dcp to imx6ull and imx6sll Herbert Xu
  2 siblings, 0 replies; 4+ messages in thread
From: Leonard Crestez @ 2018-11-07 15:33 UTC (permalink / raw)
  To: Herbert Xu, David S . Miller , Marek Vasut
  Cc: Horia Geanta, Franck Lenormand, Fabio Estevam, Shawn Guo,
	linux-crypto, dl-linux-imx, kernel, linux-kernel

On 6ull and 6sll the DCP block has a clock which needs to be explicitly
enabled.

Add minimal handling for this at probe/remove time.

Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com>
Reviewed-by: Fabio Estevam <festevam@gmail.com>
---
 drivers/crypto/mxs-dcp.c | 28 +++++++++++++++++++++++++---
 1 file changed, 25 insertions(+), 3 deletions(-)

diff --git a/drivers/crypto/mxs-dcp.c b/drivers/crypto/mxs-dcp.c
index 4e6ff32f8a7e..a2105cf33abb 100644
--- a/drivers/crypto/mxs-dcp.c
+++ b/drivers/crypto/mxs-dcp.c
@@ -18,10 +18,11 @@
 #include <linux/kthread.h>
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/stmp_device.h>
+#include <linux/clk.h>
 
 #include <crypto/aes.h>
 #include <crypto/sha.h>
 #include <crypto/internal/hash.h>
 #include <crypto/internal/skcipher.h>
@@ -80,10 +81,11 @@ struct dcp {
 
 	struct completion		completion[DCP_MAX_CHANS];
 	spinlock_t			lock[DCP_MAX_CHANS];
 	struct task_struct		*thread[DCP_MAX_CHANS];
 	struct crypto_queue		queue[DCP_MAX_CHANS];
+	struct clk			*dcp_clk;
 };
 
 enum dcp_chan {
 	DCP_CHAN_HASH_SHA	= 0,
 	DCP_CHAN_CRYPTO		= 2,
@@ -1051,15 +1053,28 @@ static int mxs_dcp_probe(struct platform_device *pdev)
 		return -ENOMEM;
 
 	/* Re-align the structure so it fits the DCP constraints. */
 	sdcp->coh = PTR_ALIGN(sdcp->coh, DCP_ALIGNMENT);
 
-	/* Restart the DCP block. */
-	ret = stmp_reset_block(sdcp->base);
+	/* DCP clock is optional, only used on some SOCs */
+	sdcp->dcp_clk = devm_clk_get(dev, "dcp");
+	if (IS_ERR(sdcp->dcp_clk)) {
+		if (sdcp->dcp_clk != ERR_PTR(-ENOENT))
+			return PTR_ERR(sdcp->dcp_clk);
+		sdcp->dcp_clk = NULL;
+	}
+	ret = clk_prepare_enable(sdcp->dcp_clk);
 	if (ret)
 		return ret;
 
+	/* Restart the DCP block. */
+	ret = stmp_reset_block(sdcp->base);
+	if (ret) {
+		dev_err(dev, "Failed reset\n");
+		goto err_disable_unprepare_clk;
+	}
+
 	/* Initialize control register. */
 	writel(MXS_DCP_CTRL_GATHER_RESIDUAL_WRITES |
 	       MXS_DCP_CTRL_ENABLE_CONTEXT_CACHING | 0xf,
 	       sdcp->base + MXS_DCP_CTRL);
 
@@ -1092,11 +1107,12 @@ static int mxs_dcp_probe(struct platform_device *pdev)
 	/* Create the SHA and AES handler threads. */
 	sdcp->thread[DCP_CHAN_HASH_SHA] = kthread_run(dcp_chan_thread_sha,
 						      NULL, "mxs_dcp_chan/sha");
 	if (IS_ERR(sdcp->thread[DCP_CHAN_HASH_SHA])) {
 		dev_err(dev, "Error starting SHA thread!\n");
-		return PTR_ERR(sdcp->thread[DCP_CHAN_HASH_SHA]);
+		ret = PTR_ERR(sdcp->thread[DCP_CHAN_HASH_SHA]);
+		goto err_disable_unprepare_clk;
 	}
 
 	sdcp->thread[DCP_CHAN_CRYPTO] = kthread_run(dcp_chan_thread_aes,
 						    NULL, "mxs_dcp_chan/aes");
 	if (IS_ERR(sdcp->thread[DCP_CHAN_CRYPTO])) {
@@ -1149,10 +1165,14 @@ static int mxs_dcp_probe(struct platform_device *pdev)
 err_destroy_aes_thread:
 	kthread_stop(sdcp->thread[DCP_CHAN_CRYPTO]);
 
 err_destroy_sha_thread:
 	kthread_stop(sdcp->thread[DCP_CHAN_HASH_SHA]);
+
+err_disable_unprepare_clk:
+	clk_disable_unprepare(sdcp->dcp_clk);
+
 	return ret;
 }
 
 static int mxs_dcp_remove(struct platform_device *pdev)
 {
@@ -1168,10 +1188,12 @@ static int mxs_dcp_remove(struct platform_device *pdev)
 		crypto_unregister_algs(dcp_aes_algs, ARRAY_SIZE(dcp_aes_algs));
 
 	kthread_stop(sdcp->thread[DCP_CHAN_HASH_SHA]);
 	kthread_stop(sdcp->thread[DCP_CHAN_CRYPTO]);
 
+	clk_disable_unprepare(sdcp->dcp_clk);
+
 	platform_set_drvdata(pdev, NULL);
 
 	global_sdcp = NULL;
 
 	return 0;
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [RESEND 0/2] Port mxs-dcp to imx6ull and imx6sll
  2018-11-07 15:33 [RESEND 0/2] Port mxs-dcp to imx6ull and imx6sll Leonard Crestez
  2018-11-07 15:33 ` [RESEND 1/2] dt-bindings: crypto: Mention clocks for mxs-dcp Leonard Crestez
  2018-11-07 15:33 ` [RESEND 2/2] crypto: mxs-dcp - Add support for dcp clk Leonard Crestez
@ 2018-11-16  6:19 ` Herbert Xu
  2 siblings, 0 replies; 4+ messages in thread
From: Herbert Xu @ 2018-11-16  6:19 UTC (permalink / raw)
  To: Leonard Crestez
  Cc: David S . Miller ,
	Marek Vasut, Horia Geanta, Franck Lenormand, Fabio Estevam,
	Shawn Guo, linux-crypto, dl-linux-imx, kernel, linux-kernel

On Wed, Nov 07, 2018 at 03:33:30PM +0000, Leonard Crestez wrote:
> The DCP block is present on 6sll and 6ull but not enabled. The hardware is
> mostly compatible with 6sl, the only important difference is that explicit
> clock enabling is required.
> 
> All patches already have review tags from a few weeks ago. No changes
> relative to v4: https://lore.kernel.org/patchwork/cover/1001134/
> 
> Patches 3/4 were already accepted by Shawn Guo for the imx tree, this
> resend is just for the crypto parts now that the merge window is over.
> 
> Leonard Crestez (2):
>   dt-bindings: crypto: Mention clocks for mxs-dcp
>   crypto: mxs-dcp - Add support for dcp clk
> 
>  .../devicetree/bindings/crypto/fsl-dcp.txt    |  2 ++
>  drivers/crypto/mxs-dcp.c                      | 28 +++++++++++++++++--
>  2 files changed, 27 insertions(+), 3 deletions(-)

All applied.  Thanks.
-- 
Email: Herbert Xu <herbert@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-11-16 16:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-07 15:33 [RESEND 0/2] Port mxs-dcp to imx6ull and imx6sll Leonard Crestez
2018-11-07 15:33 ` [RESEND 1/2] dt-bindings: crypto: Mention clocks for mxs-dcp Leonard Crestez
2018-11-07 15:33 ` [RESEND 2/2] crypto: mxs-dcp - Add support for dcp clk Leonard Crestez
2018-11-16  6:19 ` [RESEND 0/2] Port mxs-dcp to imx6ull and imx6sll Herbert Xu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.