The patch titled
     MPC52xx PSC SPI master driver (update)
has been removed from the -mm tree.  Its filename was
     mpc52xx-psc-spi-master-driver-update.patch

This patch was dropped because it was folded into 
mpc52xx-psc-spi-master-driver.patch

------------------------------------------------------
Subject: MPC52xx PSC SPI master driver (update)
From: Dragos Carp <[EMAIL PROTECTED]>

Cc: David Brownell <[EMAIL PROTECTED]>
Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
---

 drivers/spi/mpc52xx_psc_spi.c |  210 ++++++++++----------------------
 1 file changed, 71 insertions(+), 139 deletions(-)

diff -puN drivers/spi/mpc52xx_psc_spi.c~mpc52xx-psc-spi-master-driver-update 
drivers/spi/mpc52xx_psc_spi.c
--- a/drivers/spi/mpc52xx_psc_spi.c~mpc52xx-psc-spi-master-driver-update
+++ a/drivers/spi/mpc52xx_psc_spi.c
@@ -436,58 +436,58 @@ static irqreturn_t mpc52xx_psc_spi_isr(i
        return IRQ_NONE;
 }
 
-#if !defined(CONFIG_PPC_MERGE)
-static int __init mpc52xx_psc_spi_probe(struct platform_device *dev)
+/* 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,
+                               u32 size, unsigned int irq, s16 bus_num)
 {
-       struct fsl_spi_platform_data *pdata = dev->dev.platform_data;
+       struct fsl_spi_platform_data *pdata = dev->platform_data;
        struct mpc52xx_psc_spi *mps;
        struct spi_master *master;
-       struct mpc52xx_psc __iomem *psc;
        int ret;
 
        if (pdata == NULL)
                return -ENODEV;
 
-       master = spi_alloc_master(&dev->dev, sizeof *mps);
+       master = spi_alloc_master(dev, sizeof *mps);
        if (master == NULL)
                return -ENOMEM;
 
-       platform_set_drvdata(dev, master);
-
+       dev_set_drvdata(dev, master);
        mps = spi_master_get_devdata(master);
-       mps->activate_cs = pdata->activate_cs;
-       mps->deactivate_cs = pdata->deactivate_cs;
-       mps->sysclk = pdata->sysclk;
 
-       master->bus_num = dev->id = pdata->bus_num;
-       master->num_chipselect = pdata->max_chipselect;
+       mps->irq = irq;
+       if (pdata == NULL) {
+               dev_warn(dev, "probe called without platform data, no "
+                               "(de)activate_cs function will be called\n");
+               mps->activate_cs = NULL;
+               mps->deactivate_cs = NULL;
+               mps->sysclk = 0;
+               master->bus_num = bus_num;
+               master->num_chipselect = 255;
+       } else {
+               mps->activate_cs = pdata->activate_cs;
+               mps->deactivate_cs = pdata->deactivate_cs;
+               mps->sysclk = pdata->sysclk;
+               master->bus_num = pdata->bus_num;
+               master->num_chipselect = pdata->max_chipselect;
+       }
        master->setup = mpc52xx_psc_spi_setup;
        master->transfer = mpc52xx_psc_spi_transfer;
        master->cleanup = mpc52xx_psc_spi_cleanup;
 
-       switch(dev->id) {
-       case 1: case 2: case 3: case 6:
-               break;
-       default:
-               ret = -EINVAL;
-               goto free_master;
-       }
-       psc = ioremap(MPC52xx_PA(MPC52xx_PSCx_OFFSET(dev->id)),
-                       MPC52xx_PSC_SIZE);
-       if (!psc) {
-               printk(KERN_ERR "Error mapping PSC%d\n", dev->id);
+       mps->psc = ioremap(regaddr, size);
+       if (!mps->psc) {
+               dev_err(dev, "could not ioremap I/O port range\n");
                ret = -EFAULT;
                goto free_master;
        }
-       mps->psc = psc;
 
-       mps->irq = platform_get_irq(dev, 0);
-       ret = request_irq(mps->irq, mpc52xx_psc_spi_isr, 0,
-                               "mpc52xx-psc-spi", mps);
+       ret = request_irq(mps->irq, mpc52xx_psc_spi_isr, 0, "mpc52xx-psc-spi",
+                               mps);
        if (ret)
                goto free_master;
 
-       ret = mpc52xx_psc_spi_port_config(dev->id, mps);
+       ret = mpc52xx_psc_spi_port_config(master->bus_num, mps);
        if (ret < 0)
                goto free_irq;
 
@@ -521,9 +521,9 @@ free_master:
        return ret;
 }
 
-static int __exit mpc52xx_psc_spi_remove(struct platform_device *dev)
+static int __exit mpc52xx_psc_spi_do_remove(struct device *dev)
 {
-       struct spi_master *master = platform_get_drvdata(dev);
+       struct spi_master *master = dev_get_drvdata(dev);
        struct mpc52xx_psc_spi *mps = spi_master_get_devdata(master);
 
        flush_workqueue(mps->workqueue);
@@ -536,6 +536,24 @@ static int __exit mpc52xx_psc_spi_remove
        return 0;
 }
 
+#if !defined(CONFIG_PPC_MERGE)
+static int __init mpc52xx_psc_spi_probe(struct platform_device *dev)
+{
+       switch(dev->id) {
+       case 1: case 2: case 3: case 6:
+               return mpc52xx_psc_spi_do_probe(&dev->dev,
+                       MPC52xx_PA(MPC52xx_PSCx_OFFSET(dev->id)),
+                       MPC52xx_PSC_SIZE, platform_get_irq(dev, 0), dev->id);
+       default:
+               return -EINVAL;
+       }
+}
+
+static int __exit mpc52xx_psc_spi_remove(struct platform_device *dev)
+{
+       return mpc52xx_psc_spi_do_remove(&dev->dev);
+}
+
 static struct platform_driver mpc52xx_psc_spi_platform_driver = {
        .remove = __exit_p(mpc52xx_psc_spi_remove),
        .driver = {
@@ -543,130 +561,56 @@ static struct platform_driver mpc52xx_ps
                .owner = THIS_MODULE,
        },
 };
-#endif /* !defined(CONFIG_PPC_MERGE) */
 
