]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/spi/mpc52xx_psc_spi.c
Merge tag 'v2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[mv-sheeva.git] / drivers / spi / mpc52xx_psc_spi.c
index 983fbbfce76eba3061e073ab5c03aa48d9dd89c3..8a904c1c8485e67f215971932782c2f02a29eff5 100644 (file)
@@ -363,7 +363,7 @@ static irqreturn_t mpc52xx_psc_spi_isr(int irq, void *dev_id)
 }
 
 /* bus_num is used only for the case dev->platform_data == NULL */
-static int __init mpc52xx_psc_spi_do_probe(struct device *dev, u32 regaddr,
+static int __devinit mpc52xx_psc_spi_do_probe(struct device *dev, u32 regaddr,
                                u32 size, unsigned int irq, s16 bus_num)
 {
        struct fsl_spi_platform_data *pdata = dev->platform_data;
@@ -450,22 +450,7 @@ free_master:
        return ret;
 }
 
-static int __exit mpc52xx_psc_spi_do_remove(struct device *dev)
-{
-       struct spi_master *master = dev_get_drvdata(dev);
-       struct mpc52xx_psc_spi *mps = spi_master_get_devdata(master);
-
-       flush_workqueue(mps->workqueue);
-       destroy_workqueue(mps->workqueue);
-       spi_unregister_master(master);
-       free_irq(mps->irq, mps);
-       if (mps->psc)
-               iounmap(mps->psc);
-
-       return 0;
-}
-
-static int __init mpc52xx_psc_spi_of_probe(struct platform_device *op,
+static int __devinit mpc52xx_psc_spi_of_probe(struct platform_device *op,
        const struct of_device_id *match)
 {
        const u32 *regaddr_p;
@@ -495,9 +480,19 @@ static int __init mpc52xx_psc_spi_of_probe(struct platform_device *op,
                                irq_of_parse_and_map(op->dev.of_node, 0), id);
 }
 
-static int __exit mpc52xx_psc_spi_of_remove(struct platform_device *op)
+static int __devexit mpc52xx_psc_spi_of_remove(struct platform_device *op)
 {
-       return mpc52xx_psc_spi_do_remove(&op->dev);
+       struct spi_master *master = dev_get_drvdata(&op->dev);
+       struct mpc52xx_psc_spi *mps = spi_master_get_devdata(master);
+
+       flush_workqueue(mps->workqueue);
+       destroy_workqueue(mps->workqueue);
+       spi_unregister_master(master);
+       free_irq(mps->irq, mps);
+       if (mps->psc)
+               iounmap(mps->psc);
+
+       return 0;
 }
 
 static const struct of_device_id mpc52xx_psc_spi_of_match[] = {
@@ -510,7 +505,7 @@ MODULE_DEVICE_TABLE(of, mpc52xx_psc_spi_of_match);
 
 static struct of_platform_driver mpc52xx_psc_spi_of_driver = {
        .probe = mpc52xx_psc_spi_of_probe,
-       .remove = __exit_p(mpc52xx_psc_spi_of_remove),
+       .remove = __devexit_p(mpc52xx_psc_spi_of_remove),
        .driver = {
                .name = "mpc52xx-psc-spi",
                .owner = THIS_MODULE,