Merge remote-tracking branch 'spi/topic/core' into spi-next
[cascardo/linux.git] / drivers / spi / spi.c
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/of_gpio.h>
34 #include <linux/pm_runtime.h>
35 #include <linux/export.h>
36 #include <linux/sched/rt.h>
37 #include <linux/delay.h>
38 #include <linux/kthread.h>
39 #include <linux/ioport.h>
40 #include <linux/acpi.h>
41
42 #define CREATE_TRACE_POINTS
43 #include <trace/events/spi.h>
44
45 static void spidev_release(struct device *dev)
46 {
47         struct spi_device       *spi = to_spi_device(dev);
48
49         /* spi masters may cleanup for released devices */
50         if (spi->master->cleanup)
51                 spi->master->cleanup(spi);
52
53         spi_master_put(spi->master);
54         kfree(spi);
55 }
56
57 static ssize_t
58 modalias_show(struct device *dev, struct device_attribute *a, char *buf)
59 {
60         const struct spi_device *spi = to_spi_device(dev);
61         int len;
62
63         len = acpi_device_modalias(dev, buf, PAGE_SIZE - 1);
64         if (len != -ENODEV)
65                 return len;
66
67         return sprintf(buf, "%s%s\n", SPI_MODULE_PREFIX, spi->modalias);
68 }
69 static DEVICE_ATTR_RO(modalias);
70
71 static struct attribute *spi_dev_attrs[] = {
72         &dev_attr_modalias.attr,
73         NULL,
74 };
75 ATTRIBUTE_GROUPS(spi_dev);
76
77 /* modalias support makes "modprobe $MODALIAS" new-style hotplug work,
78  * and the sysfs version makes coldplug work too.
79  */
80
81 static const struct spi_device_id *spi_match_id(const struct spi_device_id *id,
82                                                 const struct spi_device *sdev)
83 {
84         while (id->name[0]) {
85                 if (!strcmp(sdev->modalias, id->name))
86                         return id;
87                 id++;
88         }
89         return NULL;
90 }
91
92 const struct spi_device_id *spi_get_device_id(const struct spi_device *sdev)
93 {
94         const struct spi_driver *sdrv = to_spi_driver(sdev->dev.driver);
95
96         return spi_match_id(sdrv->id_table, sdev);
97 }
98 EXPORT_SYMBOL_GPL(spi_get_device_id);
99
100 static int spi_match_device(struct device *dev, struct device_driver *drv)
101 {
102         const struct spi_device *spi = to_spi_device(dev);
103         const struct spi_driver *sdrv = to_spi_driver(drv);
104
105         /* Attempt an OF style match */
106         if (of_driver_match_device(dev, drv))
107                 return 1;
108
109         /* Then try ACPI */
110         if (acpi_driver_match_device(dev, drv))
111                 return 1;
112
113         if (sdrv->id_table)
114                 return !!spi_match_id(sdrv->id_table, spi);
115
116         return strcmp(spi->modalias, drv->name) == 0;
117 }
118
119 static int spi_uevent(struct device *dev, struct kobj_uevent_env *env)
120 {
121         const struct spi_device         *spi = to_spi_device(dev);
122         int rc;
123
124         rc = acpi_device_uevent_modalias(dev, env);
125         if (rc != -ENODEV)
126                 return rc;
127
128         add_uevent_var(env, "MODALIAS=%s%s", SPI_MODULE_PREFIX, spi->modalias);
129         return 0;
130 }
131
132 #ifdef CONFIG_PM_SLEEP
133 static int spi_legacy_suspend(struct device *dev, pm_message_t message)
134 {
135         int                     value = 0;
136         struct spi_driver       *drv = to_spi_driver(dev->driver);
137
138         /* suspend will stop irqs and dma; no more i/o */
139         if (drv) {
140                 if (drv->suspend)
141                         value = drv->suspend(to_spi_device(dev), message);
142                 else
143                         dev_dbg(dev, "... can't suspend\n");
144         }
145         return value;
146 }
147
148 static int spi_legacy_resume(struct device *dev)
149 {
150         int                     value = 0;
151         struct spi_driver       *drv = to_spi_driver(dev->driver);
152
153         /* resume may restart the i/o queue */
154         if (drv) {
155                 if (drv->resume)
156                         value = drv->resume(to_spi_device(dev));
157                 else
158                         dev_dbg(dev, "... can't resume\n");
159         }
160         return value;
161 }
162
163 static int spi_pm_suspend(struct device *dev)
164 {
165         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
166
167         if (pm)
168                 return pm_generic_suspend(dev);
169         else
170                 return spi_legacy_suspend(dev, PMSG_SUSPEND);
171 }
172
173 static int spi_pm_resume(struct device *dev)
174 {
175         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
176
177         if (pm)
178                 return pm_generic_resume(dev);
179         else
180                 return spi_legacy_resume(dev);
181 }
182
183 static int spi_pm_freeze(struct device *dev)
184 {
185         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
186
187         if (pm)
188                 return pm_generic_freeze(dev);
189         else
190                 return spi_legacy_suspend(dev, PMSG_FREEZE);
191 }
192
193 static int spi_pm_thaw(struct device *dev)
194 {
195         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
196
197         if (pm)
198                 return pm_generic_thaw(dev);
199         else
200                 return spi_legacy_resume(dev);
201 }
202
203 static int spi_pm_poweroff(struct device *dev)
204 {
205         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
206
207         if (pm)
208                 return pm_generic_poweroff(dev);
209         else
210                 return spi_legacy_suspend(dev, PMSG_HIBERNATE);
211 }
212
213 static int spi_pm_restore(struct device *dev)
214 {
215         const struct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
216
217         if (pm)
218                 return pm_generic_restore(dev);
219         else
220                 return spi_legacy_resume(dev);
221 }
222 #else
223 #define spi_pm_suspend  NULL
224 #define spi_pm_resume   NULL
225 #define spi_pm_freeze   NULL
226 #define spi_pm_thaw     NULL
227 #define spi_pm_poweroff NULL
228 #define spi_pm_restore  NULL
229 #endif
230
231 static const struct dev_pm_ops spi_pm = {
232         .suspend = spi_pm_suspend,
233         .resume = spi_pm_resume,
234         .freeze = spi_pm_freeze,
235         .thaw = spi_pm_thaw,
236         .poweroff = spi_pm_poweroff,
237         .restore = spi_pm_restore,
238         SET_RUNTIME_PM_OPS(
239                 pm_generic_runtime_suspend,
240                 pm_generic_runtime_resume,
241                 NULL
242         )
243 };
244
245 struct bus_type spi_bus_type = {
246         .name           = "spi",
247         .dev_groups     = spi_dev_groups,
248         .match          = spi_match_device,
249         .uevent         = spi_uevent,
250         .pm             = &spi_pm,
251 };
252 EXPORT_SYMBOL_GPL(spi_bus_type);
253
254
255 static int spi_drv_probe(struct device *dev)
256 {
257         const struct spi_driver         *sdrv = to_spi_driver(dev->driver);
258         int ret;
259
260         acpi_dev_pm_attach(dev, true);
261         ret = sdrv->probe(to_spi_device(dev));
262         if (ret)
263                 acpi_dev_pm_detach(dev, true);
264
265         return ret;
266 }
267
268 static int spi_drv_remove(struct device *dev)
269 {
270         const struct spi_driver         *sdrv = to_spi_driver(dev->driver);
271         int ret;
272
273         ret = sdrv->remove(to_spi_device(dev));
274         acpi_dev_pm_detach(dev, true);
275
276         return ret;
277 }
278
279 static void spi_drv_shutdown(struct device *dev)
280 {
281         const struct spi_driver         *sdrv = to_spi_driver(dev->driver);
282
283         sdrv->shutdown(to_spi_device(dev));
284 }
285
286 /**
287  * spi_register_driver - register a SPI driver
288  * @sdrv: the driver to register
289  * Context: can sleep
290  */
291 int spi_register_driver(struct spi_driver *sdrv)
292 {
293         sdrv->driver.bus = &spi_bus_type;
294         if (sdrv->probe)
295                 sdrv->driver.probe = spi_drv_probe;
296         if (sdrv->remove)
297                 sdrv->driver.remove = spi_drv_remove;
298         if (sdrv->shutdown)
299                 sdrv->driver.shutdown = spi_drv_shutdown;
300         return driver_register(&sdrv->driver);
301 }
302 EXPORT_SYMBOL_GPL(spi_register_driver);
303
304 /*-------------------------------------------------------------------------*/
305
306 /* SPI devices should normally not be created by SPI device drivers; that
307  * would make them board-specific.  Similarly with SPI master drivers.
308  * Device registration normally goes into like arch/.../mach.../board-YYY.c
309  * with other readonly (flashable) information about mainboard devices.
310  */
311
312 struct boardinfo {
313         struct list_head        list;
314         struct spi_board_info   board_info;
315 };
316
317 static LIST_HEAD(board_list);
318 static LIST_HEAD(spi_master_list);
319
320 /*
321  * Used to protect add/del opertion for board_info list and
322  * spi_master list, and their matching process
323  */
324 static DEFINE_MUTEX(board_lock);
325
326 /**
327  * spi_alloc_device - Allocate a new SPI device
328  * @master: Controller to which device is connected
329  * Context: can sleep
330  *
331  * Allows a driver to allocate and initialize a spi_device without
332  * registering it immediately.  This allows a driver to directly
333  * fill the spi_device with device parameters before calling
334  * spi_add_device() on it.
335  *
336  * Caller is responsible to call spi_add_device() on the returned
337  * spi_device structure to add it to the SPI master.  If the caller
338  * needs to discard the spi_device without adding it, then it should
339  * call spi_dev_put() on it.
340  *
341  * Returns a pointer to the new device, or NULL.
342  */
343 struct spi_device *spi_alloc_device(struct spi_master *master)
344 {
345         struct spi_device       *spi;
346         struct device           *dev = master->dev.parent;
347
348         if (!spi_master_get(master))
349                 return NULL;
350
351         spi = kzalloc(sizeof(*spi), GFP_KERNEL);
352         if (!spi) {
353                 dev_err(dev, "cannot alloc spi_device\n");
354                 spi_master_put(master);
355                 return NULL;
356         }
357
358         spi->master = master;
359         spi->dev.parent = &master->dev;
360         spi->dev.bus = &spi_bus_type;
361         spi->dev.release = spidev_release;
362         spi->cs_gpio = -ENOENT;
363         device_initialize(&spi->dev);
364         return spi;
365 }
366 EXPORT_SYMBOL_GPL(spi_alloc_device);
367
368 static void spi_dev_set_name(struct spi_device *spi)
369 {
370         struct acpi_device *adev = ACPI_COMPANION(&spi->dev);
371
372         if (adev) {
373                 dev_set_name(&spi->dev, "spi-%s", acpi_dev_name(adev));
374                 return;
375         }
376
377         dev_set_name(&spi->dev, "%s.%u", dev_name(&spi->master->dev),
378                      spi->chip_select);
379 }
380
381 static int spi_dev_check(struct device *dev, void *data)
382 {
383         struct spi_device *spi = to_spi_device(dev);
384         struct spi_device *new_spi = data;
385
386         if (spi->master == new_spi->master &&
387             spi->chip_select == new_spi->chip_select)
388                 return -EBUSY;
389         return 0;
390 }
391
392 /**
393  * spi_add_device - Add spi_device allocated with spi_alloc_device
394  * @spi: spi_device to register
395  *
396  * Companion function to spi_alloc_device.  Devices allocated with
397  * spi_alloc_device can be added onto the spi bus with this function.
398  *
399  * Returns 0 on success; negative errno on failure
400  */
401 int spi_add_device(struct spi_device *spi)
402 {
403         static DEFINE_MUTEX(spi_add_lock);
404         struct spi_master *master = spi->master;
405         struct device *dev = master->dev.parent;
406         int status;
407
408         /* Chipselects are numbered 0..max; validate. */
409         if (spi->chip_select >= master->num_chipselect) {
410                 dev_err(dev, "cs%d >= max %d\n",
411                         spi->chip_select,
412                         master->num_chipselect);
413                 return -EINVAL;
414         }
415
416         /* Set the bus ID string */
417         spi_dev_set_name(spi);
418
419         /* We need to make sure there's no other device with this
420          * chipselect **BEFORE** we call setup(), else we'll trash
421          * its configuration.  Lock against concurrent add() calls.
422          */
423         mutex_lock(&spi_add_lock);
424
425         status = bus_for_each_dev(&spi_bus_type, NULL, spi, spi_dev_check);
426         if (status) {
427                 dev_err(dev, "chipselect %d already in use\n",
428                                 spi->chip_select);
429                 goto done;
430         }
431
432         if (master->cs_gpios)
433                 spi->cs_gpio = master->cs_gpios[spi->chip_select];
434
435         /* Drivers may modify this initial i/o setup, but will
436          * normally rely on the device being setup.  Devices
437          * using SPI_CS_HIGH can't coexist well otherwise...
438          */
439         status = spi_setup(spi);
440         if (status < 0) {
441                 dev_err(dev, "can't setup %s, status %d\n",
442                                 dev_name(&spi->dev), status);
443                 goto done;
444         }
445
446         /* Device may be bound to an active driver when this returns */
447         status = device_add(&spi->dev);
448         if (status < 0)
449                 dev_err(dev, "can't add %s, status %d\n",
450                                 dev_name(&spi->dev), status);
451         else
452                 dev_dbg(dev, "registered child %s\n", dev_name(&spi->dev));
453
454 done:
455         mutex_unlock(&spi_add_lock);
456         return status;
457 }
458 EXPORT_SYMBOL_GPL(spi_add_device);
459
460 /**
461  * spi_new_device - instantiate one new SPI device
462  * @master: Controller to which device is connected
463  * @chip: Describes the SPI device
464  * Context: can sleep
465  *
466  * On typical mainboards, this is purely internal; and it's not needed
467  * after board init creates the hard-wired devices.  Some development
468  * platforms may not be able to use spi_register_board_info though, and
469  * this is exported so that for example a USB or parport based adapter
470  * driver could add devices (which it would learn about out-of-band).
471  *
472  * Returns the new device, or NULL.
473  */
474 struct spi_device *spi_new_device(struct spi_master *master,
475                                   struct spi_board_info *chip)
476 {
477         struct spi_device       *proxy;
478         int                     status;
479
480         /* NOTE:  caller did any chip->bus_num checks necessary.
481          *
482          * Also, unless we change the return value convention to use
483          * error-or-pointer (not NULL-or-pointer), troubleshootability
484          * suggests syslogged diagnostics are best here (ugh).
485          */
486
487         proxy = spi_alloc_device(master);
488         if (!proxy)
489                 return NULL;
490
491         WARN_ON(strlen(chip->modalias) >= sizeof(proxy->modalias));
492
493         proxy->chip_select = chip->chip_select;
494         proxy->max_speed_hz = chip->max_speed_hz;
495         proxy->mode = chip->mode;
496         proxy->irq = chip->irq;
497         strlcpy(proxy->modalias, chip->modalias, sizeof(proxy->modalias));
498         proxy->dev.platform_data = (void *) chip->platform_data;
499         proxy->controller_data = chip->controller_data;
500         proxy->controller_state = NULL;
501
502         status = spi_add_device(proxy);
503         if (status < 0) {
504                 spi_dev_put(proxy);
505                 return NULL;
506         }
507
508         return proxy;
509 }
510 EXPORT_SYMBOL_GPL(spi_new_device);
511
512 static void spi_match_master_to_boardinfo(struct spi_master *master,
513                                 struct spi_board_info *bi)
514 {
515         struct spi_device *dev;
516
517         if (master->bus_num != bi->bus_num)
518                 return;
519
520         dev = spi_new_device(master, bi);
521         if (!dev)
522                 dev_err(master->dev.parent, "can't create new device for %s\n",
523                         bi->modalias);
524 }
525
526 /**
527  * spi_register_board_info - register SPI devices for a given board
528  * @info: array of chip descriptors
529  * @n: how many descriptors are provided
530  * Context: can sleep
531  *
532  * Board-specific early init code calls this (probably during arch_initcall)
533  * with segments of the SPI device table.  Any device nodes are created later,
534  * after the relevant parent SPI controller (bus_num) is defined.  We keep
535  * this table of devices forever, so that reloading a controller driver will
536  * not make Linux forget about these hard-wired devices.
537  *
538  * Other code can also call this, e.g. a particular add-on board might provide
539  * SPI devices through its expansion connector, so code initializing that board
540  * would naturally declare its SPI devices.
541  *
542  * The board info passed can safely be __initdata ... but be careful of
543  * any embedded pointers (platform_data, etc), they're copied as-is.
544  */
545 int spi_register_board_info(struct spi_board_info const *info, unsigned n)
546 {
547         struct boardinfo *bi;
548         int i;
549
550         bi = kzalloc(n * sizeof(*bi), GFP_KERNEL);
551         if (!bi)
552                 return -ENOMEM;
553
554         for (i = 0; i < n; i++, bi++, info++) {
555                 struct spi_master *master;
556
557                 memcpy(&bi->board_info, info, sizeof(*info));
558                 mutex_lock(&board_lock);
559                 list_add_tail(&bi->list, &board_list);
560                 list_for_each_entry(master, &spi_master_list, list)
561                         spi_match_master_to_boardinfo(master, &bi->board_info);
562                 mutex_unlock(&board_lock);
563         }
564
565         return 0;
566 }
567
568 /*-------------------------------------------------------------------------*/
569
570 static void spi_set_cs(struct spi_device *spi, bool enable)
571 {
572         if (spi->mode & SPI_CS_HIGH)
573                 enable = !enable;
574
575         if (spi->cs_gpio >= 0)
576                 gpio_set_value(spi->cs_gpio, !enable);
577         else if (spi->master->set_cs)
578                 spi->master->set_cs(spi, !enable);
579 }
580
581 /*
582  * spi_transfer_one_message - Default implementation of transfer_one_message()
583  *
584  * This is a standard implementation of transfer_one_message() for
585  * drivers which impelment a transfer_one() operation.  It provides
586  * standard handling of delays and chip select management.
587  */
588 static int spi_transfer_one_message(struct spi_master *master,
589                                     struct spi_message *msg)
590 {
591         struct spi_transfer *xfer;
592         bool keep_cs = false;
593         int ret = 0;
594
595         spi_set_cs(msg->spi, true);
596
597         list_for_each_entry(xfer, &msg->transfers, transfer_list) {
598                 trace_spi_transfer_start(msg, xfer);
599
600                 reinit_completion(&master->xfer_completion);
601
602                 ret = master->transfer_one(master, msg->spi, xfer);
603                 if (ret < 0) {
604                         dev_err(&msg->spi->dev,
605                                 "SPI transfer failed: %d\n", ret);
606                         goto out;
607                 }
608
609                 if (ret > 0) {
610                         ret = 0;
611                         wait_for_completion(&master->xfer_completion);
612                 }
613
614                 trace_spi_transfer_stop(msg, xfer);
615
616                 if (msg->status != -EINPROGRESS)
617                         goto out;
618
619                 if (xfer->delay_usecs)
620                         udelay(xfer->delay_usecs);
621
622                 if (xfer->cs_change) {
623                         if (list_is_last(&xfer->transfer_list,
624                                          &msg->transfers)) {
625                                 keep_cs = true;
626                         } else {
627                                 spi_set_cs(msg->spi, false);
628                                 udelay(10);
629                                 spi_set_cs(msg->spi, true);
630                         }
631                 }
632
633                 msg->actual_length += xfer->len;
634         }
635
636 out:
637         if (ret != 0 || !keep_cs)
638                 spi_set_cs(msg->spi, false);
639
640         if (msg->status == -EINPROGRESS)
641                 msg->status = ret;
642
643         spi_finalize_current_message(master);
644
645         return ret;
646 }
647
648 /**
649  * spi_finalize_current_transfer - report completion of a transfer
650  *
651  * Called by SPI drivers using the core transfer_one_message()
652  * implementation to notify it that the current interrupt driven
653  * transfer has finished and the next one may be scheduled.
654  */
655 void spi_finalize_current_transfer(struct spi_master *master)
656 {
657         complete(&master->xfer_completion);
658 }
659 EXPORT_SYMBOL_GPL(spi_finalize_current_transfer);
660
661 /**
662  * spi_pump_messages - kthread work function which processes spi message queue
663  * @work: pointer to kthread work struct contained in the master struct
664  *
665  * This function checks if there is any spi message in the queue that
666  * needs processing and if so call out to the driver to initialize hardware
667  * and transfer each message.
668  *
669  */
670 static void spi_pump_messages(struct kthread_work *work)
671 {
672         struct spi_master *master =
673                 container_of(work, struct spi_master, pump_messages);
674         unsigned long flags;
675         bool was_busy = false;
676         int ret;
677
678         /* Lock queue and check for queue work */
679         spin_lock_irqsave(&master->queue_lock, flags);
680         if (list_empty(&master->queue) || !master->running) {
681                 if (!master->busy) {
682                         spin_unlock_irqrestore(&master->queue_lock, flags);
683                         return;
684                 }
685                 master->busy = false;
686                 spin_unlock_irqrestore(&master->queue_lock, flags);
687                 if (master->unprepare_transfer_hardware &&
688                     master->unprepare_transfer_hardware(master))
689                         dev_err(&master->dev,
690                                 "failed to unprepare transfer hardware\n");
691                 if (master->auto_runtime_pm) {
692                         pm_runtime_mark_last_busy(master->dev.parent);
693                         pm_runtime_put_autosuspend(master->dev.parent);
694                 }
695                 trace_spi_master_idle(master);
696                 return;
697         }
698
699         /* Make sure we are not already running a message */
700         if (master->cur_msg) {
701                 spin_unlock_irqrestore(&master->queue_lock, flags);
702                 return;
703         }
704         /* Extract head of queue */
705         master->cur_msg =
706                 list_first_entry(&master->queue, struct spi_message, queue);
707
708         list_del_init(&master->cur_msg->queue);
709         if (master->busy)
710                 was_busy = true;
711         else
712                 master->busy = true;
713         spin_unlock_irqrestore(&master->queue_lock, flags);
714
715         if (!was_busy && master->auto_runtime_pm) {
716                 ret = pm_runtime_get_sync(master->dev.parent);
717                 if (ret < 0) {
718                         dev_err(&master->dev, "Failed to power device: %d\n",
719                                 ret);
720                         return;
721                 }
722         }
723
724         if (!was_busy)
725                 trace_spi_master_busy(master);
726
727         if (!was_busy && master->prepare_transfer_hardware) {
728                 ret = master->prepare_transfer_hardware(master);
729                 if (ret) {
730                         dev_err(&master->dev,
731                                 "failed to prepare transfer hardware\n");
732
733                         if (master->auto_runtime_pm)
734                                 pm_runtime_put(master->dev.parent);
735                         return;
736                 }
737         }
738
739         trace_spi_message_start(master->cur_msg);
740
741         if (master->prepare_message) {
742                 ret = master->prepare_message(master, master->cur_msg);
743                 if (ret) {
744                         dev_err(&master->dev,
745                                 "failed to prepare message: %d\n", ret);
746                         master->cur_msg->status = ret;
747                         spi_finalize_current_message(master);
748                         return;
749                 }
750                 master->cur_msg_prepared = true;
751         }
752
753         ret = master->transfer_one_message(master, master->cur_msg);
754         if (ret) {
755                 dev_err(&master->dev,
756                         "failed to transfer one message from queue\n");
757                 return;
758         }
759 }
760
761 static int spi_init_queue(struct spi_master *master)
762 {
763         struct sched_param param = { .sched_priority = MAX_RT_PRIO - 1 };
764
765         INIT_LIST_HEAD(&master->queue);
766         spin_lock_init(&master->queue_lock);
767
768         master->running = false;
769         master->busy = false;
770
771         init_kthread_worker(&master->kworker);
772         master->kworker_task = kthread_run(kthread_worker_fn,
773                                            &master->kworker, "%s",
774                                            dev_name(&master->dev));
775         if (IS_ERR(master->kworker_task)) {
776                 dev_err(&master->dev, "failed to create message pump task\n");
777                 return -ENOMEM;
778         }
779         init_kthread_work(&master->pump_messages, spi_pump_messages);
780
781         /*
782          * Master config will indicate if this controller should run the
783          * message pump with high (realtime) priority to reduce the transfer
784          * latency on the bus by minimising the delay between a transfer
785          * request and the scheduling of the message pump thread. Without this
786          * setting the message pump thread will remain at default priority.
787          */
788         if (master->rt) {
789                 dev_info(&master->dev,
790                         "will run message pump with realtime priority\n");
791                 sched_setscheduler(master->kworker_task, SCHED_FIFO, &param);
792         }
793
794         return 0;
795 }
796
797 /**
798  * spi_get_next_queued_message() - called by driver to check for queued
799  * messages
800  * @master: the master to check for queued messages
801  *
802  * If there are more messages in the queue, the next message is returned from
803  * this call.
804  */
805 struct spi_message *spi_get_next_queued_message(struct spi_master *master)
806 {
807         struct spi_message *next;
808         unsigned long flags;
809
810         /* get a pointer to the next message, if any */
811         spin_lock_irqsave(&master->queue_lock, flags);
812         next = list_first_entry_or_null(&master->queue, struct spi_message,
813                                         queue);
814         spin_unlock_irqrestore(&master->queue_lock, flags);
815
816         return next;
817 }
818 EXPORT_SYMBOL_GPL(spi_get_next_queued_message);
819
820 /**
821  * spi_finalize_current_message() - the current message is complete
822  * @master: the master to return the message to
823  *
824  * Called by the driver to notify the core that the message in the front of the
825  * queue is complete and can be removed from the queue.
826  */
827 void spi_finalize_current_message(struct spi_master *master)
828 {
829         struct spi_message *mesg;
830         unsigned long flags;
831         int ret;
832
833         spin_lock_irqsave(&master->queue_lock, flags);
834         mesg = master->cur_msg;
835         master->cur_msg = NULL;
836
837         queue_kthread_work(&master->kworker, &master->pump_messages);
838         spin_unlock_irqrestore(&master->queue_lock, flags);
839
840         if (master->cur_msg_prepared && master->unprepare_message) {
841                 ret = master->unprepare_message(master, mesg);
842                 if (ret) {
843                         dev_err(&master->dev,
844                                 "failed to unprepare message: %d\n", ret);
845                 }
846         }
847         master->cur_msg_prepared = false;
848
849         mesg->state = NULL;
850         if (mesg->complete)
851                 mesg->complete(mesg->context);
852
853         trace_spi_message_done(mesg);
854 }
855 EXPORT_SYMBOL_GPL(spi_finalize_current_message);
856
857 static int spi_start_queue(struct spi_master *master)
858 {
859         unsigned long flags;
860
861         spin_lock_irqsave(&master->queue_lock, flags);
862
863         if (master->running || master->busy) {
864                 spin_unlock_irqrestore(&master->queue_lock, flags);
865                 return -EBUSY;
866         }
867
868         master->running = true;
869         master->cur_msg = NULL;
870         spin_unlock_irqrestore(&master->queue_lock, flags);
871
872         queue_kthread_work(&master->kworker, &master->pump_messages);
873
874         return 0;
875 }
876
877 static int spi_stop_queue(struct spi_master *master)
878 {
879         unsigned long flags;
880         unsigned limit = 500;
881         int ret = 0;
882
883         spin_lock_irqsave(&master->queue_lock, flags);
884
885         /*
886          * This is a bit lame, but is optimized for the common execution path.
887          * A wait_queue on the master->busy could be used, but then the common
888          * execution path (pump_messages) would be required to call wake_up or
889          * friends on every SPI message. Do this instead.
890          */
891         while ((!list_empty(&master->queue) || master->busy) && limit--) {
892                 spin_unlock_irqrestore(&master->queue_lock, flags);
893                 usleep_range(10000, 11000);
894                 spin_lock_irqsave(&master->queue_lock, flags);
895         }
896
897         if (!list_empty(&master->queue) || master->busy)
898                 ret = -EBUSY;
899         else
900                 master->running = false;
901
902         spin_unlock_irqrestore(&master->queue_lock, flags);
903
904         if (ret) {
905                 dev_warn(&master->dev,
906                          "could not stop message queue\n");
907                 return ret;
908         }
909         return ret;
910 }
911
912 static int spi_destroy_queue(struct spi_master *master)
913 {
914         int ret;
915
916         ret = spi_stop_queue(master);
917
918         /*
919          * flush_kthread_worker will block until all work is done.
920          * If the reason that stop_queue timed out is that the work will never
921          * finish, then it does no good to call flush/stop thread, so
922          * return anyway.
923          */
924         if (ret) {
925                 dev_err(&master->dev, "problem destroying queue\n");
926                 return ret;
927         }
928
929         flush_kthread_worker(&master->kworker);
930         kthread_stop(master->kworker_task);
931
932         return 0;
933 }
934
935 /**
936  * spi_queued_transfer - transfer function for queued transfers
937  * @spi: spi device which is requesting transfer
938  * @msg: spi message which is to handled is queued to driver queue
939  */
940 static int spi_queued_transfer(struct spi_device *spi, struct spi_message *msg)
941 {
942         struct spi_master *master = spi->master;
943         unsigned long flags;
944
945         spin_lock_irqsave(&master->queue_lock, flags);
946
947         if (!master->running) {
948                 spin_unlock_irqrestore(&master->queue_lock, flags);
949                 return -ESHUTDOWN;
950         }
951         msg->actual_length = 0;
952         msg->status = -EINPROGRESS;
953
954         list_add_tail(&msg->queue, &master->queue);
955         if (!master->busy)
956                 queue_kthread_work(&master->kworker, &master->pump_messages);
957
958         spin_unlock_irqrestore(&master->queue_lock, flags);
959         return 0;
960 }
961
962 static int spi_master_initialize_queue(struct spi_master *master)
963 {
964         int ret;
965
966         master->queued = true;
967         master->transfer = spi_queued_transfer;
968         if (!master->transfer_one_message)
969                 master->transfer_one_message = spi_transfer_one_message;
970
971         /* Initialize and start queue */
972         ret = spi_init_queue(master);
973         if (ret) {
974                 dev_err(&master->dev, "problem initializing queue\n");
975                 goto err_init_queue;
976         }
977         ret = spi_start_queue(master);
978         if (ret) {
979                 dev_err(&master->dev, "problem starting queue\n");
980                 goto err_start_queue;
981         }
982
983         return 0;
984
985 err_start_queue:
986 err_init_queue:
987         spi_destroy_queue(master);
988         return ret;
989 }
990
991 /*-------------------------------------------------------------------------*/
992
993 #if defined(CONFIG_OF)
994 /**
995  * of_register_spi_devices() - Register child devices onto the SPI bus
996  * @master:     Pointer to spi_master device
997  *
998  * Registers an spi_device for each child node of master node which has a 'reg'
999  * property.
1000  */
1001 static void of_register_spi_devices(struct spi_master *master)
1002 {
1003         struct spi_device *spi;
1004         struct device_node *nc;
1005         int rc;
1006         u32 value;
1007
1008         if (!master->dev.of_node)
1009                 return;
1010
1011         for_each_available_child_of_node(master->dev.of_node, nc) {
1012                 /* Alloc an spi_device */
1013                 spi = spi_alloc_device(master);
1014                 if (!spi) {
1015                         dev_err(&master->dev, "spi_device alloc error for %s\n",
1016                                 nc->full_name);
1017                         spi_dev_put(spi);
1018                         continue;
1019                 }
1020
1021                 /* Select device driver */
1022                 if (of_modalias_node(nc, spi->modalias,
1023                                      sizeof(spi->modalias)) < 0) {
1024                         dev_err(&master->dev, "cannot find modalias for %s\n",
1025                                 nc->full_name);
1026                         spi_dev_put(spi);
1027                         continue;
1028                 }
1029
1030                 /* Device address */
1031                 rc = of_property_read_u32(nc, "reg", &value);
1032                 if (rc) {
1033                         dev_err(&master->dev, "%s has no valid 'reg' property (%d)\n",
1034                                 nc->full_name, rc);
1035                         spi_dev_put(spi);
1036                         continue;
1037                 }
1038                 spi->chip_select = value;
1039
1040                 /* Mode (clock phase/polarity/etc.) */
1041                 if (of_find_property(nc, "spi-cpha", NULL))
1042                         spi->mode |= SPI_CPHA;
1043                 if (of_find_property(nc, "spi-cpol", NULL))
1044                         spi->mode |= SPI_CPOL;
1045                 if (of_find_property(nc, "spi-cs-high", NULL))
1046                         spi->mode |= SPI_CS_HIGH;
1047                 if (of_find_property(nc, "spi-3wire", NULL))
1048                         spi->mode |= SPI_3WIRE;
1049
1050                 /* Device DUAL/QUAD mode */
1051                 if (!of_property_read_u32(nc, "spi-tx-bus-width", &value)) {
1052                         switch (value) {
1053                         case 1:
1054                                 break;
1055                         case 2:
1056                                 spi->mode |= SPI_TX_DUAL;
1057                                 break;
1058                         case 4:
1059                                 spi->mode |= SPI_TX_QUAD;
1060                                 break;
1061                         default:
1062                                 dev_err(&master->dev,
1063                                         "spi-tx-bus-width %d not supported\n",
1064                                         value);
1065                                 spi_dev_put(spi);
1066                                 continue;
1067                         }
1068                 }
1069
1070                 if (!of_property_read_u32(nc, "spi-rx-bus-width", &value)) {
1071                         switch (value) {
1072                         case 1:
1073                                 break;
1074                         case 2:
1075                                 spi->mode |= SPI_RX_DUAL;
1076                                 break;
1077                         case 4:
1078                                 spi->mode |= SPI_RX_QUAD;
1079                                 break;
1080                         default:
1081                                 dev_err(&master->dev,
1082                                         "spi-rx-bus-width %d not supported\n",
1083                                         value);
1084                                 spi_dev_put(spi);
1085                                 continue;
1086                         }
1087                 }
1088
1089                 /* Device speed */
1090                 rc = of_property_read_u32(nc, "spi-max-frequency", &value);
1091                 if (rc) {
1092                         dev_err(&master->dev, "%s has no valid 'spi-max-frequency' property (%d)\n",
1093                                 nc->full_name, rc);
1094                         spi_dev_put(spi);
1095                         continue;
1096                 }
1097                 spi->max_speed_hz = value;
1098
1099                 /* IRQ */
1100                 spi->irq = irq_of_parse_and_map(nc, 0);
1101
1102                 /* Store a pointer to the node in the device structure */
1103                 of_node_get(nc);
1104                 spi->dev.of_node = nc;
1105
1106                 /* Register the new device */
1107                 request_module("%s%s", SPI_MODULE_PREFIX, spi->modalias);
1108                 rc = spi_add_device(spi);
1109                 if (rc) {
1110                         dev_err(&master->dev, "spi_device register error %s\n",
1111                                 nc->full_name);
1112                         spi_dev_put(spi);
1113                 }
1114
1115         }
1116 }
1117 #else
1118 static void of_register_spi_devices(struct spi_master *master) { }
1119 #endif
1120
1121 #ifdef CONFIG_ACPI
1122 static int acpi_spi_add_resource(struct acpi_resource *ares, void *data)
1123 {
1124         struct spi_device *spi = data;
1125
1126         if (ares->type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
1127                 struct acpi_resource_spi_serialbus *sb;
1128
1129                 sb = &ares->data.spi_serial_bus;
1130                 if (sb->type == ACPI_RESOURCE_SERIAL_TYPE_SPI) {
1131                         spi->chip_select = sb->device_selection;
1132                         spi->max_speed_hz = sb->connection_speed;
1133
1134                         if (sb->clock_phase == ACPI_SPI_SECOND_PHASE)
1135                                 spi->mode |= SPI_CPHA;
1136                         if (sb->clock_polarity == ACPI_SPI_START_HIGH)
1137                                 spi->mode |= SPI_CPOL;
1138                         if (sb->device_polarity == ACPI_SPI_ACTIVE_HIGH)
1139                                 spi->mode |= SPI_CS_HIGH;
1140                 }
1141         } else if (spi->irq < 0) {
1142                 struct resource r;
1143
1144                 if (acpi_dev_resource_interrupt(ares, 0, &r))
1145                         spi->irq = r.start;
1146         }
1147
1148         /* Always tell the ACPI core to skip this resource */
1149         return 1;
1150 }
1151
1152 static acpi_status acpi_spi_add_device(acpi_handle handle, u32 level,
1153                                        void *data, void **return_value)
1154 {
1155         struct spi_master *master = data;
1156         struct list_head resource_list;
1157         struct acpi_device *adev;
1158         struct spi_device *spi;
1159         int ret;
1160
1161         if (acpi_bus_get_device(handle, &adev))
1162                 return AE_OK;
1163         if (acpi_bus_get_status(adev) || !adev->status.present)
1164                 return AE_OK;
1165
1166         spi = spi_alloc_device(master);
1167         if (!spi) {
1168                 dev_err(&master->dev, "failed to allocate SPI device for %s\n",
1169                         dev_name(&adev->dev));
1170                 return AE_NO_MEMORY;
1171         }
1172
1173         ACPI_COMPANION_SET(&spi->dev, adev);
1174         spi->irq = -1;
1175
1176         INIT_LIST_HEAD(&resource_list);
1177         ret = acpi_dev_get_resources(adev, &resource_list,
1178                                      acpi_spi_add_resource, spi);
1179         acpi_dev_free_resource_list(&resource_list);
1180
1181         if (ret < 0 || !spi->max_speed_hz) {
1182                 spi_dev_put(spi);
1183                 return AE_OK;
1184         }
1185
1186         adev->power.flags.ignore_parent = true;
1187         strlcpy(spi->modalias, acpi_device_hid(adev), sizeof(spi->modalias));
1188         if (spi_add_device(spi)) {
1189                 adev->power.flags.ignore_parent = false;
1190                 dev_err(&master->dev, "failed to add SPI device %s from ACPI\n",
1191                         dev_name(&adev->dev));
1192                 spi_dev_put(spi);
1193         }
1194
1195         return AE_OK;
1196 }
1197
1198 static void acpi_register_spi_devices(struct spi_master *master)
1199 {
1200         acpi_status status;
1201         acpi_handle handle;
1202
1203         handle = ACPI_HANDLE(master->dev.parent);
1204         if (!handle)
1205                 return;
1206
1207         status = acpi_walk_namespace(ACPI_TYPE_DEVICE, handle, 1,
1208                                      acpi_spi_add_device, NULL,
1209                                      master, NULL);
1210         if (ACPI_FAILURE(status))
1211                 dev_warn(&master->dev, "failed to enumerate SPI slaves\n");
1212 }
1213 #else
1214 static inline void acpi_register_spi_devices(struct spi_master *master) {}
1215 #endif /* CONFIG_ACPI */
1216
1217 static void spi_master_release(struct device *dev)
1218 {
1219         struct spi_master *master;
1220
1221         master = container_of(dev, struct spi_master, dev);
1222         kfree(master);
1223 }
1224
1225 static struct class spi_master_class = {
1226         .name           = "spi_master",
1227         .owner          = THIS_MODULE,
1228         .dev_release    = spi_master_release,
1229 };
1230
1231
1232
1233 /**
1234  * spi_alloc_master - allocate SPI master controller
1235  * @dev: the controller, possibly using the platform_bus
1236  * @size: how much zeroed driver-private data to allocate; the pointer to this
1237  *      memory is in the driver_data field of the returned device,
1238  *      accessible with spi_master_get_devdata().
1239  * Context: can sleep
1240  *
1241  * This call is used only by SPI master controller drivers, which are the
1242  * only ones directly touching chip registers.  It's how they allocate
1243  * an spi_master structure, prior to calling spi_register_master().
1244  *
1245  * This must be called from context that can sleep.  It returns the SPI
1246  * master structure on success, else NULL.
1247  *
1248  * The caller is responsible for assigning the bus number and initializing
1249  * the master's methods before calling spi_register_master(); and (after errors
1250  * adding the device) calling spi_master_put() and kfree() to prevent a memory
1251  * leak.
1252  */
1253 struct spi_master *spi_alloc_master(struct device *dev, unsigned size)
1254 {
1255         struct spi_master       *master;
1256
1257         if (!dev)
1258                 return NULL;
1259
1260         master = kzalloc(size + sizeof(*master), GFP_KERNEL);
1261         if (!master)
1262                 return NULL;
1263
1264         device_initialize(&master->dev);
1265         master->bus_num = -1;
1266         master->num_chipselect = 1;
1267         master->dev.class = &spi_master_class;
1268         master->dev.parent = get_device(dev);
1269         spi_master_set_devdata(master, &master[1]);
1270
1271         return master;
1272 }
1273 EXPORT_SYMBOL_GPL(spi_alloc_master);
1274
1275 #ifdef CONFIG_OF
1276 static int of_spi_register_master(struct spi_master *master)
1277 {
1278         int nb, i, *cs;
1279         struct device_node *np = master->dev.of_node;
1280
1281         if (!np)
1282                 return 0;
1283
1284         nb = of_gpio_named_count(np, "cs-gpios");
1285         master->num_chipselect = max_t(int, nb, master->num_chipselect);
1286
1287         /* Return error only for an incorrectly formed cs-gpios property */
1288         if (nb == 0 || nb == -ENOENT)
1289                 return 0;
1290         else if (nb < 0)
1291                 return nb;
1292
1293         cs = devm_kzalloc(&master->dev,
1294                           sizeof(int) * master->num_chipselect,
1295                           GFP_KERNEL);
1296         master->cs_gpios = cs;
1297
1298         if (!master->cs_gpios)
1299                 return -ENOMEM;
1300
1301         for (i = 0; i < master->num_chipselect; i++)
1302                 cs[i] = -ENOENT;
1303
1304         for (i = 0; i < nb; i++)
1305                 cs[i] = of_get_named_gpio(np, "cs-gpios", i);
1306
1307         return 0;
1308 }
1309 #else
1310 static int of_spi_register_master(struct spi_master *master)
1311 {
1312         return 0;
1313 }
1314 #endif
1315
1316 /**
1317  * spi_register_master - register SPI master controller
1318  * @master: initialized master, originally from spi_alloc_master()
1319  * Context: can sleep
1320  *
1321  * SPI master controllers connect to their drivers using some non-SPI bus,
1322  * such as the platform bus.  The final stage of probe() in that code
1323  * includes calling spi_register_master() to hook up to this SPI bus glue.
1324  *
1325  * SPI controllers use board specific (often SOC specific) bus numbers,
1326  * and board-specific addressing for SPI devices combines those numbers
1327  * with chip select numbers.  Since SPI does not directly support dynamic
1328  * device identification, boards need configuration tables telling which
1329  * chip is at which address.
1330  *
1331  * This must be called from context that can sleep.  It returns zero on
1332  * success, else a negative error code (dropping the master's refcount).
1333  * After a successful return, the caller is responsible for calling
1334  * spi_unregister_master().
1335  */
1336 int spi_register_master(struct spi_master *master)
1337 {
1338         static atomic_t         dyn_bus_id = ATOMIC_INIT((1<<15) - 1);
1339         struct device           *dev = master->dev.parent;
1340         struct boardinfo        *bi;
1341         int                     status = -ENODEV;
1342         int                     dynamic = 0;
1343
1344         if (!dev)
1345                 return -ENODEV;
1346
1347         status = of_spi_register_master(master);
1348         if (status)
1349                 return status;
1350
1351         /* even if it's just one always-selected device, there must
1352          * be at least one chipselect
1353          */
1354         if (master->num_chipselect == 0)
1355                 return -EINVAL;
1356
1357         if ((master->bus_num < 0) && master->dev.of_node)
1358                 master->bus_num = of_alias_get_id(master->dev.of_node, "spi");
1359
1360         /* convention:  dynamically assigned bus IDs count down from the max */
1361         if (master->bus_num < 0) {
1362                 /* FIXME switch to an IDR based scheme, something like
1363                  * I2C now uses, so we can't run out of "dynamic" IDs
1364                  */
1365                 master->bus_num = atomic_dec_return(&dyn_bus_id);
1366                 dynamic = 1;
1367         }
1368
1369         spin_lock_init(&master->bus_lock_spinlock);
1370         mutex_init(&master->bus_lock_mutex);
1371         master->bus_lock_flag = 0;
1372         init_completion(&master->xfer_completion);
1373
1374         /* register the device, then userspace will see it.
1375          * registration fails if the bus ID is in use.
1376          */
1377         dev_set_name(&master->dev, "spi%u", master->bus_num);
1378         status = device_add(&master->dev);
1379         if (status < 0)
1380                 goto done;
1381         dev_dbg(dev, "registered master %s%s\n", dev_name(&master->dev),
1382                         dynamic ? " (dynamic)" : "");
1383
1384         /* If we're using a queued driver, start the queue */
1385         if (master->transfer)
1386                 dev_info(dev, "master is unqueued, this is deprecated\n");
1387         else {
1388                 status = spi_master_initialize_queue(master);
1389                 if (status) {
1390                         device_del(&master->dev);
1391                         goto done;
1392                 }
1393         }
1394
1395         mutex_lock(&board_lock);
1396         list_add_tail(&master->list, &spi_master_list);
1397         list_for_each_entry(bi, &board_list, list)
1398                 spi_match_master_to_boardinfo(master, &bi->board_info);
1399         mutex_unlock(&board_lock);
1400
1401         /* Register devices from the device tree and ACPI */
1402         of_register_spi_devices(master);
1403         acpi_register_spi_devices(master);
1404 done:
1405         return status;
1406 }
1407 EXPORT_SYMBOL_GPL(spi_register_master);
1408
1409 static void devm_spi_unregister(struct device *dev, void *res)
1410 {
1411         spi_unregister_master(*(struct spi_master **)res);
1412 }
1413
1414 /**
1415  * dev_spi_register_master - register managed SPI master controller
1416  * @dev:    device managing SPI master
1417  * @master: initialized master, originally from spi_alloc_master()
1418  * Context: can sleep
1419  *
1420  * Register a SPI device as with spi_register_master() which will
1421  * automatically be unregister
1422  */
1423 int devm_spi_register_master(struct device *dev, struct spi_master *master)
1424 {
1425         struct spi_master **ptr;
1426         int ret;
1427
1428         ptr = devres_alloc(devm_spi_unregister, sizeof(*ptr), GFP_KERNEL);
1429         if (!ptr)
1430                 return -ENOMEM;
1431
1432         ret = spi_register_master(master);
1433         if (!ret) {
1434                 *ptr = master;
1435                 devres_add(dev, ptr);
1436         } else {
1437                 devres_free(ptr);
1438         }
1439
1440         return ret;
1441 }
1442 EXPORT_SYMBOL_GPL(devm_spi_register_master);
1443
1444 static int __unregister(struct device *dev, void *null)
1445 {
1446         spi_unregister_device(to_spi_device(dev));
1447         return 0;
1448 }
1449
1450 /**
1451  * spi_unregister_master - unregister SPI master controller
1452  * @master: the master being unregistered
1453  * Context: can sleep
1454  *
1455  * This call is used only by SPI master controller drivers, which are the
1456  * only ones directly touching chip registers.
1457  *
1458  * This must be called from context that can sleep.
1459  */
1460 void spi_unregister_master(struct spi_master *master)
1461 {
1462         int dummy;
1463
1464         if (master->queued) {
1465                 if (spi_destroy_queue(master))
1466                         dev_err(&master->dev, "queue remove failed\n");
1467         }
1468
1469         mutex_lock(&board_lock);
1470         list_del(&master->list);
1471         mutex_unlock(&board_lock);
1472
1473         dummy = device_for_each_child(&master->dev, NULL, __unregister);
1474         device_unregister(&master->dev);
1475 }
1476 EXPORT_SYMBOL_GPL(spi_unregister_master);
1477
1478 int spi_master_suspend(struct spi_master *master)
1479 {
1480         int ret;
1481
1482         /* Basically no-ops for non-queued masters */
1483         if (!master->queued)
1484                 return 0;
1485
1486         ret = spi_stop_queue(master);
1487         if (ret)
1488                 dev_err(&master->dev, "queue stop failed\n");
1489
1490         return ret;
1491 }
1492 EXPORT_SYMBOL_GPL(spi_master_suspend);
1493
1494 int spi_master_resume(struct spi_master *master)
1495 {
1496         int ret;
1497
1498         if (!master->queued)
1499                 return 0;
1500
1501         ret = spi_start_queue(master);
1502         if (ret)
1503                 dev_err(&master->dev, "queue restart failed\n");
1504
1505         return ret;
1506 }
1507 EXPORT_SYMBOL_GPL(spi_master_resume);
1508
1509 static int __spi_master_match(struct device *dev, const void *data)
1510 {
1511         struct spi_master *m;
1512         const u16 *bus_num = data;
1513
1514         m = container_of(dev, struct spi_master, dev);
1515         return m->bus_num == *bus_num;
1516 }
1517
1518 /**
1519  * spi_busnum_to_master - look up master associated with bus_num
1520  * @bus_num: the master's bus number
1521  * Context: can sleep
1522  *
1523  * This call may be used with devices that are registered after
1524  * arch init time.  It returns a refcounted pointer to the relevant
1525  * spi_master (which the caller must release), or NULL if there is
1526  * no such master registered.
1527  */
1528 struct spi_master *spi_busnum_to_master(u16 bus_num)
1529 {
1530         struct device           *dev;
1531         struct spi_master       *master = NULL;
1532
1533         dev = class_find_device(&spi_master_class, NULL, &bus_num,
1534                                 __spi_master_match);
1535         if (dev)
1536                 master = container_of(dev, struct spi_master, dev);
1537         /* reference got in class_find_device */
1538         return master;
1539 }
1540 EXPORT_SYMBOL_GPL(spi_busnum_to_master);
1541
1542
1543 /*-------------------------------------------------------------------------*/
1544
1545 /* Core methods for SPI master protocol drivers.  Some of the
1546  * other core methods are currently defined as inline functions.
1547  */
1548
1549 /**
1550  * spi_setup - setup SPI mode and clock rate
1551  * @spi: the device whose settings are being modified
1552  * Context: can sleep, and no requests are queued to the device
1553  *
1554  * SPI protocol drivers may need to update the transfer mode if the
1555  * device doesn't work with its default.  They may likewise need
1556  * to update clock rates or word sizes from initial values.  This function
1557  * changes those settings, and must be called from a context that can sleep.
1558  * Except for SPI_CS_HIGH, which takes effect immediately, the changes take
1559  * effect the next time the device is selected and data is transferred to
1560  * or from it.  When this function returns, the spi device is deselected.
1561  *
1562  * Note that this call will fail if the protocol driver specifies an option
1563  * that the underlying controller or its driver does not support.  For
1564  * example, not all hardware supports wire transfers using nine bit words,
1565  * LSB-first wire encoding, or active-high chipselects.
1566  */
1567 int spi_setup(struct spi_device *spi)
1568 {
1569         unsigned        bad_bits;
1570         int             status = 0;
1571
1572         /* check mode to prevent that DUAL and QUAD set at the same time
1573          */
1574         if (((spi->mode & SPI_TX_DUAL) && (spi->mode & SPI_TX_QUAD)) ||
1575                 ((spi->mode & SPI_RX_DUAL) && (spi->mode & SPI_RX_QUAD))) {
1576                 dev_err(&spi->dev,
1577                 "setup: can not select dual and quad at the same time\n");
1578                 return -EINVAL;
1579         }
1580         /* if it is SPI_3WIRE mode, DUAL and QUAD should be forbidden
1581          */
1582         if ((spi->mode & SPI_3WIRE) && (spi->mode &
1583                 (SPI_TX_DUAL | SPI_TX_QUAD | SPI_RX_DUAL | SPI_RX_QUAD)))
1584                 return -EINVAL;
1585         /* help drivers fail *cleanly* when they need options
1586          * that aren't supported with their current master
1587          */
1588         bad_bits = spi->mode & ~spi->master->mode_bits;
1589         if (bad_bits) {
1590                 dev_err(&spi->dev, "setup: unsupported mode bits %x\n",
1591                         bad_bits);
1592                 return -EINVAL;
1593         }
1594
1595         if (!spi->bits_per_word)
1596                 spi->bits_per_word = 8;
1597
1598         if (spi->master->setup)
1599                 status = spi->master->setup(spi);
1600
1601         dev_dbg(&spi->dev, "setup mode %d, %s%s%s%s%u bits/w, %u Hz max --> %d\n",
1602                         (int) (spi->mode & (SPI_CPOL | SPI_CPHA)),
1603                         (spi->mode & SPI_CS_HIGH) ? "cs_high, " : "",
1604                         (spi->mode & SPI_LSB_FIRST) ? "lsb, " : "",
1605                         (spi->mode & SPI_3WIRE) ? "3wire, " : "",
1606                         (spi->mode & SPI_LOOP) ? "loopback, " : "",
1607                         spi->bits_per_word, spi->max_speed_hz,
1608                         status);
1609
1610         return status;
1611 }
1612 EXPORT_SYMBOL_GPL(spi_setup);
1613
1614 static int __spi_validate(struct spi_device *spi, struct spi_message *message)
1615 {
1616         struct spi_master *master = spi->master;
1617         struct spi_transfer *xfer;
1618         int w_size;
1619
1620         if (list_empty(&message->transfers))
1621                 return -EINVAL;
1622
1623         /* Half-duplex links include original MicroWire, and ones with
1624          * only one data pin like SPI_3WIRE (switches direction) or where
1625          * either MOSI or MISO is missing.  They can also be caused by
1626          * software limitations.
1627          */
1628         if ((master->flags & SPI_MASTER_HALF_DUPLEX)
1629                         || (spi->mode & SPI_3WIRE)) {
1630                 unsigned flags = master->flags;
1631
1632                 list_for_each_entry(xfer, &message->transfers, transfer_list) {
1633                         if (xfer->rx_buf && xfer->tx_buf)
1634                                 return -EINVAL;
1635                         if ((flags & SPI_MASTER_NO_TX) && xfer->tx_buf)
1636                                 return -EINVAL;
1637                         if ((flags & SPI_MASTER_NO_RX) && xfer->rx_buf)
1638                                 return -EINVAL;
1639                 }
1640         }
1641
1642         /**
1643          * Set transfer bits_per_word and max speed as spi device default if
1644          * it is not set for this transfer.
1645          * Set transfer tx_nbits and rx_nbits as single transfer default
1646          * (SPI_NBITS_SINGLE) if it is not set for this transfer.
1647          */
1648         list_for_each_entry(xfer, &message->transfers, transfer_list) {
1649                 message->frame_length += xfer->len;
1650                 if (!xfer->bits_per_word)
1651                         xfer->bits_per_word = spi->bits_per_word;
1652
1653                 if (!xfer->speed_hz)
1654                         xfer->speed_hz = spi->max_speed_hz;
1655
1656                 if (master->max_speed_hz &&
1657                     xfer->speed_hz > master->max_speed_hz)
1658                         xfer->speed_hz = master->max_speed_hz;
1659
1660                 if (master->bits_per_word_mask) {
1661                         /* Only 32 bits fit in the mask */
1662                         if (xfer->bits_per_word > 32)
1663                                 return -EINVAL;
1664                         if (!(master->bits_per_word_mask &
1665                                         BIT(xfer->bits_per_word - 1)))
1666                                 return -EINVAL;
1667                 }
1668
1669                 /*
1670                  * SPI transfer length should be multiple of SPI word size
1671                  * where SPI word size should be power-of-two multiple
1672                  */
1673                 if (xfer->bits_per_word <= 8)
1674                         w_size = 1;
1675                 else if (xfer->bits_per_word <= 16)
1676                         w_size = 2;
1677                 else
1678                         w_size = 4;
1679
1680                 /* No partial transfers accepted */
1681                 if (xfer->len % w_size)
1682                         return -EINVAL;
1683
1684                 if (xfer->speed_hz && master->min_speed_hz &&
1685                     xfer->speed_hz < master->min_speed_hz)
1686                         return -EINVAL;
1687
1688                 if (xfer->tx_buf && !xfer->tx_nbits)
1689                         xfer->tx_nbits = SPI_NBITS_SINGLE;
1690                 if (xfer->rx_buf && !xfer->rx_nbits)
1691                         xfer->rx_nbits = SPI_NBITS_SINGLE;
1692                 /* check transfer tx/rx_nbits:
1693                  * 1. check the value matches one of single, dual and quad
1694                  * 2. check tx/rx_nbits match the mode in spi_device
1695                  */
1696                 if (xfer->tx_buf) {
1697                         if (xfer->tx_nbits != SPI_NBITS_SINGLE &&
1698                                 xfer->tx_nbits != SPI_NBITS_DUAL &&
1699                                 xfer->tx_nbits != SPI_NBITS_QUAD)
1700                                 return -EINVAL;
1701                         if ((xfer->tx_nbits == SPI_NBITS_DUAL) &&
1702                                 !(spi->mode & (SPI_TX_DUAL | SPI_TX_QUAD)))
1703                                 return -EINVAL;
1704                         if ((xfer->tx_nbits == SPI_NBITS_QUAD) &&
1705                                 !(spi->mode & SPI_TX_QUAD))
1706                                 return -EINVAL;
1707                 }
1708                 /* check transfer rx_nbits */
1709                 if (xfer->rx_buf) {
1710                         if (xfer->rx_nbits != SPI_NBITS_SINGLE &&
1711                                 xfer->rx_nbits != SPI_NBITS_DUAL &&
1712                                 xfer->rx_nbits != SPI_NBITS_QUAD)
1713                                 return -EINVAL;
1714                         if ((xfer->rx_nbits == SPI_NBITS_DUAL) &&
1715                                 !(spi->mode & (SPI_RX_DUAL | SPI_RX_QUAD)))
1716                                 return -EINVAL;
1717                         if ((xfer->rx_nbits == SPI_NBITS_QUAD) &&
1718                                 !(spi->mode & SPI_RX_QUAD))
1719                                 return -EINVAL;
1720                 }
1721         }
1722
1723         message->status = -EINPROGRESS;
1724
1725         return 0;
1726 }
1727
1728 static int __spi_async(struct spi_device *spi, struct spi_message *message)
1729 {
1730         struct spi_master *master = spi->master;
1731
1732         message->spi = spi;
1733
1734         trace_spi_message_submit(message);
1735
1736         return master->transfer(spi, message);
1737 }
1738
1739 /**
1740  * spi_async - asynchronous SPI transfer
1741  * @spi: device with which data will be exchanged
1742  * @message: describes the data transfers, including completion callback
1743  * Context: any (irqs may be blocked, etc)
1744  *
1745  * This call may be used in_irq and other contexts which can't sleep,
1746  * as well as from task contexts which can sleep.
1747  *
1748  * The completion callback is invoked in a context which can't sleep.
1749  * Before that invocation, the value of message->status is undefined.
1750  * When the callback is issued, message->status holds either zero (to
1751  * indicate complete success) or a negative error code.  After that
1752  * callback returns, the driver which issued the transfer request may
1753  * deallocate the associated memory; it's no longer in use by any SPI
1754  * core or controller driver code.
1755  *
1756  * Note that although all messages to a spi_device are handled in
1757  * FIFO order, messages may go to different devices in other orders.
1758  * Some device might be higher priority, or have various "hard" access
1759  * time requirements, for example.
1760  *
1761  * On detection of any fault during the transfer, processing of
1762  * the entire message is aborted, and the device is deselected.
1763  * Until returning from the associated message completion callback,
1764  * no other spi_message queued to that device will be processed.
1765  * (This rule applies equally to all the synchronous transfer calls,
1766  * which are wrappers around this core asynchronous primitive.)
1767  */
1768 int spi_async(struct spi_device *spi, struct spi_message *message)
1769 {
1770         struct spi_master *master = spi->master;
1771         int ret;
1772         unsigned long flags;
1773
1774         ret = __spi_validate(spi, message);
1775         if (ret != 0)
1776                 return ret;
1777
1778         spin_lock_irqsave(&master->bus_lock_spinlock, flags);
1779
1780         if (master->bus_lock_flag)
1781                 ret = -EBUSY;
1782         else
1783                 ret = __spi_async(spi, message);
1784
1785         spin_unlock_irqrestore(&master->bus_lock_spinlock, flags);
1786
1787         return ret;
1788 }
1789 EXPORT_SYMBOL_GPL(spi_async);
1790
1791 /**
1792  * spi_async_locked - version of spi_async with exclusive bus usage
1793  * @spi: device with which data will be exchanged
1794  * @message: describes the data transfers, including completion callback
1795  * Context: any (irqs may be blocked, etc)
1796  *
1797  * This call may be used in_irq and other contexts which can't sleep,
1798  * as well as from task contexts which can sleep.
1799  *
1800  * The completion callback is invoked in a context which can't sleep.
1801  * Before that invocation, the value of message->status is undefined.
1802  * When the callback is issued, message->status holds either zero (to
1803  * indicate complete success) or a negative error code.  After that
1804  * callback returns, the driver which issued the transfer request may
1805  * deallocate the associated memory; it's no longer in use by any SPI
1806  * core or controller driver code.
1807  *
1808  * Note that although all messages to a spi_device are handled in
1809  * FIFO order, messages may go to different devices in other orders.
1810  * Some device might be higher priority, or have various "hard" access
1811  * time requirements, for example.
1812  *
1813  * On detection of any fault during the transfer, processing of
1814  * the entire message is aborted, and the device is deselected.
1815  * Until returning from the associated message completion callback,
1816  * no other spi_message queued to that device will be processed.
1817  * (This rule applies equally to all the synchronous transfer calls,
1818  * which are wrappers around this core asynchronous primitive.)
1819  */
1820 int spi_async_locked(struct spi_device *spi, struct spi_message *message)
1821 {
1822         struct spi_master *master = spi->master;
1823         int ret;
1824         unsigned long flags;
1825
1826         ret = __spi_validate(spi, message);
1827         if (ret != 0)
1828                 return ret;
1829
1830         spin_lock_irqsave(&master->bus_lock_spinlock, flags);
1831
1832         ret = __spi_async(spi, message);
1833
1834         spin_unlock_irqrestore(&master->bus_lock_spinlock, flags);
1835
1836         return ret;
1837
1838 }
1839 EXPORT_SYMBOL_GPL(spi_async_locked);
1840
1841
1842 /*-------------------------------------------------------------------------*/
1843
1844 /* Utility methods for SPI master protocol drivers, layered on
1845  * top of the core.  Some other utility methods are defined as
1846  * inline functions.
1847  */
1848
1849 static void spi_complete(void *arg)
1850 {
1851         complete(arg);
1852 }
1853
1854 static int __spi_sync(struct spi_device *spi, struct spi_message *message,
1855                       int bus_locked)
1856 {
1857         DECLARE_COMPLETION_ONSTACK(done);
1858         int status;
1859         struct spi_master *master = spi->master;
1860
1861         message->complete = spi_complete;
1862         message->context = &done;
1863
1864         if (!bus_locked)
1865                 mutex_lock(&master->bus_lock_mutex);
1866
1867         status = spi_async_locked(spi, message);
1868
1869         if (!bus_locked)
1870                 mutex_unlock(&master->bus_lock_mutex);
1871
1872         if (status == 0) {
1873                 wait_for_completion(&done);
1874                 status = message->status;
1875         }
1876         message->context = NULL;
1877         return status;
1878 }
1879
1880 /**
1881  * spi_sync - blocking/synchronous SPI data transfers
1882  * @spi: device with which data will be exchanged
1883  * @message: describes the data transfers
1884  * Context: can sleep
1885  *
1886  * This call may only be used from a context that may sleep.  The sleep
1887  * is non-interruptible, and has no timeout.  Low-overhead controller
1888  * drivers may DMA directly into and out of the message buffers.
1889  *
1890  * Note that the SPI device's chip select is active during the message,
1891  * and then is normally disabled between messages.  Drivers for some
1892  * frequently-used devices may want to minimize costs of selecting a chip,
1893  * by leaving it selected in anticipation that the next message will go
1894  * to the same chip.  (That may increase power usage.)
1895  *
1896  * Also, the caller is guaranteeing that the memory associated with the
1897  * message will not be freed before this call returns.
1898  *
1899  * It returns zero on success, else a negative error code.
1900  */
1901 int spi_sync(struct spi_device *spi, struct spi_message *message)
1902 {
1903         return __spi_sync(spi, message, 0);
1904 }
1905 EXPORT_SYMBOL_GPL(spi_sync);
1906
1907 /**
1908  * spi_sync_locked - version of spi_sync with exclusive bus usage
1909  * @spi: device with which data will be exchanged
1910  * @message: describes the data transfers
1911  * Context: can sleep
1912  *
1913  * This call may only be used from a context that may sleep.  The sleep
1914  * is non-interruptible, and has no timeout.  Low-overhead controller
1915  * drivers may DMA directly into and out of the message buffers.
1916  *
1917  * This call should be used by drivers that require exclusive access to the
1918  * SPI bus. It has to be preceded by a spi_bus_lock call. The SPI bus must
1919  * be released by a spi_bus_unlock call when the exclusive access is over.
1920  *
1921  * It returns zero on success, else a negative error code.
1922  */
1923 int spi_sync_locked(struct spi_device *spi, struct spi_message *message)
1924 {
1925         return __spi_sync(spi, message, 1);
1926 }
1927 EXPORT_SYMBOL_GPL(spi_sync_locked);
1928
1929 /**
1930  * spi_bus_lock - obtain a lock for exclusive SPI bus usage
1931  * @master: SPI bus master that should be locked for exclusive bus access
1932  * Context: can sleep
1933  *
1934  * This call may only be used from a context that may sleep.  The sleep
1935  * is non-interruptible, and has no timeout.
1936  *
1937  * This call should be used by drivers that require exclusive access to the
1938  * SPI bus. The SPI bus must be released by a spi_bus_unlock call when the
1939  * exclusive access is over. Data transfer must be done by spi_sync_locked
1940  * and spi_async_locked calls when the SPI bus lock is held.
1941  *
1942  * It returns zero on success, else a negative error code.
1943  */
1944 int spi_bus_lock(struct spi_master *master)
1945 {
1946         unsigned long flags;
1947
1948         mutex_lock(&master->bus_lock_mutex);
1949
1950         spin_lock_irqsave(&master->bus_lock_spinlock, flags);
1951         master->bus_lock_flag = 1;
1952         spin_unlock_irqrestore(&master->bus_lock_spinlock, flags);
1953
1954         /* mutex remains locked until spi_bus_unlock is called */
1955
1956         return 0;
1957 }
1958 EXPORT_SYMBOL_GPL(spi_bus_lock);
1959
1960 /**
1961  * spi_bus_unlock - release the lock for exclusive SPI bus usage
1962  * @master: SPI bus master that was locked for exclusive bus access
1963  * Context: can sleep
1964  *
1965  * This call may only be used from a context that may sleep.  The sleep
1966  * is non-interruptible, and has no timeout.
1967  *
1968  * This call releases an SPI bus lock previously obtained by an spi_bus_lock
1969  * call.
1970  *
1971  * It returns zero on success, else a negative error code.
1972  */
1973 int spi_bus_unlock(struct spi_master *master)
1974 {
1975         master->bus_lock_flag = 0;
1976
1977         mutex_unlock(&master->bus_lock_mutex);
1978
1979         return 0;
1980 }
1981 EXPORT_SYMBOL_GPL(spi_bus_unlock);
1982
1983 /* portable code must never pass more than 32 bytes */
1984 #define SPI_BUFSIZ      max(32, SMP_CACHE_BYTES)
1985
1986 static u8       *buf;
1987
1988 /**
1989  * spi_write_then_read - SPI synchronous write followed by read
1990  * @spi: device with which data will be exchanged
1991  * @txbuf: data to be written (need not be dma-safe)
1992  * @n_tx: size of txbuf, in bytes
1993  * @rxbuf: buffer into which data will be read (need not be dma-safe)
1994  * @n_rx: size of rxbuf, in bytes
1995  * Context: can sleep
1996  *
1997  * This performs a half duplex MicroWire style transaction with the
1998  * device, sending txbuf and then reading rxbuf.  The return value
1999  * is zero for success, else a negative errno status code.
2000  * This call may only be used from a context that may sleep.
2001  *
2002  * Parameters to this routine are always copied using a small buffer;
2003  * portable code should never use this for more than 32 bytes.
2004  * Performance-sensitive or bulk transfer code should instead use
2005  * spi_{async,sync}() calls with dma-safe buffers.
2006  */
2007 int spi_write_then_read(struct spi_device *spi,
2008                 const void *txbuf, unsigned n_tx,
2009                 void *rxbuf, unsigned n_rx)
2010 {
2011         static DEFINE_MUTEX(lock);
2012
2013         int                     status;
2014         struct spi_message      message;
2015         struct spi_transfer     x[2];
2016         u8                      *local_buf;
2017
2018         /* Use preallocated DMA-safe buffer if we can.  We can't avoid
2019          * copying here, (as a pure convenience thing), but we can
2020          * keep heap costs out of the hot path unless someone else is
2021          * using the pre-allocated buffer or the transfer is too large.
2022          */
2023         if ((n_tx + n_rx) > SPI_BUFSIZ || !mutex_trylock(&lock)) {
2024                 local_buf = kmalloc(max((unsigned)SPI_BUFSIZ, n_tx + n_rx),
2025                                     GFP_KERNEL | GFP_DMA);
2026                 if (!local_buf)
2027                         return -ENOMEM;
2028         } else {
2029                 local_buf = buf;
2030         }
2031
2032         spi_message_init(&message);
2033         memset(x, 0, sizeof(x));
2034         if (n_tx) {
2035                 x[0].len = n_tx;
2036                 spi_message_add_tail(&x[0], &message);
2037         }
2038         if (n_rx) {
2039                 x[1].len = n_rx;
2040                 spi_message_add_tail(&x[1], &message);
2041         }
2042
2043         memcpy(local_buf, txbuf, n_tx);
2044         x[0].tx_buf = local_buf;
2045         x[1].rx_buf = local_buf + n_tx;
2046
2047         /* do the i/o */
2048         status = spi_sync(spi, &message);
2049         if (status == 0)
2050                 memcpy(rxbuf, x[1].rx_buf, n_rx);
2051
2052         if (x[0].tx_buf == buf)
2053                 mutex_unlock(&lock);
2054         else
2055                 kfree(local_buf);
2056
2057         return status;
2058 }
2059 EXPORT_SYMBOL_GPL(spi_write_then_read);
2060
2061 /*-------------------------------------------------------------------------*/
2062
2063 static int __init spi_init(void)
2064 {
2065         int     status;
2066
2067         buf = kmalloc(SPI_BUFSIZ, GFP_KERNEL);
2068         if (!buf) {
2069                 status = -ENOMEM;
2070                 goto err0;
2071         }
2072
2073         status = bus_register(&spi_bus_type);
2074         if (status < 0)
2075                 goto err1;
2076
2077         status = class_register(&spi_master_class);
2078         if (status < 0)
2079                 goto err2;
2080         return 0;
2081
2082 err2:
2083         bus_unregister(&spi_bus_type);
2084 err1:
2085         kfree(buf);
2086         buf = NULL;
2087 err0:
2088         return status;
2089 }
2090
2091 /* board_info is normally registered in arch_initcall(),
2092  * but even essential drivers wait till later
2093  *
2094  * REVISIT only boardinfo really needs static linking. the rest (device and
2095  * driver registration) _could_ be dynamically linked (modular) ... costs
2096  * include needing to have boardinfo data structures be much more public.
2097  */
2098 postcore_initcall(spi_init);
2099