OSDN Git Service

spi: mpc512x: Use devm_*() functions
authorJingoo Han <jg1.han@samsung.com>
Wed, 18 Dec 2013 01:31:15 +0000 (10:31 +0900)
committerMark Brown <broonie@linaro.org>
Wed, 18 Dec 2013 11:28:53 +0000 (11:28 +0000)
Use devm_*() functions to make cleanup paths simpler.

Signed-off-by: Jingoo Han <jg1.han@samsung.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
drivers/spi/spi-mpc512x-psc.c

index 9602bbd..d7a73ef 100644 (file)
@@ -504,7 +504,7 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
        master->cleanup = mpc512x_psc_spi_cleanup;
        master->dev.of_node = dev->of_node;
 
-       tempp = ioremap(regaddr, size);
+       tempp = devm_ioremap(dev, regaddr, size);
        if (!tempp) {
                dev_err(dev, "could not ioremap I/O port range\n");
                ret = -EFAULT;
@@ -513,9 +513,8 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
        mps->psc = tempp;
        mps->fifo =
                (struct mpc512x_psc_fifo *)(tempp + sizeof(struct mpc52xx_psc));
-
-       ret = request_irq(mps->irq, mpc512x_psc_spi_isr, IRQF_SHARED,
-                         "mpc512x-psc-spi", mps);
+       ret = devm_request_irq(dev, mps->irq, mpc512x_psc_spi_isr, IRQF_SHARED,
+                               "mpc512x-psc-spi", mps);
        if (ret)
                goto free_master;
        init_completion(&mps->txisrdone);
@@ -525,11 +524,11 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
        clk = devm_clk_get(dev, clk_name);
        if (IS_ERR(clk)) {
                ret = PTR_ERR(clk);
-               goto free_irq;
+               goto free_master;
        }
        ret = clk_prepare_enable(clk);
        if (ret)
-               goto free_irq;
+               goto free_master;
        mps->clk_mclk = clk;
        mps->mclk_rate = clk_get_rate(clk);
 
@@ -545,11 +544,7 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
 
 free_clock:
        clk_disable_unprepare(mps->clk_mclk);
-free_irq:
-       free_irq(mps->irq, mps);
 free_master:
-       if (mps->psc)
-               iounmap(mps->psc);
        spi_master_put(master);
 
        return ret;
@@ -561,9 +556,6 @@ static int mpc512x_psc_spi_do_remove(struct device *dev)
        struct mpc512x_psc_spi *mps = spi_master_get_devdata(master);
 
        clk_disable_unprepare(mps->clk_mclk);
-       free_irq(mps->irq, mps);
-       if (mps->psc)
-               iounmap(mps->psc);
 
        return 0;
 }