|
@@ -1213,6 +1213,17 @@ static int omap_aes_probe(struct platform_device *pdev)
|
|
|
list_add_tail(&dd->list, &dev_list);
|
|
|
spin_unlock(&list_lock);
|
|
|
|
|
|
+ /* Initialize crypto engine */
|
|
|
+ dd->engine = crypto_engine_alloc_init(dev, 1);
|
|
|
+ if (!dd->engine)
|
|
|
+ goto err_engine;
|
|
|
+
|
|
|
+ dd->engine->prepare_cipher_request = omap_aes_prepare_req;
|
|
|
+ dd->engine->cipher_one_request = omap_aes_crypt_req;
|
|
|
+ err = crypto_engine_start(dd->engine);
|
|
|
+ if (err)
|
|
|
+ goto err_engine;
|
|
|
+
|
|
|
for (i = 0; i < dd->pdata->algs_info_size; i++) {
|
|
|
if (!dd->pdata->algs_info[i].registered) {
|
|
|
for (j = 0; j < dd->pdata->algs_info[i].size; j++) {
|
|
@@ -1230,26 +1241,17 @@ static int omap_aes_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /* Initialize crypto engine */
|
|
|
- dd->engine = crypto_engine_alloc_init(dev, 1);
|
|
|
- if (!dd->engine)
|
|
|
- goto err_algs;
|
|
|
-
|
|
|
- dd->engine->prepare_cipher_request = omap_aes_prepare_req;
|
|
|
- dd->engine->cipher_one_request = omap_aes_crypt_req;
|
|
|
- err = crypto_engine_start(dd->engine);
|
|
|
- if (err)
|
|
|
- goto err_engine;
|
|
|
-
|
|
|
return 0;
|
|
|
-err_engine:
|
|
|
- crypto_engine_exit(dd->engine);
|
|
|
err_algs:
|
|
|
for (i = dd->pdata->algs_info_size - 1; i >= 0; i--)
|
|
|
for (j = dd->pdata->algs_info[i].registered - 1; j >= 0; j--)
|
|
|
crypto_unregister_alg(
|
|
|
&dd->pdata->algs_info[i].algs_list[j]);
|
|
|
|
|
|
+err_engine:
|
|
|
+ if (dd->engine)
|
|
|
+ crypto_engine_exit(dd->engine);
|
|
|
+
|
|
|
omap_aes_dma_cleanup(dd);
|
|
|
err_irq:
|
|
|
tasklet_kill(&dd->done_task);
|