+static int __init mpc52xx_psc_spi_init(void)
+{
+       return platform_driver_probe(&mpc52xx_psc_spi_platform_driver,
+                       mpc52xx_psc_spi_probe);
+}
+module_init(mpc52xx_psc_spi_init);
+
+static void __exit mpc52xx_psc_spi_exit(void)
+{
+       platform_driver_unregister(&mpc52xx_psc_spi_platform_driver);
+}
+module_exit(mpc52xx_psc_spi_exit);
+
+#else  /* defined(CONFIG_PPC_MERGE) */
 
-#if defined(CONFIG_PPC_MERGE)
 static int __init mpc52xx_psc_spi_of_probe(struct of_device *op,
        const struct of_device_id *match)
 {
-       struct device *dev = &op->dev;
-       struct fsl_spi_platform_data *pdata = dev->platform_data;
-       struct mpc52xx_psc_spi *mps;
-       struct spi_master *master;
-       int ret;
        const u32 *regaddr_p;
        u64 regaddr64, size64;
-       struct mpc52xx_psc __iomem *psc;
-
-       if (dev == NULL)
-               return -ENODEV;
-
-       master = spi_alloc_master(dev, sizeof *mps);
-       if (master == NULL)
-               return -ENOMEM;
-       dev_set_drvdata(dev, master);
-       mps = spi_master_get_devdata(master);
+       s16 id = -1;
 
        regaddr_p = of_get_address(op->node, 0, &size64, NULL);
        if (!regaddr_p) {
                printk(KERN_ERR "Invalid PSC address\n");
-               ret = -EINVAL;
-               goto free_master;
+               return -EINVAL;
        }
        regaddr64 = of_translate_address(op->node, regaddr_p);
-       psc = ioremap((u32)regaddr64, (u32)size64);
-       if (!psc) {
-               printk(KERN_ERR "Error mapping memory at %x (%x bytes)\n",
-                       (u32)regaddr64, (u32)size64);
-               ret = -EFAULT;
-               goto free_master;
-       }
-       mps->psc = psc;
 
-       mps->irq = irq_of_parse_and_map(op->node, 0);
-       ret = request_irq(mps->irq, mpc52xx_psc_spi_isr, 0,
-                               "mpc52xx-psc-spi", mps);
-       if (ret)
-               goto free_master;
-
-       if (pdata == NULL) {
+       if (op->dev.platform_data == NULL) {
                struct device_node *np;
                int i = 0;
 
-               dev_warn(dev, "probe called without platform data, no "
-                               "(de)activate_cs function will be called\n");
-
-               mps->activate_cs = NULL;
-               mps->deactivate_cs = NULL;
-               mps->sysclk = 0;
-               master->bus_num = -1;
                for_each_node_by_type(np, "spi") {
                        if (of_find_device_by_node(np) == op) {
-                               master->bus_num = i;
+                               id = i;
                                break;
                        }
                        i++;
                }
-               master->num_chipselect = 255;
-       } else {
-               mps->activate_cs = pdata->activate_cs;
-               mps->deactivate_cs = pdata->deactivate_cs;
-               mps->sysclk = pdata->sysclk;
-               master->bus_num = pdata->bus_num;
-               master->num_chipselect = pdata->max_chipselect;
        }
-       master->setup = mpc52xx_psc_spi_setup;
-       master->transfer = mpc52xx_psc_spi_transfer;
-       master->cleanup = mpc52xx_psc_spi_cleanup;
 
-       ret = mpc52xx_psc_spi_port_config(master->bus_num, mps);
-       if (ret < 0)
-               goto free_irq;
-
-       spin_lock_init(&mps->lock);
-       init_completion(&mps->done);
-       INIT_WORK(&mps->work, mpc52xx_psc_spi_work);
-       INIT_LIST_HEAD(&mps->queue);
-
-       mps->workqueue = create_singlethread_workqueue(
-               master->cdev.dev->bus_id);
-       if (mps->workqueue == NULL) {
-               ret = -EBUSY;
-               goto free_irq;
-       }
-
-       ret = spi_register_master(master);
-       if (ret < 0)
-               goto unreg_master;
-
-       return ret;
-
-unreg_master:
-       destroy_workqueue(mps->workqueue);
-free_irq:
-       free_irq(mps->irq, mps);
-free_master:
-       if (mps->psc)
-               iounmap(mps->psc);
-       spi_master_put(master);
-
-       return ret;
+       return mpc52xx_psc_spi_do_probe(&op->dev, (u32)regaddr64, (u32)size64,
+                                       irq_of_parse_and_map(op->node, 0), id);
 }
 
 static int __exit mpc52xx_psc_spi_of_remove(struct of_device *op)
 {
-       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;
+       return mpc52xx_psc_spi_do_remove(&op->dev);
 }
 
 static struct of_device_id mpc52xx_psc_spi_of_match[] = {
@@ -687,33 +631,21 @@ static struct of_platform_driver mpc52xx
                .owner = THIS_MODULE,
        },
 };
