diff options
Diffstat (limited to 'drivers/crypto/ccp/ccp-dev-v3.c')
| -rw-r--r-- | drivers/crypto/ccp/ccp-dev-v3.c | 13 | 
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/crypto/ccp/ccp-dev-v3.c b/drivers/crypto/ccp/ccp-dev-v3.c index 7d5eab49179e..d7a710347967 100644 --- a/drivers/crypto/ccp/ccp-dev-v3.c +++ b/drivers/crypto/ccp/ccp-dev-v3.c @@ -406,6 +406,11 @@ static int ccp_init(struct ccp_device *ccp)  		goto e_kthread;  	} +	/* Register the DMA engine support */ +	ret = ccp_dmaengine_register(ccp); +	if (ret) +		goto e_hwrng; +  	ccp_add_device(ccp);  	/* Enable interrupts */ @@ -413,6 +418,9 @@ static int ccp_init(struct ccp_device *ccp)  	return 0; +e_hwrng: +	hwrng_unregister(&ccp->hwrng); +  e_kthread:  	for (i = 0; i < ccp->cmd_q_count; i++)  		if (ccp->cmd_q[i].kthread) @@ -436,6 +444,9 @@ static void ccp_destroy(struct ccp_device *ccp)  	/* Remove this device from the list of available units first */  	ccp_del_device(ccp); +	/* Unregister the DMA engine */ +	ccp_dmaengine_unregister(ccp); +  	/* Unregister the RNG */  	hwrng_unregister(&ccp->hwrng); @@ -515,7 +526,7 @@ static irqreturn_t ccp_irq_handler(int irq, void *data)  	return IRQ_HANDLED;  } -static struct ccp_actions ccp3_actions = { +static const struct ccp_actions ccp3_actions = {  	.perform_aes = ccp_perform_aes,  	.perform_xts_aes = ccp_perform_xts_aes,  	.perform_sha = ccp_perform_sha,  |