2020-05-16 04:23:54

by Andrey Smirnov

[permalink] [raw]
Subject: [PATCH] crypto: caam - make soc match data optional

Vyrbrid devices don't have any clock that need to be taken care of, so
make clock data optional on i.MX.

Signed-off-by: Andrey Smirnov <[email protected]>
Cc: Chris Healy <[email protected]>
Cc: Horia Geantă <[email protected]>
Cc: Herbert Xu <[email protected]>
Cc: Fabio Estevam <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
drivers/crypto/caam/ctrl.c | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
index 4fcdd262e581..6aba430793cc 100644
--- a/drivers/crypto/caam/ctrl.c
+++ b/drivers/crypto/caam/ctrl.c
@@ -630,12 +630,7 @@ static int caam_probe(struct platform_device *pdev)
imx_soc_match = soc_device_match(caam_imx_soc_table);
caam_imx = (bool)imx_soc_match;

- if (imx_soc_match) {
- if (!imx_soc_match->data) {
- dev_err(dev, "No clock data provided for i.MX SoC");
- return -EINVAL;
- }
-
+ if (imx_soc_match && imx_soc_match->data) {
ret = init_clocks(dev, imx_soc_match->data);
if (ret)
return ret;
--
2.21.3


2020-05-16 16:43:44

by Chris Healy

[permalink] [raw]
Subject: Re: [PATCH] crypto: caam - make soc match data optional

With all four of Vybrid VF610, i.MX6q, i.MX6qp, and i.MX8M, this patch
caused no regressions for me. Additionally, with the VF610 and a
follow on devicetree patch, the CAAM is detected and works.

Tested by: Chris Healy <[email protected]>

On Fri, May 15, 2020 at 9:23 PM Andrey Smirnov <[email protected]> wrote:
>
> Vyrbrid devices don't have any clock that need to be taken care of, so
> make clock data optional on i.MX.
>
> Signed-off-by: Andrey Smirnov <[email protected]>
> Cc: Chris Healy <[email protected]>
> Cc: Horia Geantă <[email protected]>
> Cc: Herbert Xu <[email protected]>
> Cc: Fabio Estevam <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> ---
> drivers/crypto/caam/ctrl.c | 7 +------
> 1 file changed, 1 insertion(+), 6 deletions(-)
>
> diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c
> index 4fcdd262e581..6aba430793cc 100644
> --- a/drivers/crypto/caam/ctrl.c
> +++ b/drivers/crypto/caam/ctrl.c
> @@ -630,12 +630,7 @@ static int caam_probe(struct platform_device *pdev)
> imx_soc_match = soc_device_match(caam_imx_soc_table);
> caam_imx = (bool)imx_soc_match;
>
> - if (imx_soc_match) {
> - if (!imx_soc_match->data) {
> - dev_err(dev, "No clock data provided for i.MX SoC");
> - return -EINVAL;
> - }
> -
> + if (imx_soc_match && imx_soc_match->data) {
> ret = init_clocks(dev, imx_soc_match->data);
> if (ret)
> return ret;
> --
> 2.21.3

2020-05-18 20:01:39

by Horia Geanta

[permalink] [raw]
Subject: Re: [PATCH] crypto: caam - make soc match data optional

On 5/16/2020 7:23 AM, Andrey Smirnov wrote:
> Vyrbrid devices don't have any clock that need to be taken care of, so
> make clock data optional on i.MX.
>
Vybrid Security RM states that IPG clock used by CAAM
can be gated by CCM_CCGR11[CG176].

Clock driver needs to be updated accordingly,
and so will CAAM driver and DT node.

I don't have a board at hand, so patch below is not tested.

Horia

------ >8 ------

Subject: [PATCH] clk: imx: vf610: add CAAM clock

According to Vybrid Security RM, CCM_CCGR11[CG176] can be used to
gate CAAM ipg clock.

Signed-off-by: Horia Geantă <[email protected]>
---
drivers/clk/imx/clk-vf610.c | 2 ++
include/dt-bindings/clock/vf610-clock.h | 3 ++-
2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/imx/clk-vf610.c b/drivers/clk/imx/clk-vf610.c
index cd04e7dc1878..4f3066cf1b89 100644
--- a/drivers/clk/imx/clk-vf610.c
+++ b/drivers/clk/imx/clk-vf610.c
@@ -439,6 +439,8 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
clk[VF610_CLK_DAP] = imx_clk_gate("dap", "platform_bus", CCM_CCSR, 24);
clk[VF610_CLK_OCOTP] = imx_clk_gate("ocotp", "ipg_bus", CCM_CCGR6, CCM_CCGRx_CGn(5));

+ clk[VF610_CLK_CAAM] = imx_clk_gate2("caam", "ipg_bus", CCM_CCGR11, CCM_CCGRx_CGn(0));
+
imx_check_clocks(clk, ARRAY_SIZE(clk));

clk_set_parent(clk[VF610_CLK_QSPI0_SEL], clk[VF610_CLK_PLL1_PFD4]);
diff --git a/include/dt-bindings/clock/vf610-clock.h b/include/dt-bindings/clock/vf610-clock.h
index 95394f35a74a..0f2d60e884dc 100644
--- a/include/dt-bindings/clock/vf610-clock.h
+++ b/include/dt-bindings/clock/vf610-clock.h
@@ -195,6 +195,7 @@
#define VF610_CLK_WKPU 186
#define VF610_CLK_TCON0 187
#define VF610_CLK_TCON1 188
-#define VF610_CLK_END 189
+#define VF610_CLK_CAAM 189
+#define VF610_CLK_END 190

#endif /* __DT_BINDINGS_CLOCK_VF610_H */
--
2.17.1

2020-05-20 03:18:21

by Andrey Smirnov

[permalink] [raw]
Subject: Re: [PATCH] crypto: caam - make soc match data optional

On Mon, May 18, 2020 at 6:59 PM Horia Geantă <[email protected]> wrote:
>
> On 5/16/2020 7:23 AM, Andrey Smirnov wrote:
> > Vyrbrid devices don't have any clock that need to be taken care of, so
> > make clock data optional on i.MX.
> >
> Vybrid Security RM states that IPG clock used by CAAM
> can be gated by CCM_CCGR11[CG176].
>

Cool, looks like I missed this when I was looking through RM.

> Clock driver needs to be updated accordingly,
> and so will CAAM driver and DT node.
>
> I don't have a board at hand, so patch below is not tested.
>

I'll take it from here and test/submit appropriate patches. Thanks!

> Horia
>
> ------ >8 ------
>
> Subject: [PATCH] clk: imx: vf610: add CAAM clock
>
> According to Vybrid Security RM, CCM_CCGR11[CG176] can be used to
> gate CAAM ipg clock.
>
> Signed-off-by: Horia Geantă <[email protected]>
> ---
> drivers/clk/imx/clk-vf610.c | 2 ++
> include/dt-bindings/clock/vf610-clock.h | 3 ++-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/clk/imx/clk-vf610.c b/drivers/clk/imx/clk-vf610.c
> index cd04e7dc1878..4f3066cf1b89 100644
> --- a/drivers/clk/imx/clk-vf610.c
> +++ b/drivers/clk/imx/clk-vf610.c
> @@ -439,6 +439,8 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
> clk[VF610_CLK_DAP] = imx_clk_gate("dap", "platform_bus", CCM_CCSR, 24);
> clk[VF610_CLK_OCOTP] = imx_clk_gate("ocotp", "ipg_bus", CCM_CCGR6, CCM_CCGRx_CGn(5));
>
> + clk[VF610_CLK_CAAM] = imx_clk_gate2("caam", "ipg_bus", CCM_CCGR11, CCM_CCGRx_CGn(0));
> +
> imx_check_clocks(clk, ARRAY_SIZE(clk));
>
> clk_set_parent(clk[VF610_CLK_QSPI0_SEL], clk[VF610_CLK_PLL1_PFD4]);
> diff --git a/include/dt-bindings/clock/vf610-clock.h b/include/dt-bindings/clock/vf610-clock.h
> index 95394f35a74a..0f2d60e884dc 100644
> --- a/include/dt-bindings/clock/vf610-clock.h
> +++ b/include/dt-bindings/clock/vf610-clock.h
> @@ -195,6 +195,7 @@
> #define VF610_CLK_WKPU 186
> #define VF610_CLK_TCON0 187
> #define VF610_CLK_TCON1 188
> -#define VF610_CLK_END 189
> +#define VF610_CLK_CAAM 189
> +#define VF610_CLK_END 190
>
> #endif /* __DT_BINDINGS_CLOCK_VF610_H */
> --
> 2.17.1