aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/Kconfig13
-rw-r--r--drivers/spi/atmel_spi.c14
-rw-r--r--drivers/spi/mpc52xx_psc_spi.c2
-rw-r--r--drivers/spi/omap2_mcspi.c4
-rw-r--r--drivers/spi/omap_uwire.c9
-rw-r--r--drivers/spi/pxa2xx_spi.c14
-rw-r--r--drivers/spi/spi.c36
-rw-r--r--drivers/spi/spi_bfin5xx.c3
-rw-r--r--drivers/spi/spi_bitbang.c2
-rw-r--r--drivers/spi/spi_imx.c13
-rw-r--r--drivers/spi/spi_lm70llp.c2
-rw-r--r--drivers/spi/spi_mpc83xx.c7
-rw-r--r--drivers/spi/spi_s3c24xx.c9
-rw-r--r--drivers/spi/spi_txx9.c2
14 files changed, 60 insertions, 70 deletions
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index b91571122daa..a77ede598d34 100644
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -124,16 +124,17 @@ config SPI_MPC52xx_PSC
124 Controller in master SPI mode. 124 Controller in master SPI mode.
125 125
126config SPI_MPC83xx 126config SPI_MPC83xx
127 tristate "Freescale MPC83xx SPI controller" 127 tristate "Freescale MPC83xx/QUICC Engine SPI controller"
128 depends on SPI_MASTER && PPC_83xx && EXPERIMENTAL 128 depends on SPI_MASTER && (PPC_83xx || QUICC_ENGINE) && EXPERIMENTAL
129 select SPI_BITBANG 129 select SPI_BITBANG
130 help 130 help
131 This enables using the Freescale MPC83xx SPI controller in master 131 This enables using the Freescale MPC83xx and QUICC Engine SPI
132 mode. 132 controllers in master mode.
133 133
134 Note, this driver uniquely supports the SPI controller on the MPC83xx 134 Note, this driver uniquely supports the SPI controller on the MPC83xx
135 family of PowerPC processors. The MPC83xx uses a simple set of shift 135 family of PowerPC processors, plus processors with QUICC Engine
136 registers for data (opposed to the CPM based descriptor model). 136 technology. This driver uses a simple set of shift registers for data
137 (opposed to the CPM based descriptor model).
137 138
138config SPI_OMAP_UWIRE 139config SPI_OMAP_UWIRE
139 tristate "OMAP1 MicroWire" 140 tristate "OMAP1 MicroWire"
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index b0469749310a..0d342dcdd302 100644
--- a/drivers/spi/atmel_spi.c
+++ b/drivers/spi/atmel_spi.c
@@ -211,7 +211,7 @@ static void atmel_spi_next_message(struct spi_master *master)
211 msg = list_entry(as->queue.next, struct spi_message, queue); 211 msg = list_entry(as->queue.next, struct spi_message, queue);
212 spi = msg->spi; 212 spi = msg->spi;
213 213
214 dev_dbg(master->cdev.dev, "start message %p for %s\n", 214 dev_dbg(master->dev.parent, "start message %p for %s\n",
215 msg, spi->dev.bus_id); 215 msg, spi->dev.bus_id);
216 216
217 /* select chip if it's not still active */ 217 /* select chip if it's not still active */
@@ -266,10 +266,10 @@ static void atmel_spi_dma_unmap_xfer(struct spi_master *master,
266 struct spi_transfer *xfer) 266 struct spi_transfer *xfer)
267{ 267{
268 if (xfer->tx_dma != INVALID_DMA_ADDRESS) 268 if (xfer->tx_dma != INVALID_DMA_ADDRESS)
269 dma_unmap_single(master->cdev.dev, xfer->tx_dma, 269 dma_unmap_single(master->dev.parent, xfer->tx_dma,
270 xfer->len, DMA_TO_DEVICE); 270 xfer->len, DMA_TO_DEVICE);
271 if (xfer->rx_dma != INVALID_DMA_ADDRESS) 271 if (xfer->rx_dma != INVALID_DMA_ADDRESS)
272 dma_unmap_single(master->cdev.dev, xfer->rx_dma, 272 dma_unmap_single(master->dev.parent, xfer->rx_dma,
273 xfer->len, DMA_FROM_DEVICE); 273 xfer->len, DMA_FROM_DEVICE);
274} 274}
275 275
@@ -285,7 +285,7 @@ atmel_spi_msg_done(struct spi_master *master, struct atmel_spi *as,
285 list_del(&msg->queue); 285 list_del(&msg->queue);
286 msg->status = status; 286 msg->status = status;
287 287
288 dev_dbg(master->cdev.dev, 288 dev_dbg(master->dev.parent,
289 "xfer complete: %u bytes transferred\n", 289 "xfer complete: %u bytes transferred\n",
290 msg->actual_length); 290 msg->actual_length);
291 291
@@ -348,7 +348,7 @@ atmel_spi_interrupt(int irq, void *dev_id)
348 if (xfer->delay_usecs) 348 if (xfer->delay_usecs)
349 udelay(xfer->delay_usecs); 349 udelay(xfer->delay_usecs);
350 350
351 dev_warn(master->cdev.dev, "fifo overrun (%u/%u remaining)\n", 351 dev_warn(master->dev.parent, "fifo overrun (%u/%u remaining)\n",
352 spi_readl(as, TCR), spi_readl(as, RCR)); 352 spi_readl(as, TCR), spi_readl(as, RCR));
353 353
354 /* 354 /*
@@ -363,7 +363,7 @@ atmel_spi_interrupt(int irq, void *dev_id)
363 if (spi_readl(as, SR) & SPI_BIT(TXEMPTY)) 363 if (spi_readl(as, SR) & SPI_BIT(TXEMPTY))
364 break; 364 break;
365 if (!timeout) 365 if (!timeout)
366 dev_warn(master->cdev.dev, 366 dev_warn(master->dev.parent,
367 "timeout waiting for TXEMPTY"); 367 "timeout waiting for TXEMPTY");
368 while (spi_readl(as, SR) & SPI_BIT(RDRF)) 368 while (spi_readl(as, SR) & SPI_BIT(RDRF))
369 spi_readl(as, RDR); 369 spi_readl(as, RDR);
@@ -526,7 +526,7 @@ static int atmel_spi_transfer(struct spi_device *spi, struct spi_message *msg)
526 struct atmel_spi *as; 526 struct atmel_spi *as;
527 struct spi_transfer *xfer; 527 struct spi_transfer *xfer;
528 unsigned long flags; 528 unsigned long flags;
529 struct device *controller = spi->master->cdev.dev; 529 struct device *controller = spi->master->dev.parent;
530 530
531 as = spi_master_get_devdata(spi->master); 531 as = spi_master_get_devdata(spi->master);
532 532
diff --git a/drivers/spi/mpc52xx_psc_spi.c b/drivers/spi/mpc52xx_psc_spi.c
index d2a4b2bdb07b..e9aba932f217 100644
--- a/drivers/spi/mpc52xx_psc_spi.c
+++ b/drivers/spi/mpc52xx_psc_spi.c
@@ -503,7 +503,7 @@ static int __init mpc52xx_psc_spi_do_probe(struct device *dev, u32 regaddr,
503 INIT_LIST_HEAD(&mps->queue); 503 INIT_LIST_HEAD(&mps->queue);
504 504
505 mps->workqueue = create_singlethread_workqueue( 505 mps->workqueue = create_singlethread_workqueue(
506 master->cdev.dev->bus_id); 506 master->dev.parent->bus_id);
507 if (mps->workqueue == NULL) { 507 if (mps->workqueue == NULL) {
508 ret = -EBUSY; 508 ret = -EBUSY;
509 goto free_irq; 509 goto free_irq;
diff --git a/drivers/spi/omap2_mcspi.c b/drivers/spi/omap2_mcspi.c
index 6b357cdb9ea3..3cdab131c4a9 100644
--- a/drivers/spi/omap2_mcspi.c
+++ b/drivers/spi/omap2_mcspi.c
@@ -645,7 +645,7 @@ static int omap2_mcspi_setup(struct spi_device *spi)
645 645
646 clk_enable(mcspi->ick); 646 clk_enable(mcspi->ick);
647 clk_enable(mcspi->fck); 647 clk_enable(mcspi->fck);
648 ret = omap2_mcspi_setup_transfer(spi, NULL); 648 ret = omap2_mcspi_setup_transfer(spi, NULL);
649 clk_disable(mcspi->fck); 649 clk_disable(mcspi->fck);
650 clk_disable(mcspi->ick); 650 clk_disable(mcspi->ick);
651 651
@@ -693,7 +693,6 @@ static void omap2_mcspi_work(struct work_struct *work)
693 struct spi_device *spi; 693 struct spi_device *spi;
694 struct spi_transfer *t = NULL; 694 struct spi_transfer *t = NULL;
695 int cs_active = 0; 695 int cs_active = 0;
696 struct omap2_mcspi_device_config *conf;
697 struct omap2_mcspi_cs *cs; 696 struct omap2_mcspi_cs *cs;
698 int par_override = 0; 697 int par_override = 0;
699 int status = 0; 698 int status = 0;
@@ -706,7 +705,6 @@ static void omap2_mcspi_work(struct work_struct *work)
706 spin_unlock_irq(&mcspi->lock); 705 spin_unlock_irq(&mcspi->lock);
707 706
708 spi = m->spi; 707 spi = m->spi;
709 conf = spi->controller_data;
710 cs = spi->controller_state; 708 cs = spi->controller_state;
711 709
712 omap2_mcspi_set_enable(spi, 1); 710 omap2_mcspi_set_enable(spi, 1);
diff --git a/drivers/spi/omap_uwire.c b/drivers/spi/omap_uwire.c
index d275c615a73e..8245b5153f30 100644
--- a/drivers/spi/omap_uwire.c
+++ b/drivers/spi/omap_uwire.c
@@ -481,7 +481,7 @@ static void uwire_off(struct uwire_spi *uwire)
481 spi_master_put(uwire->bitbang.master); 481 spi_master_put(uwire->bitbang.master);
482} 482}
483 483
484static int uwire_probe(struct platform_device *pdev) 484static int __init uwire_probe(struct platform_device *pdev)
485{ 485{
486 struct spi_master *master; 486 struct spi_master *master;
487 struct uwire_spi *uwire; 487 struct uwire_spi *uwire;
@@ -525,7 +525,7 @@ static int uwire_probe(struct platform_device *pdev)
525 return status; 525 return status;
526} 526}
527 527
528static int uwire_remove(struct platform_device *pdev) 528static int __exit uwire_remove(struct platform_device *pdev)
529{ 529{
530 struct uwire_spi *uwire = dev_get_drvdata(&pdev->dev); 530 struct uwire_spi *uwire = dev_get_drvdata(&pdev->dev);
531 int status; 531 int status;
@@ -543,8 +543,7 @@ static struct platform_driver uwire_driver = {
543 .bus = &platform_bus_type, 543 .bus = &platform_bus_type,
544 .owner = THIS_MODULE, 544 .owner = THIS_MODULE,
545 }, 545 },
546 .probe = uwire_probe, 546 .remove = __exit_p(uwire_remove),
547 .remove = uwire_remove,
548 // suspend ... unuse ck 547 // suspend ... unuse ck
549 // resume ... use ck 548 // resume ... use ck
550}; 549};
@@ -566,7 +565,7 @@ static int __init omap_uwire_init(void)
566 omap_writel(val | 0x00AAA000, OMAP730_IO_CONF_9); 565 omap_writel(val | 0x00AAA000, OMAP730_IO_CONF_9);
567 } 566 }
568 567
569 return platform_driver_register(&uwire_driver); 568 return platform_driver_probe(&uwire_driver, uwire_probe);
570} 569}
571 570
572static void __exit omap_uwire_exit(void) 571static void __exit omap_uwire_exit(void)
diff --git a/drivers/spi/pxa2xx_spi.c b/drivers/spi/pxa2xx_spi.c
index e51311b2da0b..5f3d808cbc29 100644
--- a/drivers/spi/pxa2xx_spi.c
+++ b/drivers/spi/pxa2xx_spi.c
@@ -26,7 +26,6 @@
26#include <linux/dma-mapping.h> 26#include <linux/dma-mapping.h>
27#include <linux/spi/spi.h> 27#include <linux/spi/spi.h>
28#include <linux/workqueue.h> 28#include <linux/workqueue.h>
29#include <linux/errno.h>
30#include <linux/delay.h> 29#include <linux/delay.h>
31 30
32#include <asm/io.h> 31#include <asm/io.h>
@@ -1230,7 +1229,7 @@ static void cleanup(struct spi_device *spi)
1230 kfree(chip); 1229 kfree(chip);
1231} 1230}
1232 1231
1233static int init_queue(struct driver_data *drv_data) 1232static int __init init_queue(struct driver_data *drv_data)
1234{ 1233{
1235 INIT_LIST_HEAD(&drv_data->queue); 1234 INIT_LIST_HEAD(&drv_data->queue);
1236 spin_lock_init(&drv_data->lock); 1235 spin_lock_init(&drv_data->lock);
@@ -1243,7 +1242,7 @@ static int init_queue(struct driver_data *drv_data)
1243 1242
1244 INIT_WORK(&drv_data->pump_messages, pump_messages); 1243 INIT_WORK(&drv_data->pump_messages, pump_messages);
1245 drv_data->workqueue = create_singlethread_workqueue( 1244 drv_data->workqueue = create_singlethread_workqueue(
1246 drv_data->master->cdev.dev->bus_id); 1245 drv_data->master->dev.parent->bus_id);
1247 if (drv_data->workqueue == NULL) 1246 if (drv_data->workqueue == NULL)
1248 return -EBUSY; 1247 return -EBUSY;
1249 1248
@@ -1318,7 +1317,7 @@ static int destroy_queue(struct driver_data *drv_data)
1318 return 0; 1317 return 0;
1319} 1318}
1320 1319
1321static int pxa2xx_spi_probe(struct platform_device *pdev) 1320static int __init pxa2xx_spi_probe(struct platform_device *pdev)
1322{ 1321{
1323 struct device *dev = &pdev->dev; 1322 struct device *dev = &pdev->dev;
1324 struct pxa2xx_spi_master *platform_info; 1323 struct pxa2xx_spi_master *platform_info;
@@ -1622,8 +1621,7 @@ static struct platform_driver driver = {
1622 .bus = &platform_bus_type, 1621 .bus = &platform_bus_type,
1623 .owner = THIS_MODULE, 1622 .owner = THIS_MODULE,
1624 }, 1623 },
1625 .probe = pxa2xx_spi_probe, 1624 .remove = pxa2xx_spi_remove,
1626 .remove = __devexit_p(pxa2xx_spi_remove),
1627 .shutdown = pxa2xx_spi_shutdown, 1625 .shutdown = pxa2xx_spi_shutdown,
1628 .suspend = pxa2xx_spi_suspend, 1626 .suspend = pxa2xx_spi_suspend,
1629 .resume = pxa2xx_spi_resume, 1627 .resume = pxa2xx_spi_resume,
@@ -1631,9 +1629,7 @@ static struct platform_driver driver = {
1631 1629
1632static int __init pxa2xx_spi_init(void) 1630static int __init pxa2xx_spi_init(void)
1633{ 1631{
1634 platform_driver_register(&driver); 1632 return platform_driver_probe(&driver, pxa2xx_spi_probe);
1635
1636 return 0;
1637} 1633}
1638module_init(pxa2xx_spi_init); 1634module_init(pxa2xx_spi_init);
1639 1635
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index bcb8dd5fb0b4..89769ce16f88 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -204,7 +204,7 @@ struct spi_device *spi_new_device(struct spi_master *master,
204 struct spi_board_info *chip) 204 struct spi_board_info *chip)
205{ 205{
206 struct spi_device *proxy; 206 struct spi_device *proxy;
207 struct device *dev = master->cdev.dev; 207 struct device *dev = master->dev.parent;
208 int status; 208 int status;
209 209
210 /* NOTE: caller did any chip->bus_num checks necessary. 210 /* NOTE: caller did any chip->bus_num checks necessary.
@@ -239,7 +239,7 @@ struct spi_device *spi_new_device(struct spi_master *master,
239 proxy->modalias = chip->modalias; 239 proxy->modalias = chip->modalias;
240 240
241 snprintf(proxy->dev.bus_id, sizeof proxy->dev.bus_id, 241 snprintf(proxy->dev.bus_id, sizeof proxy->dev.bus_id,
242 "%s.%u", master->cdev.class_id, 242 "%s.%u", master->dev.bus_id,
243 chip->chip_select); 243 chip->chip_select);
244 proxy->dev.parent = dev; 244 proxy->dev.parent = dev;
245 proxy->dev.bus = &spi_bus_type; 245 proxy->dev.bus = &spi_bus_type;
@@ -338,18 +338,18 @@ static void scan_boardinfo(struct spi_master *master)
338 338
339/*-------------------------------------------------------------------------*/ 339/*-------------------------------------------------------------------------*/
340 340
341static void spi_master_release(struct class_device *cdev) 341static void spi_master_release(struct device *dev)
342{ 342{
343 struct spi_master *master; 343 struct spi_master *master;
344 344
345 master = container_of(cdev, struct spi_master, cdev); 345 master = container_of(dev, struct spi_master, dev);
346 kfree(master); 346 kfree(master);
347} 347}
348 348
349static struct class spi_master_class = { 349static struct class spi_master_class = {
350 .name = "spi_master", 350 .name = "spi_master",
351 .owner = THIS_MODULE, 351 .owner = THIS_MODULE,
352 .release = spi_master_release, 352 .dev_release = spi_master_release,
353}; 353};
354 354
355 355
@@ -357,7 +357,7 @@ static struct class spi_master_class = {
357 * spi_alloc_master - allocate SPI master controller 357 * spi_alloc_master - allocate SPI master controller
358 * @dev: the controller, possibly using the platform_bus 358 * @dev: the controller, possibly using the platform_bus
359 * @size: how much zeroed driver-private data to allocate; the pointer to this 359 * @size: how much zeroed driver-private data to allocate; the pointer to this
360 * memory is in the class_data field of the returned class_device, 360 * memory is in the driver_data field of the returned device,
361 * accessible with spi_master_get_devdata(). 361 * accessible with spi_master_get_devdata().
362 * Context: can sleep 362 * Context: can sleep
363 * 363 *
@@ -383,9 +383,9 @@ struct spi_master *spi_alloc_master(struct device *dev, unsigned size)
383 if (!master) 383 if (!master)
384 return NULL; 384 return NULL;
385 385
386 class_device_initialize(&master->cdev); 386 device_initialize(&master->dev);
387 master->cdev.class = &spi_master_class; 387 master->dev.class = &spi_master_class;
388 master->cdev.dev = get_device(dev); 388 master->dev.parent = get_device(dev);
389 spi_master_set_devdata(master, &master[1]); 389 spi_master_set_devdata(master, &master[1]);
390 390
391 return master; 391 return master;
@@ -415,7 +415,7 @@ EXPORT_SYMBOL_GPL(spi_alloc_master);
415int spi_register_master(struct spi_master *master) 415int spi_register_master(struct spi_master *master)
416{ 416{
417 static atomic_t dyn_bus_id = ATOMIC_INIT((1<<15) - 1); 417 static atomic_t dyn_bus_id = ATOMIC_INIT((1<<15) - 1);
418 struct device *dev = master->cdev.dev; 418 struct device *dev = master->dev.parent;
419 int status = -ENODEV; 419 int status = -ENODEV;
420 int dynamic = 0; 420 int dynamic = 0;
421 421
@@ -440,12 +440,12 @@ int spi_register_master(struct spi_master *master)
440 /* register the device, then userspace will see it. 440 /* register the device, then userspace will see it.
441 * registration fails if the bus ID is in use. 441 * registration fails if the bus ID is in use.
442 */ 442 */
443 snprintf(master->cdev.class_id, sizeof master->cdev.class_id, 443 snprintf(master->dev.bus_id, sizeof master->dev.bus_id,
444 "spi%u", master->bus_num); 444 "spi%u", master->bus_num);
445 status = class_device_add(&master->cdev); 445 status = device_add(&master->dev);
446 if (status < 0) 446 if (status < 0)
447 goto done; 447 goto done;
448 dev_dbg(dev, "registered master %s%s\n", master->cdev.class_id, 448 dev_dbg(dev, "registered master %s%s\n", master->dev.bus_id,
449 dynamic ? " (dynamic)" : ""); 449 dynamic ? " (dynamic)" : "");
450 450
451 /* populate children from any spi device tables */ 451 /* populate children from any spi device tables */
@@ -478,8 +478,8 @@ void spi_unregister_master(struct spi_master *master)
478{ 478{
479 int dummy; 479 int dummy;
480 480
481 dummy = device_for_each_child(master->cdev.dev, NULL, __unregister); 481 dummy = device_for_each_child(master->dev.parent, NULL, __unregister);
482 class_device_unregister(&master->cdev); 482 device_unregister(&master->dev);
483} 483}
484EXPORT_SYMBOL_GPL(spi_unregister_master); 484EXPORT_SYMBOL_GPL(spi_unregister_master);
485 485
@@ -495,13 +495,13 @@ EXPORT_SYMBOL_GPL(spi_unregister_master);
495 */ 495 */
496struct spi_master *spi_busnum_to_master(u16 bus_num) 496struct spi_master *spi_busnum_to_master(u16 bus_num)
497{ 497{
498 struct class_device *cdev; 498 struct device *dev;
499 struct spi_master *master = NULL; 499 struct spi_master *master = NULL;
500 struct spi_master *m; 500 struct spi_master *m;
501 501
502 down(&spi_master_class.sem); 502 down(&spi_master_class.sem);
503 list_for_each_entry(cdev, &spi_master_class.children, node) { 503 list_for_each_entry(dev, &spi_master_class.children, node) {
504 m = container_of(cdev, struct spi_master, cdev); 504 m = container_of(dev, struct spi_master, dev);
505 if (m->bus_num == bus_num) { 505 if (m->bus_num == bus_num) {
506 master = spi_master_get(m); 506 master = spi_master_get(m);
507 break; 507 break;
diff --git a/drivers/spi/spi_bfin5xx.c b/drivers/spi/spi_bfin5xx.c
index f540ed77a102..6cb71d74738f 100644
--- a/drivers/spi/spi_bfin5xx.c
+++ b/drivers/spi/spi_bfin5xx.c
@@ -39,7 +39,6 @@
39#include <linux/dma-mapping.h> 39#include <linux/dma-mapping.h>
40#include <linux/spi/spi.h> 40#include <linux/spi/spi.h>
41#include <linux/workqueue.h> 41#include <linux/workqueue.h>
42#include <linux/errno.h>
43#include <linux/delay.h> 42#include <linux/delay.h>
44 43
45#include <asm/io.h> 44#include <asm/io.h>
@@ -1107,7 +1106,7 @@ static inline int init_queue(struct driver_data *drv_data)
1107 /* init messages workqueue */ 1106 /* init messages workqueue */
1108 INIT_WORK(&drv_data->pump_messages, pump_messages); 1107 INIT_WORK(&drv_data->pump_messages, pump_messages);
1109 drv_data->workqueue = 1108 drv_data->workqueue =
1110 create_singlethread_workqueue(drv_data->master->cdev.dev->bus_id); 1109 create_singlethread_workqueue(drv_data->master->dev.parent->bus_id);
1111 if (drv_data->workqueue == NULL) 1110 if (drv_data->workqueue == NULL)
1112 return -EBUSY; 1111 return -EBUSY;
1113 1112
diff --git a/drivers/spi/spi_bitbang.c b/drivers/spi/spi_bitbang.c
index 0c85c984ccb4..81639c6be1c7 100644
--- a/drivers/spi/spi_bitbang.c
+++ b/drivers/spi/spi_bitbang.c
@@ -472,7 +472,7 @@ int spi_bitbang_start(struct spi_bitbang *bitbang)
472 /* this task is the only thing to touch the SPI bits */ 472 /* this task is the only thing to touch the SPI bits */
473 bitbang->busy = 0; 473 bitbang->busy = 0;
474 bitbang->workqueue = create_singlethread_workqueue( 474 bitbang->workqueue = create_singlethread_workqueue(
475 bitbang->master->cdev.dev->bus_id); 475 bitbang->master->dev.parent->bus_id);
476 if (bitbang->workqueue == NULL) { 476 if (bitbang->workqueue == NULL) {
477 status = -EBUSY; 477 status = -EBUSY;
478 goto err1; 478 goto err1;
diff --git a/drivers/spi/spi_imx.c b/drivers/spi/spi_imx.c
index bd9177f51de9..3b4650ae6f1a 100644
--- a/drivers/spi/spi_imx.c
+++ b/drivers/spi/spi_imx.c
@@ -1361,7 +1361,7 @@ static void cleanup(struct spi_device *spi)
1361 kfree(spi_get_ctldata(spi)); 1361 kfree(spi_get_ctldata(spi));
1362} 1362}
1363 1363
1364static int init_queue(struct driver_data *drv_data) 1364static int __init init_queue(struct driver_data *drv_data)
1365{ 1365{
1366 INIT_LIST_HEAD(&drv_data->queue); 1366 INIT_LIST_HEAD(&drv_data->queue);
1367 spin_lock_init(&drv_data->lock); 1367 spin_lock_init(&drv_data->lock);
@@ -1374,7 +1374,7 @@ static int init_queue(struct driver_data *drv_data)
1374 1374
1375 INIT_WORK(&drv_data->work, pump_messages); 1375 INIT_WORK(&drv_data->work, pump_messages);
1376 drv_data->workqueue = create_singlethread_workqueue( 1376 drv_data->workqueue = create_singlethread_workqueue(
1377 drv_data->master->cdev.dev->bus_id); 1377 drv_data->master->dev.parent->bus_id);
1378 if (drv_data->workqueue == NULL) 1378 if (drv_data->workqueue == NULL)
1379 return -EBUSY; 1379 return -EBUSY;
1380 1380
@@ -1444,7 +1444,7 @@ static int destroy_queue(struct driver_data *drv_data)
1444 return 0; 1444 return 0;
1445} 1445}
1446 1446
1447static int spi_imx_probe(struct platform_device *pdev) 1447static int __init spi_imx_probe(struct platform_device *pdev)
1448{ 1448{
1449 struct device *dev = &pdev->dev; 1449 struct device *dev = &pdev->dev;
1450 struct spi_imx_master *platform_info; 1450 struct spi_imx_master *platform_info;
@@ -1622,7 +1622,7 @@ err_no_mem:
1622 return status; 1622 return status;
1623} 1623}
1624 1624
1625static int __devexit spi_imx_remove(struct platform_device *pdev) 1625static int __exit spi_imx_remove(struct platform_device *pdev)
1626{ 1626{
1627 struct driver_data *drv_data = platform_get_drvdata(pdev); 1627 struct driver_data *drv_data = platform_get_drvdata(pdev);
1628 int irq; 1628 int irq;
@@ -1739,8 +1739,7 @@ static struct platform_driver driver = {
1739 .bus = &platform_bus_type, 1739 .bus = &platform_bus_type,
1740 .owner = THIS_MODULE, 1740 .owner = THIS_MODULE,
1741 }, 1741 },
1742 .probe = spi_imx_probe, 1742 .remove = __exit_p(spi_imx_remove),
1743 .remove = __devexit_p(spi_imx_remove),
1744 .shutdown = spi_imx_shutdown, 1743 .shutdown = spi_imx_shutdown,
1745 .suspend = spi_imx_suspend, 1744 .suspend = spi_imx_suspend,
1746 .resume = spi_imx_resume, 1745 .resume = spi_imx_resume,
@@ -1748,7 +1747,7 @@ static struct platform_driver driver = {
1748 1747
1749static int __init spi_imx_init(void) 1748static int __init spi_imx_init(void)
1750{ 1749{
1751 return platform_driver_register(&driver); 1750 return platform_driver_probe(&driver, spi_imx_probe);
1752} 1751}
1753module_init(spi_imx_init); 1752module_init(spi_imx_init);
1754 1753
diff --git a/drivers/spi/spi_lm70llp.c b/drivers/spi/spi_lm70llp.c
index 4ea68ac16115..39d8d8ad65c0 100644
--- a/drivers/spi/spi_lm70llp.c
+++ b/drivers/spi/spi_lm70llp.c
@@ -82,7 +82,7 @@ struct spi_lm70llp {
82 struct pardevice *pd; 82 struct pardevice *pd;
83 struct spi_device *spidev_lm70; 83 struct spi_device *spidev_lm70;
84 struct spi_board_info info; 84 struct spi_board_info info;
85 struct class_device *cdev; 85 //struct device *dev;
86}; 86};
87 87
88/* REVISIT : ugly global ; provides "exclusive open" facility */ 88/* REVISIT : ugly global ; provides "exclusive open" facility */
diff --git a/drivers/spi/spi_mpc83xx.c b/drivers/spi/spi_mpc83xx.c
index 32cda77b31cd..4580b9cf625d 100644
--- a/drivers/spi/spi_mpc83xx.c
+++ b/drivers/spi/spi_mpc83xx.c
@@ -511,7 +511,7 @@ err:
511 return ret; 511 return ret;
512} 512}
513 513
514static int __devexit mpc83xx_spi_remove(struct platform_device *dev) 514static int __exit mpc83xx_spi_remove(struct platform_device *dev)
515{ 515{
516 struct mpc83xx_spi *mpc83xx_spi; 516 struct mpc83xx_spi *mpc83xx_spi;
517 struct spi_master *master; 517 struct spi_master *master;
@@ -529,8 +529,7 @@ static int __devexit mpc83xx_spi_remove(struct platform_device *dev)
529 529
530MODULE_ALIAS("mpc83xx_spi"); /* for platform bus hotplug */ 530MODULE_ALIAS("mpc83xx_spi"); /* for platform bus hotplug */
531static struct platform_driver mpc83xx_spi_driver = { 531static struct platform_driver mpc83xx_spi_driver = {
532 .probe = mpc83xx_spi_probe, 532 .remove = __exit_p(mpc83xx_spi_remove),
533 .remove = __devexit_p(mpc83xx_spi_remove),
534 .driver = { 533 .driver = {
535 .name = "mpc83xx_spi", 534 .name = "mpc83xx_spi",
536 }, 535 },
@@ -538,7 +537,7 @@ static struct platform_driver mpc83xx_spi_driver = {
538 537
539static int __init mpc83xx_spi_init(void) 538static int __init mpc83xx_spi_init(void)
540{ 539{
541 return platform_driver_register(&mpc83xx_spi_driver); 540 return platform_driver_probe(&mpc83xx_spi_driver, mpc83xx_spi_probe);
542} 541}
543 542
544static void __exit mpc83xx_spi_exit(void) 543static void __exit mpc83xx_spi_exit(void)
diff --git a/drivers/spi/spi_s3c24xx.c b/drivers/spi/spi_s3c24xx.c
index e9b683f7d7b3..89d6685a5ca4 100644
--- a/drivers/spi/spi_s3c24xx.c
+++ b/drivers/spi/spi_s3c24xx.c
@@ -233,7 +233,7 @@ static irqreturn_t s3c24xx_spi_irq(int irq, void *dev)
233 return IRQ_HANDLED; 233 return IRQ_HANDLED;
234} 234}
235 235
236static int s3c24xx_spi_probe(struct platform_device *pdev) 236static int __init s3c24xx_spi_probe(struct platform_device *pdev)
237{ 237{
238 struct s3c24xx_spi *hw; 238 struct s3c24xx_spi *hw;
239 struct spi_master *master; 239 struct spi_master *master;
@@ -382,7 +382,7 @@ static int s3c24xx_spi_probe(struct platform_device *pdev)
382 return err; 382 return err;
383} 383}
384 384
385static int s3c24xx_spi_remove(struct platform_device *dev) 385static int __exit s3c24xx_spi_remove(struct platform_device *dev)
386{ 386{
387 struct s3c24xx_spi *hw = platform_get_drvdata(dev); 387 struct s3c24xx_spi *hw = platform_get_drvdata(dev);
388 388
@@ -429,8 +429,7 @@ static int s3c24xx_spi_resume(struct platform_device *pdev)
429 429
430MODULE_ALIAS("s3c2410_spi"); /* for platform bus hotplug */ 430MODULE_ALIAS("s3c2410_spi"); /* for platform bus hotplug */
431static struct platform_driver s3c24xx_spidrv = { 431static struct platform_driver s3c24xx_spidrv = {
432 .probe = s3c24xx_spi_probe, 432 .remove = __exit_p(s3c24xx_spi_remove),
433 .remove = s3c24xx_spi_remove,
434 .suspend = s3c24xx_spi_suspend, 433 .suspend = s3c24xx_spi_suspend,
435 .resume = s3c24xx_spi_resume, 434 .resume = s3c24xx_spi_resume,
436 .driver = { 435 .driver = {
@@ -441,7 +440,7 @@ static struct platform_driver s3c24xx_spidrv = {
441 440
442static int __init s3c24xx_spi_init(void) 441static int __init s3c24xx_spi_init(void)
443{ 442{
444 return platform_driver_register(&s3c24xx_spidrv); 443 return platform_driver_probe(&s3c24xx_spidrv, s3c24xx_spi_probe);
445} 444}
446 445
447static void __exit s3c24xx_spi_exit(void) 446static void __exit s3c24xx_spi_exit(void)
diff --git a/drivers/spi/spi_txx9.c b/drivers/spi/spi_txx9.c
index b7f4bb239eaf..cc5094f37dd3 100644
--- a/drivers/spi/spi_txx9.c
+++ b/drivers/spi/spi_txx9.c
@@ -400,7 +400,7 @@ static int __init txx9spi_probe(struct platform_device *dev)
400 goto exit; 400 goto exit;
401 } 401 }
402 402
403 c->workqueue = create_singlethread_workqueue(master->cdev.dev->bus_id); 403 c->workqueue = create_singlethread_workqueue(master->dev.parent->bus_id);
404 if (!c->workqueue) 404 if (!c->workqueue)
405 goto exit; 405 goto exit;
406 c->last_chipselect = -1; 406 c->last_chipselect = -1;