|
@@ -1324,7 +1324,6 @@ static int atmel_aes_probe(struct platform_device *pdev)
|
|
struct crypto_platform_data *pdata;
|
|
struct crypto_platform_data *pdata;
|
|
struct device *dev = &pdev->dev;
|
|
struct device *dev = &pdev->dev;
|
|
struct resource *aes_res;
|
|
struct resource *aes_res;
|
|
- unsigned long aes_phys_size;
|
|
|
|
int err;
|
|
int err;
|
|
|
|
|
|
pdata = pdev->dev.platform_data;
|
|
pdata = pdev->dev.platform_data;
|
|
@@ -1341,7 +1340,7 @@ static int atmel_aes_probe(struct platform_device *pdev)
|
|
goto aes_dd_err;
|
|
goto aes_dd_err;
|
|
}
|
|
}
|
|
|
|
|
|
- aes_dd = kzalloc(sizeof(struct atmel_aes_dev), GFP_KERNEL);
|
|
|
|
|
|
+ aes_dd = devm_kzalloc(&pdev->dev, sizeof(*aes_dd), GFP_KERNEL);
|
|
if (aes_dd == NULL) {
|
|
if (aes_dd == NULL) {
|
|
dev_err(dev, "unable to alloc data struct.\n");
|
|
dev_err(dev, "unable to alloc data struct.\n");
|
|
err = -ENOMEM;
|
|
err = -ENOMEM;
|
|
@@ -1372,36 +1371,35 @@ static int atmel_aes_probe(struct platform_device *pdev)
|
|
goto res_err;
|
|
goto res_err;
|
|
}
|
|
}
|
|
aes_dd->phys_base = aes_res->start;
|
|
aes_dd->phys_base = aes_res->start;
|
|
- aes_phys_size = resource_size(aes_res);
|
|
|
|
|
|
|
|
/* Get the IRQ */
|
|
/* Get the IRQ */
|
|
aes_dd->irq = platform_get_irq(pdev, 0);
|
|
aes_dd->irq = platform_get_irq(pdev, 0);
|
|
if (aes_dd->irq < 0) {
|
|
if (aes_dd->irq < 0) {
|
|
dev_err(dev, "no IRQ resource info\n");
|
|
dev_err(dev, "no IRQ resource info\n");
|
|
err = aes_dd->irq;
|
|
err = aes_dd->irq;
|
|
- goto aes_irq_err;
|
|
|
|
|
|
+ goto res_err;
|
|
}
|
|
}
|
|
|
|
|
|
- err = request_irq(aes_dd->irq, atmel_aes_irq, IRQF_SHARED, "atmel-aes",
|
|
|
|
- aes_dd);
|
|
|
|
|
|
+ err = devm_request_irq(&pdev->dev, aes_dd->irq, atmel_aes_irq,
|
|
|
|
+ IRQF_SHARED, "atmel-aes", aes_dd);
|
|
if (err) {
|
|
if (err) {
|
|
dev_err(dev, "unable to request aes irq.\n");
|
|
dev_err(dev, "unable to request aes irq.\n");
|
|
- goto aes_irq_err;
|
|
|
|
|
|
+ goto res_err;
|
|
}
|
|
}
|
|
|
|
|
|
/* Initializing the clock */
|
|
/* Initializing the clock */
|
|
- aes_dd->iclk = clk_get(&pdev->dev, "aes_clk");
|
|
|
|
|
|
+ aes_dd->iclk = devm_clk_get(&pdev->dev, "aes_clk");
|
|
if (IS_ERR(aes_dd->iclk)) {
|
|
if (IS_ERR(aes_dd->iclk)) {
|
|
dev_err(dev, "clock initialization failed.\n");
|
|
dev_err(dev, "clock initialization failed.\n");
|
|
err = PTR_ERR(aes_dd->iclk);
|
|
err = PTR_ERR(aes_dd->iclk);
|
|
- goto clk_err;
|
|
|
|
|
|
+ goto res_err;
|
|
}
|
|
}
|
|
|
|
|
|
- aes_dd->io_base = ioremap(aes_dd->phys_base, aes_phys_size);
|
|
|
|
|
|
+ aes_dd->io_base = devm_ioremap_resource(&pdev->dev, aes_res);
|
|
if (!aes_dd->io_base) {
|
|
if (!aes_dd->io_base) {
|
|
dev_err(dev, "can't ioremap\n");
|
|
dev_err(dev, "can't ioremap\n");
|
|
err = -ENOMEM;
|
|
err = -ENOMEM;
|
|
- goto aes_io_err;
|
|
|
|
|
|
+ goto res_err;
|
|
}
|
|
}
|
|
|
|
|
|
atmel_aes_hw_version_init(aes_dd);
|
|
atmel_aes_hw_version_init(aes_dd);
|
|
@@ -1438,17 +1436,9 @@ err_algs:
|
|
err_aes_dma:
|
|
err_aes_dma:
|
|
atmel_aes_buff_cleanup(aes_dd);
|
|
atmel_aes_buff_cleanup(aes_dd);
|
|
err_aes_buff:
|
|
err_aes_buff:
|
|
- iounmap(aes_dd->io_base);
|
|
|
|
-aes_io_err:
|
|
|
|
- clk_put(aes_dd->iclk);
|
|
|
|
-clk_err:
|
|
|
|
- free_irq(aes_dd->irq, aes_dd);
|
|
|
|
-aes_irq_err:
|
|
|
|
res_err:
|
|
res_err:
|
|
tasklet_kill(&aes_dd->done_task);
|
|
tasklet_kill(&aes_dd->done_task);
|
|
tasklet_kill(&aes_dd->queue_task);
|
|
tasklet_kill(&aes_dd->queue_task);
|
|
- kfree(aes_dd);
|
|
|
|
- aes_dd = NULL;
|
|
|
|
aes_dd_err:
|
|
aes_dd_err:
|
|
dev_err(dev, "initialization failed.\n");
|
|
dev_err(dev, "initialization failed.\n");
|
|
|
|
|
|
@@ -1473,16 +1463,6 @@ static int atmel_aes_remove(struct platform_device *pdev)
|
|
|
|
|
|
atmel_aes_dma_cleanup(aes_dd);
|
|
atmel_aes_dma_cleanup(aes_dd);
|
|
|
|
|
|
- iounmap(aes_dd->io_base);
|
|
|
|
-
|
|
|
|
- clk_put(aes_dd->iclk);
|
|
|
|
-
|
|
|
|
- if (aes_dd->irq > 0)
|
|
|
|
- free_irq(aes_dd->irq, aes_dd);
|
|
|
|
-
|
|
|
|
- kfree(aes_dd);
|
|
|
|
- aes_dd = NULL;
|
|
|
|
-
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|