Commit 699e491b authored by Rui Miguel Silva's avatar Rui Miguel Silva Committed by Herbert Xu
Browse files

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@nxp.com>
Cc: Aymen Sghaier <aymen.sghaier@nxp.com>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
Cc: Peng Fan <peng.fan@nxp.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Lukas Auer <lukas.auer@aisec.fraunhofer.de>
Signed-off-by: default avatarRui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent b85149f6
Loading
Loading
Loading
Loading
+24 −15
Original line number Diff line number Diff line
@@ -337,6 +337,7 @@ static int caam_remove(struct platform_device *pdev)

	/* shut clocks off before finalizing shutdown */
	clk_disable_unprepare(ctrlpriv->caam_ipg);
	if (ctrlpriv->caam_mem)
		clk_disable_unprepare(ctrlpriv->caam_mem);
	clk_disable_unprepare(ctrlpriv->caam_aclk);
	if (ctrlpriv->caam_emi_slow)
@@ -466,6 +467,8 @@ static int caam_probe(struct platform_device *pdev)
	}
	ctrlpriv->caam_ipg = clk;

	if (!of_machine_is_compatible("fsl,imx7d") &&
	    !of_machine_is_compatible("fsl,imx7s")) {
		clk = caam_drv_identify_clk(&pdev->dev, "mem");
		if (IS_ERR(clk)) {
			ret = PTR_ERR(clk);
@@ -474,6 +477,7 @@ static int caam_probe(struct platform_device *pdev)
			return ret;
		}
		ctrlpriv->caam_mem = clk;
	}

	clk = caam_drv_identify_clk(&pdev->dev, "aclk");
	if (IS_ERR(clk)) {
@@ -484,7 +488,9 @@ static int caam_probe(struct platform_device *pdev)
	}
	ctrlpriv->caam_aclk = clk;

	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")) {
		clk = caam_drv_identify_clk(&pdev->dev, "emi_slow");
		if (IS_ERR(clk)) {
			ret = PTR_ERR(clk);
@@ -501,12 +507,14 @@ static int caam_probe(struct platform_device *pdev)
		return ret;
	}

	if (ctrlpriv->caam_mem) {
		ret = clk_prepare_enable(ctrlpriv->caam_mem);
		if (ret < 0) {
			dev_err(&pdev->dev, "can't enable CAAM secure mem clock: %d\n",
				ret);
			goto disable_caam_ipg;
		}
	}

	ret = clk_prepare_enable(ctrlpriv->caam_aclk);
	if (ret < 0) {
@@ -826,6 +834,7 @@ disable_caam_emi_slow:
disable_caam_aclk:
	clk_disable_unprepare(ctrlpriv->caam_aclk);
disable_caam_mem:
	if (ctrlpriv->caam_mem)
		clk_disable_unprepare(ctrlpriv->caam_mem);
disable_caam_ipg:
	clk_disable_unprepare(ctrlpriv->caam_ipg);