Pick commit 699e491bac84a2069c7abeacf2f4367ecb19fa9c from Linux upstream. crypto: caam - do not use mem and emi_slow clock for imx7x I.MX7x only use two clocks for the CAAM module, so make sure we do not try to use the mem and the emi_slow clock when running in that imx7d and imx7s machine type. Cc: "Horia Geantă" <horia.geanta@xxxxxxx> Cc: Aymen Sghaier <aymen.sghaier@xxxxxxx> Cc: Fabio Estevam <fabio.estevam@xxxxxxx> Cc: Peng Fan <peng.fan@xxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: Lukas Auer <lukas.auer@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Rui Miguel Silva <rui.silva@xxxxxxxxxx> Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Marcin Niestroj <m.niestroj@xxxxxxxxxxxxxxxx> --- drivers/crypto/caam/ctrl.c | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/drivers/crypto/caam/ctrl.c b/drivers/crypto/caam/ctrl.c index 681200594..24c98df5a 100644 --- a/drivers/crypto/caam/ctrl.c +++ b/drivers/crypto/caam/ctrl.c @@ -225,7 +225,8 @@ static void caam_remove(struct device_d *dev) /* shut clocks off before finalizing shutdown */ clk_disable(ctrlpriv->caam_ipg); - clk_disable(ctrlpriv->caam_mem); + if (ctrlpriv->caam_mem) + clk_disable(ctrlpriv->caam_mem); clk_disable(ctrlpriv->caam_aclk); if (ctrlpriv->caam_emi_slow) clk_disable(ctrlpriv->caam_emi_slow); @@ -324,11 +325,15 @@ static int caam_probe(struct device_d *dev) return -ENODEV; } - ctrlpriv->caam_mem = clk_get(dev, "mem"); - if (IS_ERR(ctrlpriv->caam_mem)) { - ret = PTR_ERR(ctrlpriv->caam_mem); - dev_err(dev, "can't identify CAAM secure mem clk: %d\n", ret); - return -ENODEV; + if (!of_machine_is_compatible("fsl,imx7d") && + !of_machine_is_compatible("fsl,imx7s")) { + ctrlpriv->caam_mem = clk_get(dev, "mem"); + if (IS_ERR(ctrlpriv->caam_mem)) { + ret = PTR_ERR(ctrlpriv->caam_mem); + dev_err(dev, + "can't identify CAAM mem clk: %d\n", ret); + return -ENODEV; + } } ctrlpriv->caam_aclk = clk_get(dev, "aclk"); @@ -339,7 +344,9 @@ static int caam_probe(struct device_d *dev) return -ENODEV; } - if (!of_machine_is_compatible("fsl,imx6ul")) { + if (!of_machine_is_compatible("fsl,imx6ul") && + !of_machine_is_compatible("fsl,imx7d") && + !of_machine_is_compatible("fsl,imx7s")) { ctrlpriv->caam_emi_slow = clk_get(dev, "emi_slow"); if (IS_ERR(ctrlpriv->caam_emi_slow)) { ret = PTR_ERR(ctrlpriv->caam_emi_slow); @@ -355,11 +362,13 @@ static int caam_probe(struct device_d *dev) return -ENODEV; } - ret = clk_enable(ctrlpriv->caam_mem); - if (ret < 0) { - dev_err(dev, "can't enable CAAM secure mem clock: %d\n", - ret); - return -ENODEV; + if (ctrlpriv->caam_mem) { + ret = clk_enable(ctrlpriv->caam_mem); + if (ret < 0) { + dev_err(dev, "can't enable CAAM secure mem clock: %d\n", + ret); + return -ENODEV; + } } ret = clk_enable(ctrlpriv->caam_aclk); -- 2.18.0 _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox