diff options
author | Jingoo Han <jg1.han@samsung.com> | 2013-12-04 00:07:51 -0500 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-12-04 06:58:41 -0500 |
commit | 9f87d6f26b2fcedfc3d1ec6c65ce568b21546ee2 (patch) | |
tree | 8848e787b4e7bc44c8b50c50cd6519d0b4f7a54a | |
parent | 6ce4eac1f600b34f2f7f58f9cd8f0503d79e42ae (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.c | 18 |
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); |
1619 | out_free_irq: | 1619 | out_free_irq: |
1620 | free_irq(irq, master); | ||
1621 | out_unmap_regs: | 1620 | out_unmap_regs: |
1622 | out_free_buffer: | 1621 | out_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); |
1627 | out_free: | 1626 | out_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 | } |