22 #include <linux/kernel.h>
24 #include <linux/device.h>
30 #include <linux/slab.h>
34 #include <linux/export.h>
35 #include <linux/sched.h>
39 static void spidev_release(
struct device *
dev)
47 spi_master_put(spi->
master);
54 const struct spi_device *spi = to_spi_device(dev);
81 const struct spi_driver *sdrv = to_spi_driver(sdev->
dev.driver);
83 return spi_match_id(sdrv->
id_table, sdev);
89 const struct spi_device *spi = to_spi_device(dev);
90 const struct spi_driver *sdrv = to_spi_driver(drv);
93 if (of_driver_match_device(dev, drv))
97 return !!spi_match_id(sdrv->
id_table, spi);
104 const struct spi_device *spi = to_spi_device(dev);
110 #ifdef CONFIG_PM_SLEEP
119 value = drv->
suspend(to_spi_device(dev), message);
121 dev_dbg(dev,
"... can't suspend\n");
126 static int spi_legacy_resume(
struct device *dev)
134 value = drv->
resume(to_spi_device(dev));
136 dev_dbg(dev,
"... can't resume\n");
158 return spi_legacy_resume(dev);
178 return spi_legacy_resume(dev);
198 return spi_legacy_resume(dev);
201 #define spi_pm_suspend NULL
202 #define spi_pm_resume NULL
203 #define spi_pm_freeze NULL
204 #define spi_pm_thaw NULL
205 #define spi_pm_poweroff NULL
206 #define spi_pm_restore NULL
217 pm_generic_runtime_suspend,
218 pm_generic_runtime_resume,
219 pm_generic_runtime_idle
225 .dev_attrs = spi_dev_attrs,
226 .match = spi_match_device,
227 .uevent = spi_uevent,
233 static int spi_drv_probe(
struct device *dev)
237 return sdrv->
probe(to_spi_device(dev));
240 static int spi_drv_remove(
struct device *dev)
244 return sdrv->
remove(to_spi_device(dev));
247 static void spi_drv_shutdown(
struct device *dev)
263 sdrv->
driver.probe = spi_drv_probe;
265 sdrv->
driver.remove = spi_drv_remove;
267 sdrv->
driver.shutdown = spi_drv_shutdown;
316 if (!spi_master_get(master))
321 dev_err(dev,
"cannot alloc spi_device\n");
322 spi_master_put(master);
327 spi->
dev.parent = &master->
dev;
329 spi->
dev.release = spidev_release;
353 dev_err(dev,
"cs%d >= max %d\n",
355 spi->
master->num_chipselect);
372 dev_err(dev,
"chipselect %d already in use\n",
385 dev_err(dev,
"can't setup %s, status %d\n",
386 dev_name(&spi->
dev), status);
393 dev_err(dev,
"can't add %s, status %d\n",
394 dev_name(&spi->
dev), status);
396 dev_dbg(dev,
"registered child %s\n", dev_name(&spi->
dev));
466 dev_err(master->
dev.parent,
"can't create new device for %s\n",
499 for (i = 0; i <
n; i++, bi++, info++) {
502 memcpy(&bi->board_info, info,
sizeof(*info));
506 spi_match_master_to_boardinfo(master, &bi->board_info);
529 bool was_busy =
false;
538 spin_unlock_irqrestore(&master->
queue_lock, flags);
540 "failed to unprepare transfer hardware\n");
544 master->
busy =
false;
545 spin_unlock_irqrestore(&master->
queue_lock, flags);
551 spin_unlock_irqrestore(&master->
queue_lock, flags);
558 list_del_init(&master->
cur_msg->queue);
563 spin_unlock_irqrestore(&master->
queue_lock, flags);
569 "failed to prepare transfer hardware\n");
577 "failed to transfer one message from queue\n");
582 static int spi_init_queue(
struct spi_master *master)
586 INIT_LIST_HEAD(&master->
queue);
590 master->
busy =
false;
595 dev_name(&master->
dev));
597 dev_err(&master->
dev,
"failed to create message pump task\n");
611 "will run message pump with realtime priority\n");
633 if (list_empty(&master->
queue))
638 spin_unlock_irqrestore(&master->
queue_lock, flags);
661 spin_unlock_irqrestore(&master->
queue_lock, flags);
669 static int spi_start_queue(
struct spi_master *master)
676 spin_unlock_irqrestore(&master->
queue_lock, flags);
682 spin_unlock_irqrestore(&master->
queue_lock, flags);
689 static int spi_stop_queue(
struct spi_master *master)
692 unsigned limit = 500;
703 while ((!list_empty(&master->
queue) || master->
busy) && limit--) {
704 spin_unlock_irqrestore(&master->
queue_lock, flags);
709 if (!list_empty(&master->
queue) || master->
busy)
714 spin_unlock_irqrestore(&master->
queue_lock, flags);
718 "could not stop message queue\n");
724 static int spi_destroy_queue(
struct spi_master *master)
728 ret = spi_stop_queue(master);
737 dev_err(&master->
dev,
"problem destroying queue\n");
760 spin_unlock_irqrestore(&master->
queue_lock, flags);
770 spin_unlock_irqrestore(&master->
queue_lock, flags);
774 static int spi_master_initialize_queue(
struct spi_master *master)
779 master->
transfer = spi_queued_transfer;
782 ret = spi_init_queue(master);
784 dev_err(&master->
dev,
"problem initializing queue\n");
787 ret = spi_start_queue(master);
789 dev_err(&master->
dev,
"problem starting queue\n");
790 goto err_start_queue;
797 spi_destroy_queue(master);
803 #if defined(CONFIG_OF) && !defined(CONFIG_SPARC)
811 static void of_register_spi_devices(
struct spi_master *master)
819 if (!master->
dev.of_node)
826 dev_err(&master->
dev,
"spi_device alloc error for %s\n",
835 dev_err(&master->
dev,
"cannot find modalias for %s\n",
843 if (!prop || len <
sizeof(*prop)) {
844 dev_err(&master->
dev,
"%s has no 'reg' property\n",
861 if (!prop || len <
sizeof(*prop)) {
862 dev_err(&master->
dev,
"%s has no 'spi-max-frequency' property\n",
874 spi->
dev.of_node = nc;
880 dev_err(&master->
dev,
"spi_device register error %s\n",
888 static void of_register_spi_devices(
struct spi_master *master) { }
891 static void spi_master_release(
struct device *dev)
899 static struct class spi_master_class = {
900 .name =
"spi_master",
902 .dev_release = spi_master_release,
934 master = kzalloc(size +
sizeof *master,
GFP_KERNEL);
941 master->
dev.class = &spi_master_class;
943 spi_master_set_devdata(master, &master[1]);
1006 dev_dbg(dev,
"registered master %s%s\n", dev_name(&master->
dev),
1007 dynamic ?
" (dynamic)" :
"");
1011 dev_info(dev,
"master is unqueued, this is deprecated\n");
1013 status = spi_master_initialize_queue(master);
1023 spi_match_master_to_boardinfo(master, &bi->
board_info);
1027 of_register_spi_devices(master);
1033 static int __unregister(
struct device *dev,
void *null)
1035 spi_unregister_device(to_spi_device(dev));
1054 if (spi_destroy_queue(master))
1055 dev_err(&master->
dev,
"queue remove failed\n");
1075 ret = spi_stop_queue(master);
1077 dev_err(&master->
dev,
"queue stop failed\n");
1090 ret = spi_start_queue(master);
1092 dev_err(&master->
dev,
"queue restart failed\n");
1098 static int __spi_master_match(
struct device *dev,
void *
data)
1123 __spi_master_match);
1164 bad_bits = spi->
mode & ~spi->
master->mode_bits;
1166 dev_err(&spi->
dev,
"setup: unsupported mode bits %x\n",
1174 status = spi->
master->setup(spi);
1177 "%u bits/w, %u Hz max --> %d\n",
1202 unsigned flags = master->
flags;
1216 return master->
transfer(spi, message);
1252 unsigned long flags;
1259 ret = __spi_async(spi, message);
1300 unsigned long flags;
1304 ret = __spi_async(spi, message);
1321 static void spi_complete(
void *
arg)
1346 status = message->
status;
1375 return __spi_sync(spi, message, 0);
1397 return __spi_sync(spi, message, 1);
1418 unsigned long flags;
1456 #define SPI_BUFSIZ max(32,SMP_CACHE_BYTES)
1480 const void *txbuf,
unsigned n_tx,
1481 void *rxbuf,
unsigned n_rx)
1497 spi_message_init(&message);
1501 spi_message_add_tail(&x[0], &message);
1505 spi_message_add_tail(&x[1], &message);
1516 memcpy(local_buf, txbuf, n_tx);
1518 x[1].
rx_buf = local_buf + n_tx;
1536 static int __init spi_init(
void)