-#endif /* defined(CONFIG_PPC_MERGE) */
-
-/* ======================================================================== */
-/* Module                                                                   */
-/* ======================================================================== */
 
 static int __init mpc52xx_psc_spi_init(void)
 {
-#if defined(CONFIG_PPC_MERGE)
        return of_register_platform_driver(&mpc52xx_psc_spi_of_driver);
-#else
-       return platform_driver_probe(&mpc52xx_psc_spi_platform_driver,
-                       mpc52xx_psc_spi_probe);
-#endif
 }
 module_init(mpc52xx_psc_spi_init);
 
 static void __exit mpc52xx_psc_spi_exit(void)
 {
-#if defined(CONFIG_PPC_MERGE)
        of_unregister_platform_driver(&mpc52xx_psc_spi_of_driver);
-#else
-       platform_driver_unregister(&mpc52xx_psc_spi_platform_driver);
-#endif
 }
 module_exit(mpc52xx_psc_spi_exit);
 
+#endif /* defined(CONFIG_PPC_MERGE) */
+
 MODULE_AUTHOR("Dragos Carp");
 MODULE_DESCRIPTION("MPC52xx PSC SPI Driver");
 MODULE_LICENSE("GPL");
_

Patches currently in -mm which might be from [EMAIL PROTECTED] are

mpc52xx-psc-spi-master-driver.patch
mpc52xx-psc-spi-master-driver-update.patch
mpc52xx-psc-spi-master-driver-update-tidy.patch

-
To unsubscribe from this list: send the line "unsubscribe mm-commits" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to