Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
spi.c
Go to the documentation of this file.
1 /*
2  * SPI init/core code
3  *
4  * Copyright (C) 2005 David Brownell
5  * Copyright (C) 2008 Secret Lab Technologies Ltd.
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20  */
21 
22 #include <linux/kernel.h>
23 #include <linux/kmod.h>
24 #include <linux/device.h>
25 #include <linux/init.h>
26 #include <linux/cache.h>
27 #include <linux/mutex.h>
28 #include <linux/of_device.h>
29 #include <linux/of_irq.h>
30 #include <linux/slab.h>
31 #include <linux/mod_devicetable.h>
32 #include <linux/spi/spi.h>
33 #include <linux/pm_runtime.h>
34 #include <linux/export.h>
35 #include <linux/sched.h>
36 #include <linux/delay.h>
37 #include <linux/kthread.h>
38 
39 static void spidev_release(struct device *dev)
40 {
41  struct spi_device *spi = to_spi_device(dev);
42 
43  /* spi masters may cleanup for released devices */
44  if (spi->master->cleanup)
45  spi->master->cleanup(spi);
46 
47  spi_master_put(spi->master);
48  kfree(spi);
49 }
50 
51 static ssize_t
52 modalias_show(struct device *dev, struct device_attribute *a, char *buf)
53 {
54  const struct spi_device *spi = to_spi_device(dev);
55 
56  return sprintf(buf, "%s%s\n", SPI_MODULE_PREFIX, spi->modalias);
57 }
58 
59 static struct device_attribute spi_dev_attrs[] = {
60  __ATTR_RO(modalias),
62 };
63 
64 /* modalias support makes "modprobe $MODALIAS" new-style hotplug work,
65  * and the sysfs version makes coldplug work too.
66  */
67 
68 static const struct spi_device_id *spi_match_id(const struct spi_device_id *id,
69  const struct spi_device *sdev)
70 {
71  while (id->name[0]) {
72  if (!strcmp(sdev->modalias, id->name))
73  return id;
74  id++;
75  }
76  return NULL;
77 }
78 
79 const struct spi_device_id *spi_get_device_id(const struct spi_device *sdev)
80 {
81  const struct spi_driver *sdrv = to_spi_driver(sdev->dev.driver);
82 
83  return spi_match_id(sdrv->id_table, sdev);
84 }
86 
87 static int spi_match_device(struct device *dev, struct device_driver *drv)
88 {
89  const struct spi_device *spi = to_spi_device(dev);
90  const struct spi_driver *sdrv = to_spi_driver(drv);
91 
92  /* Attempt an OF style match */
93  if (of_driver_match_device(dev, drv))
94  return 1;
95 
96  if (sdrv->id_table)
97  return !!spi_match_id(sdrv->id_table, spi);
98 
99  return strcmp(spi->modalias, drv->name) == 0;
100 }
101 
102 static int spi_uevent(struct device *dev, struct kobj_uevent_env *env)
103 {
104  const struct spi_device *spi = to_spi_device(dev);
105 
106  add_uevent_var(env, "MODALIAS=%s%s", SPI_MODULE_PREFIX, spi->modalias);
107  return 0;
108 }
109 
110 #ifdef CONFIG_PM_SLEEP
111 static int spi_legacy_suspend(struct device *dev, pm_message_t message)
112 {
113  int value = 0;
114  struct spi_driver *drv = to_spi_driver(dev->driver);
115 
116  /* suspend will stop irqs and dma; no more i/o */
117  if (drv) {
118  if (drv->suspend)
119  value = drv->suspend(to_spi_device(dev), message);
120  else
121  dev_dbg(dev, "... can't suspend\n");
122  }
123  return value;
124 }
125 
126 static int spi_legacy_resume(struct device *dev)
127 {
128  int value = 0;
129  struct spi_driver *drv = to_spi_driver(dev->driver);
130 
131  /* resume may restart the i/o queue */
132  if (drv) {
133  if (drv->resume)
134  value = drv->resume(to_spi_device(dev));
135  else
136  dev_dbg(dev, "... can't resume\n");
137  }
138  return value;
139 }
140 
141 static int spi_pm_suspend(struct device *dev)
142 {
143  const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
144 
145  if (pm)
146  return pm_generic_suspend(dev);
147  else
148  return spi_legacy_suspend(dev, PMSG_SUSPEND);
149 }
150 
151 static int spi_pm_resume(struct device *dev)
152 {
153  const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
154 
155  if (pm)
156  return pm_generic_resume(dev);
157  else
158  return spi_legacy_resume(dev);
159 }
160 
161 static int spi_pm_freeze(struct device *dev)
162 {
163  const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
164 
165  if (pm)
166  return pm_generic_freeze(dev);
167  else
168  return spi_legacy_suspend(dev, PMSG_FREEZE);
169 }
170 
171 static int spi_pm_thaw(struct device *dev)
172 {
173  const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
174 
175  if (pm)
176  return pm_generic_thaw(dev);
177  else
178  return spi_legacy_resume(dev);
179 }
180 
181 static int spi_pm_poweroff(struct device *dev)
182 {
183  const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
184 
185  if (pm)
186  return pm_generic_poweroff(dev);
187  else
188  return spi_legacy_suspend(dev, PMSG_HIBERNATE);
189 }
190 
191 static int spi_pm_restore(struct device *dev)
192 {
193  const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
194 
195  if (pm)
196  return pm_generic_restore(dev);
197  else
198  return spi_legacy_resume(dev);
199 }
200 #else
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
207 #endif
208 
209 static const struct dev_pm_ops spi_pm = {
210  .suspend = spi_pm_suspend,
211  .resume = spi_pm_resume,
212  .freeze = spi_pm_freeze,
213  .thaw = spi_pm_thaw,
214  .poweroff = spi_pm_poweroff,
215  .restore = spi_pm_restore,
217  pm_generic_runtime_suspend,
218  pm_generic_runtime_resume,
219  pm_generic_runtime_idle
220  )
221 };
222 
224  .name = "spi",
225  .dev_attrs = spi_dev_attrs,
226  .match = spi_match_device,
227  .uevent = spi_uevent,
228  .pm = &spi_pm,
229 };
230 EXPORT_SYMBOL_GPL(spi_bus_type);
231 
232 
233 static int spi_drv_probe(struct device *dev)
234 {
235  const struct spi_driver *sdrv = to_spi_driver(dev->driver);
236 
237  return sdrv->probe(to_spi_device(dev));
238 }
239 
240 static int spi_drv_remove(struct device *dev)
241 {
242  const struct spi_driver *sdrv = to_spi_driver(dev->driver);
243 
244  return sdrv->remove(to_spi_device(dev));
245 }
246 
247 static void spi_drv_shutdown(struct device *dev)
248 {
249  const struct spi_driver *sdrv = to_spi_driver(dev->driver);
250 
251  sdrv->shutdown(to_spi_device(dev));
252 }
253 
260 {
261  sdrv->driver.bus = &spi_bus_type;
262  if (sdrv->probe)
263  sdrv->driver.probe = spi_drv_probe;
264  if (sdrv->remove)
265  sdrv->driver.remove = spi_drv_remove;
266  if (sdrv->shutdown)
267  sdrv->driver.shutdown = spi_drv_shutdown;
268  return driver_register(&sdrv->driver);
269 }
271 
272 /*-------------------------------------------------------------------------*/
273 
274 /* SPI devices should normally not be created by SPI device drivers; that
275  * would make them board-specific. Similarly with SPI master drivers.
276  * Device registration normally goes into like arch/.../mach.../board-YYY.c
277  * with other readonly (flashable) information about mainboard devices.
278  */
279 
280 struct boardinfo {
281  struct list_head list;
283 };
284 
285 static LIST_HEAD(board_list);
286 static LIST_HEAD(spi_master_list);
287 
288 /*
289  * Used to protect add/del opertion for board_info list and
290  * spi_master list, and their matching process
291  */
292 static DEFINE_MUTEX(board_lock);
293 
312 {
313  struct spi_device *spi;
314  struct device *dev = master->dev.parent;
315 
316  if (!spi_master_get(master))
317  return NULL;
318 
319  spi = kzalloc(sizeof *spi, GFP_KERNEL);
320  if (!spi) {
321  dev_err(dev, "cannot alloc spi_device\n");
322  spi_master_put(master);
323  return NULL;
324  }
325 
326  spi->master = master;
327  spi->dev.parent = &master->dev;
328  spi->dev.bus = &spi_bus_type;
329  spi->dev.release = spidev_release;
330  device_initialize(&spi->dev);
331  return spi;
332 }
334 
344 int spi_add_device(struct spi_device *spi)
345 {
346  static DEFINE_MUTEX(spi_add_lock);
347  struct device *dev = spi->master->dev.parent;
348  struct device *d;
349  int status;
350 
351  /* Chipselects are numbered 0..max; validate. */
352  if (spi->chip_select >= spi->master->num_chipselect) {
353  dev_err(dev, "cs%d >= max %d\n",
354  spi->chip_select,
355  spi->master->num_chipselect);
356  return -EINVAL;
357  }
358 
359  /* Set the bus ID string */
360  dev_set_name(&spi->dev, "%s.%u", dev_name(&spi->master->dev),
361  spi->chip_select);
362 
363 
364  /* We need to make sure there's no other device with this
365  * chipselect **BEFORE** we call setup(), else we'll trash
366  * its configuration. Lock against concurrent add() calls.
367  */
368  mutex_lock(&spi_add_lock);
369 
370  d = bus_find_device_by_name(&spi_bus_type, NULL, dev_name(&spi->dev));
371  if (d != NULL) {
372  dev_err(dev, "chipselect %d already in use\n",
373  spi->chip_select);
374  put_device(d);
375  status = -EBUSY;
376  goto done;
377  }
378 
379  /* Drivers may modify this initial i/o setup, but will
380  * normally rely on the device being setup. Devices
381  * using SPI_CS_HIGH can't coexist well otherwise...
382  */
383  status = spi_setup(spi);
384  if (status < 0) {
385  dev_err(dev, "can't setup %s, status %d\n",
386  dev_name(&spi->dev), status);
387  goto done;
388  }
389 
390  /* Device may be bound to an active driver when this returns */
391  status = device_add(&spi->dev);
392  if (status < 0)
393  dev_err(dev, "can't add %s, status %d\n",
394  dev_name(&spi->dev), status);
395  else
396  dev_dbg(dev, "registered child %s\n", dev_name(&spi->dev));
397 
398 done:
399  mutex_unlock(&spi_add_lock);
400  return status;
401 }
403 
419  struct spi_board_info *chip)
420 {
421  struct spi_device *proxy;
422  int status;
423 
424  /* NOTE: caller did any chip->bus_num checks necessary.
425  *
426  * Also, unless we change the return value convention to use
427  * error-or-pointer (not NULL-or-pointer), troubleshootability
428  * suggests syslogged diagnostics are best here (ugh).
429  */
430 
431  proxy = spi_alloc_device(master);
432  if (!proxy)
433  return NULL;
434 
435  WARN_ON(strlen(chip->modalias) >= sizeof(proxy->modalias));
436 
437  proxy->chip_select = chip->chip_select;
438  proxy->max_speed_hz = chip->max_speed_hz;
439  proxy->mode = chip->mode;
440  proxy->irq = chip->irq;
441  strlcpy(proxy->modalias, chip->modalias, sizeof(proxy->modalias));
442  proxy->dev.platform_data = (void *) chip->platform_data;
443  proxy->controller_data = chip->controller_data;
444  proxy->controller_state = NULL;
445 
446  status = spi_add_device(proxy);
447  if (status < 0) {
448  spi_dev_put(proxy);
449  return NULL;
450  }
451 
452  return proxy;
453 }
455 
456 static void spi_match_master_to_boardinfo(struct spi_master *master,
457  struct spi_board_info *bi)
458 {
459  struct spi_device *dev;
460 
461  if (master->bus_num != bi->bus_num)
462  return;
463 
464  dev = spi_new_device(master, bi);
465  if (!dev)
466  dev_err(master->dev.parent, "can't create new device for %s\n",
467  bi->modalias);
468 }
469 
489 int __devinit
491 {
492  struct boardinfo *bi;
493  int i;
494 
495  bi = kzalloc(n * sizeof(*bi), GFP_KERNEL);
496  if (!bi)
497  return -ENOMEM;
498 
499  for (i = 0; i < n; i++, bi++, info++) {
500  struct spi_master *master;
501 
502  memcpy(&bi->board_info, info, sizeof(*info));
503  mutex_lock(&board_lock);
504  list_add_tail(&bi->list, &board_list);
505  list_for_each_entry(master, &spi_master_list, list)
506  spi_match_master_to_boardinfo(master, &bi->board_info);
507  mutex_unlock(&board_lock);
508  }
509 
510  return 0;
511 }
512 
513 /*-------------------------------------------------------------------------*/
514 
524 static void spi_pump_messages(struct kthread_work *work)
525 {
526  struct spi_master *master =
527  container_of(work, struct spi_master, pump_messages);
528  unsigned long flags;
529  bool was_busy = false;
530  int ret;
531 
532  /* Lock queue and check for queue work */
533  spin_lock_irqsave(&master->queue_lock, flags);
534  if (list_empty(&master->queue) || !master->running) {
535  if (master->busy && master->unprepare_transfer_hardware) {
536  ret = master->unprepare_transfer_hardware(master);
537  if (ret) {
538  spin_unlock_irqrestore(&master->queue_lock, flags);
539  dev_err(&master->dev,
540  "failed to unprepare transfer hardware\n");
541  return;
542  }
543  }
544  master->busy = false;
545  spin_unlock_irqrestore(&master->queue_lock, flags);
546  return;
547  }
548 
549  /* Make sure we are not already running a message */
550  if (master->cur_msg) {
551  spin_unlock_irqrestore(&master->queue_lock, flags);
552  return;
553  }
554  /* Extract head of queue */
555  master->cur_msg =
556  list_entry(master->queue.next, struct spi_message, queue);
557 
558  list_del_init(&master->cur_msg->queue);
559  if (master->busy)
560  was_busy = true;
561  else
562  master->busy = true;
563  spin_unlock_irqrestore(&master->queue_lock, flags);
564 
565  if (!was_busy && master->prepare_transfer_hardware) {
566  ret = master->prepare_transfer_hardware(master);
567  if (ret) {
568  dev_err(&master->dev,
569  "failed to prepare transfer hardware\n");
570  return;
571  }
572  }
573 
574  ret = master->transfer_one_message(master, master->cur_msg);
575  if (ret) {
576  dev_err(&master->dev,
577  "failed to transfer one message from queue\n");
578  return;
579  }
580 }
581 
582 static int spi_init_queue(struct spi_master *master)
583 {
584  struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 };
585 
586  INIT_LIST_HEAD(&master->queue);
587  spin_lock_init(&master->queue_lock);
588 
589  master->running = false;
590  master->busy = false;
591 
592  init_kthread_worker(&master->kworker);
594  &master->kworker,
595  dev_name(&master->dev));
596  if (IS_ERR(master->kworker_task)) {
597  dev_err(&master->dev, "failed to create message pump task\n");
598  return -ENOMEM;
599  }
600  init_kthread_work(&master->pump_messages, spi_pump_messages);
601 
602  /*
603  * Master config will indicate if this controller should run the
604  * message pump with high (realtime) priority to reduce the transfer
605  * latency on the bus by minimising the delay between a transfer
606  * request and the scheduling of the message pump thread. Without this
607  * setting the message pump thread will remain at default priority.
608  */
609  if (master->rt) {
610  dev_info(&master->dev,
611  "will run message pump with realtime priority\n");
612  sched_setscheduler(master->kworker_task, SCHED_FIFO, &param);
613  }
614 
615  return 0;
616 }
617 
627 {
628  struct spi_message *next;
629  unsigned long flags;
630 
631  /* get a pointer to the next message, if any */
632  spin_lock_irqsave(&master->queue_lock, flags);
633  if (list_empty(&master->queue))
634  next = NULL;
635  else
636  next = list_entry(master->queue.next,
637  struct spi_message, queue);
638  spin_unlock_irqrestore(&master->queue_lock, flags);
639 
640  return next;
641 }
643 
652 {
653  struct spi_message *mesg;
654  unsigned long flags;
655 
656  spin_lock_irqsave(&master->queue_lock, flags);
657  mesg = master->cur_msg;
658  master->cur_msg = NULL;
659 
660  queue_kthread_work(&master->kworker, &master->pump_messages);
661  spin_unlock_irqrestore(&master->queue_lock, flags);
662 
663  mesg->state = NULL;
664  if (mesg->complete)
665  mesg->complete(mesg->context);
666 }
668 
669 static int spi_start_queue(struct spi_master *master)
670 {
671  unsigned long flags;
672 
673  spin_lock_irqsave(&master->queue_lock, flags);
674 
675  if (master->running || master->busy) {
676  spin_unlock_irqrestore(&master->queue_lock, flags);
677  return -EBUSY;
678  }
679 
680  master->running = true;
681  master->cur_msg = NULL;
682  spin_unlock_irqrestore(&master->queue_lock, flags);
683 
684  queue_kthread_work(&master->kworker, &master->pump_messages);
685 
686  return 0;
687 }
688 
689 static int spi_stop_queue(struct spi_master *master)
690 {
691  unsigned long flags;
692  unsigned limit = 500;
693  int ret = 0;
694 
695  spin_lock_irqsave(&master->queue_lock, flags);
696 
697  /*
698  * This is a bit lame, but is optimized for the common execution path.
699  * A wait_queue on the master->busy could be used, but then the common
700  * execution path (pump_messages) would be required to call wake_up or
701  * friends on every SPI message. Do this instead.
702  */
703  while ((!list_empty(&master->queue) || master->busy) && limit--) {
704  spin_unlock_irqrestore(&master->queue_lock, flags);
705  msleep(10);
706  spin_lock_irqsave(&master->queue_lock, flags);
707  }
708 
709  if (!list_empty(&master->queue) || master->busy)
710  ret = -EBUSY;
711  else
712  master->running = false;
713 
714  spin_unlock_irqrestore(&master->queue_lock, flags);
715 
716  if (ret) {
717  dev_warn(&master->dev,
718  "could not stop message queue\n");
719  return ret;
720  }
721  return ret;
722 }
723 
724 static int spi_destroy_queue(struct spi_master *master)
725 {
726  int ret;
727 
728  ret = spi_stop_queue(master);
729 
730  /*
731  * flush_kthread_worker will block until all work is done.
732  * If the reason that stop_queue timed out is that the work will never
733  * finish, then it does no good to call flush/stop thread, so
734  * return anyway.
735  */
736  if (ret) {
737  dev_err(&master->dev, "problem destroying queue\n");
738  return ret;
739  }
740 
741  flush_kthread_worker(&master->kworker);
742  kthread_stop(master->kworker_task);
743 
744  return 0;
745 }
746 
752 static int spi_queued_transfer(struct spi_device *spi, struct spi_message *msg)
753 {
754  struct spi_master *master = spi->master;
755  unsigned long flags;
756 
757  spin_lock_irqsave(&master->queue_lock, flags);
758 
759  if (!master->running) {
760  spin_unlock_irqrestore(&master->queue_lock, flags);
761  return -ESHUTDOWN;
762  }
763  msg->actual_length = 0;
764  msg->status = -EINPROGRESS;
765 
766  list_add_tail(&msg->queue, &master->queue);
767  if (master->running && !master->busy)
768  queue_kthread_work(&master->kworker, &master->pump_messages);
769 
770  spin_unlock_irqrestore(&master->queue_lock, flags);
771  return 0;
772 }
773 
774 static int spi_master_initialize_queue(struct spi_master *master)
775 {
776  int ret;
777 
778  master->queued = true;
779  master->transfer = spi_queued_transfer;
780 
781  /* Initialize and start queue */
782  ret = spi_init_queue(master);
783  if (ret) {
784  dev_err(&master->dev, "problem initializing queue\n");
785  goto err_init_queue;
786  }
787  ret = spi_start_queue(master);
788  if (ret) {
789  dev_err(&master->dev, "problem starting queue\n");
790  goto err_start_queue;
791  }
792 
793  return 0;
794 
795 err_start_queue:
796 err_init_queue:
797  spi_destroy_queue(master);
798  return ret;
799 }
800 
801 /*-------------------------------------------------------------------------*/
802 
803 #if defined(CONFIG_OF) && !defined(CONFIG_SPARC)
804 
811 static void of_register_spi_devices(struct spi_master *master)
812 {
813  struct spi_device *spi;
814  struct device_node *nc;
815  const __be32 *prop;
816  int rc;
817  int len;
818 
819  if (!master->dev.of_node)
820  return;
821 
822  for_each_child_of_node(master->dev.of_node, nc) {
823  /* Alloc an spi_device */
824  spi = spi_alloc_device(master);
825  if (!spi) {
826  dev_err(&master->dev, "spi_device alloc error for %s\n",
827  nc->full_name);
828  spi_dev_put(spi);
829  continue;
830  }
831 
832  /* Select device driver */
833  if (of_modalias_node(nc, spi->modalias,
834  sizeof(spi->modalias)) < 0) {
835  dev_err(&master->dev, "cannot find modalias for %s\n",
836  nc->full_name);
837  spi_dev_put(spi);
838  continue;
839  }
840 
841  /* Device address */
842  prop = of_get_property(nc, "reg", &len);
843  if (!prop || len < sizeof(*prop)) {
844  dev_err(&master->dev, "%s has no 'reg' property\n",
845  nc->full_name);
846  spi_dev_put(spi);
847  continue;
848  }
849  spi->chip_select = be32_to_cpup(prop);
850 
851  /* Mode (clock phase/polarity/etc.) */
852  if (of_find_property(nc, "spi-cpha", NULL))
853  spi->mode |= SPI_CPHA;
854  if (of_find_property(nc, "spi-cpol", NULL))
855  spi->mode |= SPI_CPOL;
856  if (of_find_property(nc, "spi-cs-high", NULL))
857  spi->mode |= SPI_CS_HIGH;
858 
859  /* Device speed */
860  prop = of_get_property(nc, "spi-max-frequency", &len);
861  if (!prop || len < sizeof(*prop)) {
862  dev_err(&master->dev, "%s has no 'spi-max-frequency' property\n",
863  nc->full_name);
864  spi_dev_put(spi);
865  continue;
866  }
867  spi->max_speed_hz = be32_to_cpup(prop);
868 
869  /* IRQ */
870  spi->irq = irq_of_parse_and_map(nc, 0);
871 
872  /* Store a pointer to the node in the device structure */
873  of_node_get(nc);
874  spi->dev.of_node = nc;
875 
876  /* Register the new device */
877  request_module(spi->modalias);
878  rc = spi_add_device(spi);
879  if (rc) {
880  dev_err(&master->dev, "spi_device register error %s\n",
881  nc->full_name);
882  spi_dev_put(spi);
883  }
884 
885  }
886 }
887 #else
888 static void of_register_spi_devices(struct spi_master *master) { }
889 #endif
890 
891 static void spi_master_release(struct device *dev)
892 {
893  struct spi_master *master;
894 
895  master = container_of(dev, struct spi_master, dev);
896  kfree(master);
897 }
898 
899 static struct class spi_master_class = {
900  .name = "spi_master",
901  .owner = THIS_MODULE,
902  .dev_release = spi_master_release,
903 };
904 
905 
906 
927 struct spi_master *spi_alloc_master(struct device *dev, unsigned size)
928 {
929  struct spi_master *master;
930 
931  if (!dev)
932  return NULL;
933 
934  master = kzalloc(size + sizeof *master, GFP_KERNEL);
935  if (!master)
936  return NULL;
937 
938  device_initialize(&master->dev);
939  master->bus_num = -1;
940  master->num_chipselect = 1;
941  master->dev.class = &spi_master_class;
942  master->dev.parent = get_device(dev);
943  spi_master_set_devdata(master, &master[1]);
944 
945  return master;
946 }
948 
969 int spi_register_master(struct spi_master *master)
970 {
971  static atomic_t dyn_bus_id = ATOMIC_INIT((1<<15) - 1);
972  struct device *dev = master->dev.parent;
973  struct boardinfo *bi;
974  int status = -ENODEV;
975  int dynamic = 0;
976 
977  if (!dev)
978  return -ENODEV;
979 
980  /* even if it's just one always-selected device, there must
981  * be at least one chipselect
982  */
983  if (master->num_chipselect == 0)
984  return -EINVAL;
985 
986  /* convention: dynamically assigned bus IDs count down from the max */
987  if (master->bus_num < 0) {
988  /* FIXME switch to an IDR based scheme, something like
989  * I2C now uses, so we can't run out of "dynamic" IDs
990  */
991  master->bus_num = atomic_dec_return(&dyn_bus_id);
992  dynamic = 1;
993  }
994 
996  mutex_init(&master->bus_lock_mutex);
997  master->bus_lock_flag = 0;
998 
999  /* register the device, then userspace will see it.
1000  * registration fails if the bus ID is in use.
1001  */
1002  dev_set_name(&master->dev, "spi%u", master->bus_num);
1003  status = device_add(&master->dev);
1004  if (status < 0)
1005  goto done;
1006  dev_dbg(dev, "registered master %s%s\n", dev_name(&master->dev),
1007  dynamic ? " (dynamic)" : "");
1008 
1009  /* If we're using a queued driver, start the queue */
1010  if (master->transfer)
1011  dev_info(dev, "master is unqueued, this is deprecated\n");
1012  else {
1013  status = spi_master_initialize_queue(master);
1014  if (status) {
1015  device_unregister(&master->dev);
1016  goto done;
1017  }
1018  }
1019 
1020  mutex_lock(&board_lock);
1021  list_add_tail(&master->list, &spi_master_list);
1022  list_for_each_entry(bi, &board_list, list)
1023  spi_match_master_to_boardinfo(master, &bi->board_info);
1024  mutex_unlock(&board_lock);
1025 
1026  /* Register devices from the device tree */
1027  of_register_spi_devices(master);
1028 done:
1029  return status;
1030 }
1032 
1033 static int __unregister(struct device *dev, void *null)
1034 {
1035  spi_unregister_device(to_spi_device(dev));
1036  return 0;
1037 }
1038 
1049 void spi_unregister_master(struct spi_master *master)
1050 {
1051  int dummy;
1052 
1053  if (master->queued) {
1054  if (spi_destroy_queue(master))
1055  dev_err(&master->dev, "queue remove failed\n");
1056  }
1057 
1058  mutex_lock(&board_lock);
1059  list_del(&master->list);
1060  mutex_unlock(&board_lock);
1061 
1062  dummy = device_for_each_child(&master->dev, NULL, __unregister);
1063  device_unregister(&master->dev);
1064 }
1066 
1067 int spi_master_suspend(struct spi_master *master)
1068 {
1069  int ret;
1070 
1071  /* Basically no-ops for non-queued masters */
1072  if (!master->queued)
1073  return 0;
1074 
1075  ret = spi_stop_queue(master);
1076  if (ret)
1077  dev_err(&master->dev, "queue stop failed\n");
1078 
1079  return ret;
1080 }
1082 
1083 int spi_master_resume(struct spi_master *master)
1084 {
1085  int ret;
1086 
1087  if (!master->queued)
1088  return 0;
1089 
1090  ret = spi_start_queue(master);
1091  if (ret)
1092  dev_err(&master->dev, "queue restart failed\n");
1093 
1094  return ret;
1095 }
1097 
1098 static int __spi_master_match(struct device *dev, void *data)
1099 {
1100  struct spi_master *m;
1101  u16 *bus_num = data;
1102 
1103  m = container_of(dev, struct spi_master, dev);
1104  return m->bus_num == *bus_num;
1105 }
1106 
1118 {
1119  struct device *dev;
1120  struct spi_master *master = NULL;
1121 
1122  dev = class_find_device(&spi_master_class, NULL, &bus_num,
1123  __spi_master_match);
1124  if (dev)
1125  master = container_of(dev, struct spi_master, dev);
1126  /* reference got in class_find_device */
1127  return master;
1128 }
1130 
1131 
1132 /*-------------------------------------------------------------------------*/
1133 
1134 /* Core methods for SPI master protocol drivers. Some of the
1135  * other core methods are currently defined as inline functions.
1136  */
1137 
1156 int spi_setup(struct spi_device *spi)
1157 {
1158  unsigned bad_bits;
1159  int status;
1160 
1161  /* help drivers fail *cleanly* when they need options
1162  * that aren't supported with their current master
1163  */
1164  bad_bits = spi->mode & ~spi->master->mode_bits;
1165  if (bad_bits) {
1166  dev_err(&spi->dev, "setup: unsupported mode bits %x\n",
1167  bad_bits);
1168  return -EINVAL;
1169  }
1170 
1171  if (!spi->bits_per_word)
1172  spi->bits_per_word = 8;
1173 
1174  status = spi->master->setup(spi);
1175 
1176  dev_dbg(&spi->dev, "setup mode %d, %s%s%s%s"
1177  "%u bits/w, %u Hz max --> %d\n",
1178  (int) (spi->mode & (SPI_CPOL | SPI_CPHA)),
1179  (spi->mode & SPI_CS_HIGH) ? "cs_high, " : "",
1180  (spi->mode & SPI_LSB_FIRST) ? "lsb, " : "",
1181  (spi->mode & SPI_3WIRE) ? "3wire, " : "",
1182  (spi->mode & SPI_LOOP) ? "loopback, " : "",
1183  spi->bits_per_word, spi->max_speed_hz,
1184  status);
1185 
1186  return status;
1187 }
1189 
1190 static int __spi_async(struct spi_device *spi, struct spi_message *message)
1191 {
1192  struct spi_master *master = spi->master;
1193 
1194  /* Half-duplex links include original MicroWire, and ones with
1195  * only one data pin like SPI_3WIRE (switches direction) or where
1196  * either MOSI or MISO is missing. They can also be caused by
1197  * software limitations.
1198  */
1199  if ((master->flags & SPI_MASTER_HALF_DUPLEX)
1200  || (spi->mode & SPI_3WIRE)) {
1201  struct spi_transfer *xfer;
1202  unsigned flags = master->flags;
1203 
1204  list_for_each_entry(xfer, &message->transfers, transfer_list) {
1205  if (xfer->rx_buf && xfer->tx_buf)
1206  return -EINVAL;
1207  if ((flags & SPI_MASTER_NO_TX) && xfer->tx_buf)
1208  return -EINVAL;
1209  if ((flags & SPI_MASTER_NO_RX) && xfer->rx_buf)
1210  return -EINVAL;
1211  }
1212  }
1213 
1214  message->spi = spi;
1215  message->status = -EINPROGRESS;
1216  return master->transfer(spi, message);
1217 }
1218 
1248 int spi_async(struct spi_device *spi, struct spi_message *message)
1249 {
1250  struct spi_master *master = spi->master;
1251  int ret;
1252  unsigned long flags;
1253 
1254  spin_lock_irqsave(&master->bus_lock_spinlock, flags);
1255 
1256  if (master->bus_lock_flag)
1257  ret = -EBUSY;
1258  else
1259  ret = __spi_async(spi, message);
1260 
1261  spin_unlock_irqrestore(&master->bus_lock_spinlock, flags);
1262 
1263  return ret;
1264 }
1266 
1296 int spi_async_locked(struct spi_device *spi, struct spi_message *message)
1297 {
1298  struct spi_master *master = spi->master;
1299  int ret;
1300  unsigned long flags;
1301 
1302  spin_lock_irqsave(&master->bus_lock_spinlock, flags);
1303 
1304  ret = __spi_async(spi, message);
1305 
1306  spin_unlock_irqrestore(&master->bus_lock_spinlock, flags);
1307 
1308  return ret;
1309 
1310 }
1312 
1313 
1314 /*-------------------------------------------------------------------------*/
1315 
1316 /* Utility methods for SPI master protocol drivers, layered on
1317  * top of the core. Some other utility methods are defined as
1318  * inline functions.
1319  */
1320 
1321 static void spi_complete(void *arg)
1322 {
1323  complete(arg);
1324 }
1325 
1326 static int __spi_sync(struct spi_device *spi, struct spi_message *message,
1327  int bus_locked)
1328 {
1330  int status;
1331  struct spi_master *master = spi->master;
1332 
1333  message->complete = spi_complete;
1334  message->context = &done;
1335 
1336  if (!bus_locked)
1337  mutex_lock(&master->bus_lock_mutex);
1338 
1339  status = spi_async_locked(spi, message);
1340 
1341  if (!bus_locked)
1342  mutex_unlock(&master->bus_lock_mutex);
1343 
1344  if (status == 0) {
1346  status = message->status;
1347  }
1348  message->context = NULL;
1349  return status;
1350 }
1351 
1373 int spi_sync(struct spi_device *spi, struct spi_message *message)
1374 {
1375  return __spi_sync(spi, message, 0);
1376 }
1378 
1395 int spi_sync_locked(struct spi_device *spi, struct spi_message *message)
1396 {
1397  return __spi_sync(spi, message, 1);
1398 }
1400 
1416 int spi_bus_lock(struct spi_master *master)
1417 {
1418  unsigned long flags;
1419 
1420  mutex_lock(&master->bus_lock_mutex);
1421 
1422  spin_lock_irqsave(&master->bus_lock_spinlock, flags);
1423  master->bus_lock_flag = 1;
1424  spin_unlock_irqrestore(&master->bus_lock_spinlock, flags);
1425 
1426  /* mutex remains locked until spi_bus_unlock is called */
1427 
1428  return 0;
1429 }
1431 
1445 int spi_bus_unlock(struct spi_master *master)
1446 {
1447  master->bus_lock_flag = 0;
1448 
1449  mutex_unlock(&master->bus_lock_mutex);
1450 
1451  return 0;
1452 }
1454 
1455 /* portable code must never pass more than 32 bytes */
1456 #define SPI_BUFSIZ max(32,SMP_CACHE_BYTES)
1457 
1458 static u8 *buf;
1459 
1480  const void *txbuf, unsigned n_tx,
1481  void *rxbuf, unsigned n_rx)
1482 {
1483  static DEFINE_MUTEX(lock);
1484 
1485  int status;
1486  struct spi_message message;
1487  struct spi_transfer x[2];
1488  u8 *local_buf;
1489 
1490  /* Use preallocated DMA-safe buffer. We can't avoid copying here,
1491  * (as a pure convenience thing), but we can keep heap costs
1492  * out of the hot path ...
1493  */
1494  if ((n_tx + n_rx) > SPI_BUFSIZ)
1495  return -EINVAL;
1496 
1497  spi_message_init(&message);
1498  memset(x, 0, sizeof x);
1499  if (n_tx) {
1500  x[0].len = n_tx;
1501  spi_message_add_tail(&x[0], &message);
1502  }
1503  if (n_rx) {
1504  x[1].len = n_rx;
1505  spi_message_add_tail(&x[1], &message);
1506  }
1507 
1508  /* ... unless someone else is using the pre-allocated buffer */
1509  if (!mutex_trylock(&lock)) {
1510  local_buf = kmalloc(SPI_BUFSIZ, GFP_KERNEL);
1511  if (!local_buf)
1512  return -ENOMEM;
1513  } else
1514  local_buf = buf;
1515 
1516  memcpy(local_buf, txbuf, n_tx);
1517  x[0].tx_buf = local_buf;
1518  x[1].rx_buf = local_buf + n_tx;
1519 
1520  /* do the i/o */
1521  status = spi_sync(spi, &message);
1522  if (status == 0)
1523  memcpy(rxbuf, x[1].rx_buf, n_rx);
1524 
1525  if (x[0].tx_buf == buf)
1526  mutex_unlock(&lock);
1527  else
1528  kfree(local_buf);
1529 
1530  return status;
1531 }
1533 
1534 /*-------------------------------------------------------------------------*/
1535 
1536 static int __init spi_init(void)
1537 {
1538  int status;
1539 
1540  buf = kmalloc(SPI_BUFSIZ, GFP_KERNEL);
1541  if (!buf) {
1542  status = -ENOMEM;
1543  goto err0;
1544  }
1545 
1546  status = bus_register(&spi_bus_type);
1547  if (status < 0)
1548  goto err1;
1549 
1550  status = class_register(&spi_master_class);
1551  if (status < 0)
1552  goto err2;
1553  return 0;
1554 
1555 err2:
1556  bus_unregister(&spi_bus_type);
1557 err1:
1558  kfree(buf);
1559  buf = NULL;
1560 err0:
1561  return status;
1562 }
1563 
1564 /* board_info is normally registered in arch_initcall(),
1565  * but even essential drivers wait till later
1566  *
1567  * REVISIT only boardinfo really needs static linking. the rest (device and
1568  * driver registration) _could_ be dynamically linked (modular) ... costs
1569  * include needing to have boardinfo data structures be much more public.
1570  */
1571 postcore_initcall(spi_init);
1572