aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJingoo Han <jg1.han@samsung.com>2013-12-04 00:07:51 -0500
committerMark Brown <broonie@linaro.org>2013-12-04 06:58:41 -0500
commit9f87d6f26b2fcedfc3d1ec6c65ce568b21546ee2 (patch)
tree8848e787b4e7bc44c8b50c50cd6519d0b4f7a54a
parent6ce4eac1f600b34f2f7f58f9cd8f0503d79e42ae (diff)
spi: atmel: Use devm_*() functions
Use devm_*() functions to make cleanup paths simpler. Signed-off-by: Jingoo Han <jg1.han@samsung.com> Nicolas Ferre <nicolas.ferre@atmel.com> Signed-off-by: Mark Brown <broonie@linaro.org>
-rw-r--r--drivers/spi/spi-atmel.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c
index 273db0beb2b8..57fa73876223 100644
--- a/drivers/spi/spi-atmel.c
+++ b/drivers/spi/spi-atmel.c
@@ -1510,7 +1510,7 @@ static int atmel_spi_probe(struct platform_device *pdev)
1510 if (irq < 0) 1510 if (irq < 0)
1511 return irq; 1511 return irq;
1512 1512
1513 clk = clk_get(&pdev->dev, "spi_clk"); 1513 clk = devm_clk_get(&pdev->dev, "spi_clk");
1514 if (IS_ERR(clk)) 1514 if (IS_ERR(clk))
1515 return PTR_ERR(clk); 1515 return PTR_ERR(clk);
1516 1516
@@ -1570,14 +1570,14 @@ static int atmel_spi_probe(struct platform_device *pdev)
1570 dev_info(&pdev->dev, "Atmel SPI Controller using PIO only\n"); 1570 dev_info(&pdev->dev, "Atmel SPI Controller using PIO only\n");
1571 1571
1572 if (as->use_pdc) { 1572 if (as->use_pdc) {
1573 ret = request_irq(irq, atmel_spi_pdc_interrupt, 0, 1573 ret = devm_request_irq(&pdev->dev, irq, atmel_spi_pdc_interrupt,
1574 dev_name(&pdev->dev), master); 1574 0, dev_name(&pdev->dev), master);
1575 } else { 1575 } else {
1576 tasklet_init(&as->tasklet, atmel_spi_tasklet_func, 1576 tasklet_init(&as->tasklet, atmel_spi_tasklet_func,
1577 (unsigned long)master); 1577 (unsigned long)master);
1578 1578
1579 ret = request_irq(irq, atmel_spi_pio_interrupt, 0, 1579 ret = devm_request_irq(&pdev->dev, irq, atmel_spi_pio_interrupt,
1580 dev_name(&pdev->dev), master); 1580 0, dev_name(&pdev->dev), master);
1581 } 1581 }
1582 if (ret) 1582 if (ret)
1583 goto out_unmap_regs; 1583 goto out_unmap_regs;
@@ -1603,7 +1603,7 @@ static int atmel_spi_probe(struct platform_device *pdev)
1603 dev_info(&pdev->dev, "Atmel SPI Controller at 0x%08lx (irq %d)\n", 1603 dev_info(&pdev->dev, "Atmel SPI Controller at 0x%08lx (irq %d)\n",
1604 (unsigned long)regs->start, irq); 1604 (unsigned long)regs->start, irq);
1605 1605
1606 ret = spi_register_master(master); 1606 ret = devm_spi_register_master(&pdev->dev, master);
1607 if (ret) 1607 if (ret)
1608 goto out_free_dma; 1608 goto out_free_dma;
1609 1609
@@ -1617,7 +1617,6 @@ out_free_dma:
1617 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */ 1617 spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */
1618 clk_disable_unprepare(clk); 1618 clk_disable_unprepare(clk);
1619out_free_irq: 1619out_free_irq:
1620 free_irq(irq, master);
1621out_unmap_regs: 1620out_unmap_regs:
1622out_free_buffer: 1621out_free_buffer:
1623 if (!as->use_pdc) 1622 if (!as->use_pdc)
@@ -1625,7 +1624,6 @@ out_free_buffer:
1625 dma_free_coherent(&pdev->dev, BUFFER_SIZE, as->buffer, 1624 dma_free_coherent(&pdev->dev, BUFFER_SIZE, as->buffer,
1626 as->buffer_dma); 1625 as->buffer_dma);
1627out_free: 1626out_free:
1628 clk_put(clk);
1629 spi_master_put(master); 1627 spi_master_put(master);
1630 return ret; 1628 return ret;
1631} 1629}
@@ -1668,10 +1666,6 @@ static int atmel_spi_remove(struct platform_device *pdev)
1668 as->buffer_dma); 1666 as->buffer_dma);
1669 1667
1670 clk_disable_unprepare(as->clk); 1668 clk_disable_unprepare(as->clk);
1671 clk_put(as->clk);
1672 free_irq(as->irq, master);
1673
1674 spi_unregister_master(master);
1675 1669
1676 return 0; 1670 return 0;
1677} 1671}