Commit f414de2e authored by Andrey Smirnov's avatar Andrey Smirnov Committed by Herbert Xu
Browse files

crypto: caam - use devres to de-initialize QI



Use devres to de-initialize the QI and drop explicit de-initialization
code in caam_remove().

Signed-off-by: default avatarAndrey Smirnov <andrew.smirnov@gmail.com>
Reviewed-by: default avatarHoria Geantă <horia.geanta@nxp.com>
Cc: Chris Healy <cphealy@gmail.com>
Cc: Lucas Stach <l.stach@pengutronix.de>
Cc: Horia Geantă <horia.geanta@nxp.com>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Iuliana Prodan <iuliana.prodan@nxp.com>
Cc: linux-crypto@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent e57acaf0
Loading
Loading
Loading
Loading
+1 −13
Original line number Diff line number Diff line
@@ -332,11 +332,6 @@ static int caam_remove(struct platform_device *pdev)
	/* Remove platform devices under the crypto node */
	of_platform_depopulate(ctrldev);

#ifdef CONFIG_CAAM_QI
	if (ctrlpriv->qi_init)
		caam_qi_shutdown(ctrldev);
#endif

	return 0;
}

@@ -769,7 +764,7 @@ static int caam_probe(struct platform_device *pdev)
	ret = of_platform_populate(nprop, caam_match, NULL, dev);
	if (ret) {
		dev_err(dev, "JR platform devices creation error\n");
		goto shutdown_qi;
		return ret;
	}

	ring = 0;
@@ -930,13 +925,6 @@ static int caam_probe(struct platform_device *pdev)
caam_remove:
	caam_remove(pdev);
	return ret;

shutdown_qi:
#ifdef CONFIG_CAAM_QI
	if (ctrlpriv->qi_init)
		caam_qi_shutdown(dev);
#endif
	return ret;
}

static struct platform_driver caam_driver = {
+0 −3
Original line number Diff line number Diff line
@@ -81,9 +81,6 @@ struct caam_drv_private {
	 */
	u8 total_jobrs;		/* Total Job Rings in device */
	u8 qi_present;		/* Nonzero if QI present in device */
#ifdef CONFIG_CAAM_QI
	u8 qi_init;		/* Nonzero if QI has been initialized */
#endif
	u8 mc_en;		/* Nonzero if MC f/w is active */
	int secvio_irq;		/* Security violation interrupt number */
	int virt_en;		/* Virtualization enabled in CAAM */
+6 −2
Original line number Diff line number Diff line
@@ -500,9 +500,10 @@ void caam_drv_ctx_rel(struct caam_drv_ctx *drv_ctx)
}
EXPORT_SYMBOL(caam_drv_ctx_rel);

void caam_qi_shutdown(struct device *qidev)
static void caam_qi_shutdown(void *data)
{
	int i;
	struct device *qidev = data;
	struct caam_qi_priv *priv = &qipriv;
	const cpumask_t *cpus = qman_affine_cpus();

@@ -761,7 +762,10 @@ int caam_qi_init(struct platform_device *caam_pdev)
			    &times_congested, &caam_fops_u64_ro);
#endif

	ctrlpriv->qi_init = 1;
	err = devm_add_action_or_reset(qidev, caam_qi_shutdown, ctrlpriv);
	if (err)
		return err;

	dev_info(qidev, "Linux CAAM Queue I/F driver initialised\n");
	return 0;
}
+0 −1
Original line number Diff line number Diff line
@@ -147,7 +147,6 @@ int caam_drv_ctx_update(struct caam_drv_ctx *drv_ctx, u32 *sh_desc);
void caam_drv_ctx_rel(struct caam_drv_ctx *drv_ctx);

int caam_qi_init(struct platform_device *pdev);
void caam_qi_shutdown(struct device *dev);

/**
 * qi_cache_alloc - Allocate buffers from CAAM-QI cache