diff options
Diffstat (limited to 'drivers/spi')
| -rw-r--r-- | drivers/spi/Kconfig | 13 | ||||
| -rw-r--r-- | drivers/spi/atmel_spi.c | 14 | ||||
| -rw-r--r-- | drivers/spi/mpc52xx_psc_spi.c | 2 | ||||
| -rw-r--r-- | drivers/spi/omap2_mcspi.c | 4 | ||||
| -rw-r--r-- | drivers/spi/omap_uwire.c | 9 | ||||
| -rw-r--r-- | drivers/spi/pxa2xx_spi.c | 14 | ||||
| -rw-r--r-- | drivers/spi/spi.c | 36 | ||||
| -rw-r--r-- | drivers/spi/spi_bfin5xx.c | 3 | ||||
| -rw-r--r-- | drivers/spi/spi_bitbang.c | 2 | ||||
| -rw-r--r-- | drivers/spi/spi_imx.c | 13 | ||||
| -rw-r--r-- | drivers/spi/spi_lm70llp.c | 2 | ||||
| -rw-r--r-- | drivers/spi/spi_mpc83xx.c | 7 | ||||
| -rw-r--r-- | drivers/spi/spi_s3c24xx.c | 9 | ||||
| -rw-r--r-- | drivers/spi/spi_txx9.c | 2 |
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 | ||
| 126 | config SPI_MPC83xx | 126 | config 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 | ||
| 138 | config SPI_OMAP_UWIRE | 139 | config 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 | ||
| 484 | static int uwire_probe(struct platform_device *pdev) | 484 | static 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 | ||
| 528 | static int uwire_remove(struct platform_device *pdev) | 528 | static 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 | ||
| 572 | static void __exit omap_uwire_exit(void) | 571 | static 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 | ||
| 1233 | static int init_queue(struct driver_data *drv_data) | 1232 | static 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 | ||
| 1321 | static int pxa2xx_spi_probe(struct platform_device *pdev) | 1320 | static 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 | ||
| 1632 | static int __init pxa2xx_spi_init(void) | 1630 | static 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 | } |
| 1638 | module_init(pxa2xx_spi_init); | 1634 | module_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 | ||
| 341 | static void spi_master_release(struct class_device *cdev) | 341 | static 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 | ||
| 349 | static struct class spi_master_class = { | 349 | static 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); | |||
| 415 | int spi_register_master(struct spi_master *master) | 415 | int 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 | } |
| 484 | EXPORT_SYMBOL_GPL(spi_unregister_master); | 484 | EXPORT_SYMBOL_GPL(spi_unregister_master); |
| 485 | 485 | ||
| @@ -495,13 +495,13 @@ EXPORT_SYMBOL_GPL(spi_unregister_master); | |||
| 495 | */ | 495 | */ |
| 496 | struct spi_master *spi_busnum_to_master(u16 bus_num) | 496 | struct 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 | ||
| 1364 | static int init_queue(struct driver_data *drv_data) | 1364 | static 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 | ||
| 1447 | static int spi_imx_probe(struct platform_device *pdev) | 1447 | static 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 | ||
| 1625 | static int __devexit spi_imx_remove(struct platform_device *pdev) | 1625 | static 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 | ||
| 1749 | static int __init spi_imx_init(void) | 1748 | static 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 | } |
| 1753 | module_init(spi_imx_init); | 1752 | module_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 | ||
| 514 | static int __devexit mpc83xx_spi_remove(struct platform_device *dev) | 514 | static 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 | ||
| 530 | MODULE_ALIAS("mpc83xx_spi"); /* for platform bus hotplug */ | 530 | MODULE_ALIAS("mpc83xx_spi"); /* for platform bus hotplug */ |
| 531 | static struct platform_driver mpc83xx_spi_driver = { | 531 | static 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 | ||
| 539 | static int __init mpc83xx_spi_init(void) | 538 | static 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 | ||
| 544 | static void __exit mpc83xx_spi_exit(void) | 543 | static 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 | ||
| 236 | static int s3c24xx_spi_probe(struct platform_device *pdev) | 236 | static 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 | ||
| 385 | static int s3c24xx_spi_remove(struct platform_device *dev) | 385 | static 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 | ||
| 430 | MODULE_ALIAS("s3c2410_spi"); /* for platform bus hotplug */ | 430 | MODULE_ALIAS("s3c2410_spi"); /* for platform bus hotplug */ |
| 431 | static struct platform_driver s3c24xx_spidrv = { | 431 | static 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 | ||
| 442 | static int __init s3c24xx_spi_init(void) | 441 | static 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 | ||
| 447 | static void __exit s3c24xx_spi_exit(void) | 446 | static 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; |
