Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
spi.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005 David Brownell
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17  */
18 
19 #ifndef __LINUX_SPI_H
20 #define __LINUX_SPI_H
21 
22 #include <linux/device.h>
23 #include <linux/mod_devicetable.h>
24 #include <linux/slab.h>
25 #include <linux/kthread.h>
26 
27 /*
28  * INTERFACES between SPI master-side drivers and SPI infrastructure.
29  * (There's no SPI slave support for Linux yet...)
30  */
31 extern struct bus_type spi_bus_type;
32 
70 struct spi_device {
71  struct device dev;
72  struct spi_master *master;
76 #define SPI_CPHA 0x01 /* clock phase */
77 #define SPI_CPOL 0x02 /* clock polarity */
78 #define SPI_MODE_0 (0|0) /* (original MicroWire) */
79 #define SPI_MODE_1 (0|SPI_CPHA)
80 #define SPI_MODE_2 (SPI_CPOL|0)
81 #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA)
82 #define SPI_CS_HIGH 0x04 /* chipselect active high? */
83 #define SPI_LSB_FIRST 0x08 /* per-word bits-on-wire */
84 #define SPI_3WIRE 0x10 /* SI/SO signals shared */
85 #define SPI_LOOP 0x20 /* loopback mode */
86 #define SPI_NO_CS 0x40 /* 1 dev/bus, no chipselect */
87 #define SPI_READY 0x80 /* slave pulls low to pause */
89  int irq;
93 
94  /*
95  * likely need more hooks for more protocol options affecting how
96  * the controller talks to each chip, like:
97  * - memory packing (12 bit samples into low bits, others zeroed)
98  * - priority
99  * - drop chipselect after each word
100  * - chipselect delays
101  * - ...
102  */
103 };
104 
105 static inline struct spi_device *to_spi_device(struct device *dev)
106 {
107  return dev ? container_of(dev, struct spi_device, dev) : NULL;
108 }
109 
110 /* most drivers won't need to care about device refcounting */
111 static inline struct spi_device *spi_dev_get(struct spi_device *spi)
112 {
113  return (spi && get_device(&spi->dev)) ? spi : NULL;
114 }
115 
116 static inline void spi_dev_put(struct spi_device *spi)
117 {
118  if (spi)
119  put_device(&spi->dev);
120 }
121 
122 /* ctldata is for the bus_master driver's runtime state */
123 static inline void *spi_get_ctldata(struct spi_device *spi)
124 {
125  return spi->controller_state;
126 }
127 
128 static inline void spi_set_ctldata(struct spi_device *spi, void *state)
129 {
130  spi->controller_state = state;
131 }
132 
133 /* device driver data */
134 
135 static inline void spi_set_drvdata(struct spi_device *spi, void *data)
136 {
137  dev_set_drvdata(&spi->dev, data);
138 }
139 
140 static inline void *spi_get_drvdata(struct spi_device *spi)
141 {
142  return dev_get_drvdata(&spi->dev);
143 }
144 
145 struct spi_message;
146 
147 
148 
176 struct spi_driver {
177  const struct spi_device_id *id_table;
178  int (*probe)(struct spi_device *spi);
179  int (*remove)(struct spi_device *spi);
181  int (*suspend)(struct spi_device *spi, pm_message_t mesg);
182  int (*resume)(struct spi_device *spi);
184 };
185 
186 static inline struct spi_driver *to_spi_driver(struct device_driver *drv)
187 {
188  return drv ? container_of(drv, struct spi_driver, driver) : NULL;
189 }
190 
191 extern int spi_register_driver(struct spi_driver *sdrv);
192 
198 static inline void spi_unregister_driver(struct spi_driver *sdrv)
199 {
200  if (sdrv)
201  driver_unregister(&sdrv->driver);
202 }
203 
212 #define module_spi_driver(__spi_driver) \
213  module_driver(__spi_driver, spi_register_driver, \
214  spi_unregister_driver)
215 
272 struct spi_master {
273  struct device dev;
274 
275  struct list_head list;
276 
277  /* other than negative (== assign one dynamically), bus_num is fully
278  * board-specific. usually that simplifies to being SOC-specific.
279  * example: one SOC has three SPI controllers, numbered 0..2,
280  * and one board's schematics might show it using SPI-2. software
281  * would normally use bus_num=2 for that controller.
282  */
284 
285  /* chipselects will be integral to many controllers; some others
286  * might use board-specific GPIOs.
287  */
289 
290  /* some SPI controllers pose alignment requirements on DMAable
291  * buffers; let protocol drivers know about these requirements.
292  */
294 
295  /* spi_device.mode flags understood by this controller driver */
297 
298  /* other constraints relevant to this driver */
300 #define SPI_MASTER_HALF_DUPLEX BIT(0) /* can't do full duplex */
301 #define SPI_MASTER_NO_RX BIT(1) /* can't do buffer read */
302 #define SPI_MASTER_NO_TX BIT(2) /* can't do buffer write */
303 
304  /* lock and mutex for SPI bus locking */
307 
308  /* flag indicating that the SPI bus is locked for exclusive use */
310 
311  /* Setup mode and clock, etc (spi driver may call many times).
312  *
313  * IMPORTANT: this may be called when transfers to another
314  * device are active. DO NOT UPDATE SHARED REGISTERS in ways
315  * which could break those transfers.
316  */
317  int (*setup)(struct spi_device *spi);
318 
319  /* bidirectional bulk transfers
320  *
321  * + The transfer() method may not sleep; its main role is
322  * just to add the message to the queue.
323  * + For now there's no remove-from-queue operation, or
324  * any other request management
325  * + To a given spi_device, message queueing is pure fifo
326  *
327  * + The master's main job is to process its message queue,
328  * selecting a chip then transferring data
329  * + If there are multiple spi_device children, the i/o queue
330  * arbitration algorithm is unspecified (round robin, fifo,
331  * priority, reservations, preemption, etc)
332  *
333  * + Chipselect stays active during the entire message
334  * (unless modified by spi_transfer.cs_change != 0).
335  * + The message transfers use clock and SPI mode parameters
336  * previously established by setup() for this device
337  */
339  struct spi_message *mesg);
340 
341  /* called on release() to free memory provided by spi_master */
342  void (*cleanup)(struct spi_device *spi);
343 
344  /*
345  * These hooks are for drivers that want to use the generic
346  * master transfer queueing mechanism. If these are used, the
347  * transfer() function above must NOT be specified by the driver.
348  * Over time we expect SPI drivers to be phased over to this API.
349  */
350  bool queued;
355  struct list_head queue;
357  bool busy;
358  bool running;
359  bool rt;
360 
363  struct spi_message *mesg);
365 };
366 
367 static inline void *spi_master_get_devdata(struct spi_master *master)
368 {
369  return dev_get_drvdata(&master->dev);
370 }
371 
372 static inline void spi_master_set_devdata(struct spi_master *master, void *data)
373 {
374  dev_set_drvdata(&master->dev, data);
375 }
376 
377 static inline struct spi_master *spi_master_get(struct spi_master *master)
378 {
379  if (!master || !get_device(&master->dev))
380  return NULL;
381  return master;
382 }
383 
384 static inline void spi_master_put(struct spi_master *master)
385 {
386  if (master)
387  put_device(&master->dev);
388 }
389 
390 /* PM calls that need to be issued by the driver */
391 extern int spi_master_suspend(struct spi_master *master);
392 extern int spi_master_resume(struct spi_master *master);
393 
394 /* Calls the driver make to interact with the message queue */
395 extern struct spi_message *spi_get_next_queued_message(struct spi_master *master);
396 extern void spi_finalize_current_message(struct spi_master *master);
397 
398 /* the spi driver core manages memory for the spi_master classdev */
399 extern struct spi_master *
400 spi_alloc_master(struct device *host, unsigned size);
401 
402 extern int spi_register_master(struct spi_master *master);
403 extern void spi_unregister_master(struct spi_master *master);
404 
405 extern struct spi_master *spi_busnum_to_master(u16 busnum);
406 
407 /*---------------------------------------------------------------------------*/
408 
409 /*
410  * I/O INTERFACE between SPI controller and protocol drivers
411  *
412  * Protocol drivers use a queue of spi_messages, each transferring data
413  * between the controller and memory buffers.
414  *
415  * The spi_messages themselves consist of a series of read+write transfer
416  * segments. Those segments always read the same number of bits as they
417  * write; but one or the other is easily ignored by passing a null buffer
418  * pointer. (This is unlike most types of I/O API, because SPI hardware
419  * is full duplex.)
420  *
421  * NOTE: Allocation of spi_transfer and spi_message memory is entirely
422  * up to the protocol driver, which guarantees the integrity of both (as
423  * well as the data buffers) for as long as the message is queued.
424  */
425 
492 struct spi_transfer {
493  /* it's ok if tx_buf == rx_buf (right?)
494  * for MicroWire, one buffer must be null
495  * buffers must work with dma_*map_single() calls, unless
496  * spi_message.is_dma_mapped reports a pre-existing mapping
497  */
498  const void *tx_buf;
499  void *rx_buf;
500  unsigned len;
501 
504 
505  unsigned cs_change:1;
509 
511 };
512 
541 struct spi_message {
543 
544  struct spi_device *spi;
545 
546  unsigned is_dma_mapped:1;
547 
548  /* REVISIT: we might want a flag affecting the behavior of the
549  * last transfer ... allowing things like "read 16 bit length L"
550  * immediately followed by "read L bytes". Basically imposing
551  * a specific message scheduling algorithm.
552  *
553  * Some controller drivers (message-at-a-time queue processing)
554  * could provide that as their default scheduling algorithm. But
555  * others (with multi-message pipelines) could need a flag to
556  * tell them about such special cases.
557  */
558 
559  /* completion is reported through a callback */
560  void (*complete)(void *context);
561  void *context;
562  unsigned actual_length;
563  int status;
564 
565  /* for optional use by whatever driver currently owns the
566  * spi_message ... between calls to spi_async and then later
567  * complete(), that's the spi_master controller driver.
568  */
569  struct list_head queue;
570  void *state;
571 };
572 
573 static inline void spi_message_init(struct spi_message *m)
574 {
575  memset(m, 0, sizeof *m);
576  INIT_LIST_HEAD(&m->transfers);
577 }
578 
579 static inline void
580 spi_message_add_tail(struct spi_transfer *t, struct spi_message *m)
581 {
583 }
584 
585 static inline void
586 spi_transfer_del(struct spi_transfer *t)
587 {
588  list_del(&t->transfer_list);
589 }
590 
591 /* It's fine to embed message and transaction structures in other data
592  * structures so long as you don't free them while they're in use.
593  */
594 
595 static inline struct spi_message *spi_message_alloc(unsigned ntrans, gfp_t flags)
596 {
597  struct spi_message *m;
598 
599  m = kzalloc(sizeof(struct spi_message)
600  + ntrans * sizeof(struct spi_transfer),
601  flags);
602  if (m) {
603  unsigned i;
604  struct spi_transfer *t = (struct spi_transfer *)(m + 1);
605 
606  INIT_LIST_HEAD(&m->transfers);
607  for (i = 0; i < ntrans; i++, t++)
608  spi_message_add_tail(t, m);
609  }
610  return m;
611 }
612 
613 static inline void spi_message_free(struct spi_message *m)
614 {
615  kfree(m);
616 }
617 
618 extern int spi_setup(struct spi_device *spi);
619 extern int spi_async(struct spi_device *spi, struct spi_message *message);
620 extern int spi_async_locked(struct spi_device *spi,
621  struct spi_message *message);
622 
623 /*---------------------------------------------------------------------------*/
624 
625 /* All these synchronous SPI transfer routines are utilities layered
626  * over the core async transfer primitive. Here, "synchronous" means
627  * they will sleep uninterruptibly until the async transfer completes.
628  */
629 
630 extern int spi_sync(struct spi_device *spi, struct spi_message *message);
631 extern int spi_sync_locked(struct spi_device *spi, struct spi_message *message);
632 extern int spi_bus_lock(struct spi_master *master);
633 extern int spi_bus_unlock(struct spi_master *master);
634 
645 static inline int
646 spi_write(struct spi_device *spi, const void *buf, size_t len)
647 {
648  struct spi_transfer t = {
649  .tx_buf = buf,
650  .len = len,
651  };
652  struct spi_message m;
653 
654  spi_message_init(&m);
655  spi_message_add_tail(&t, &m);
656  return spi_sync(spi, &m);
657 }
658 
669 static inline int
670 spi_read(struct spi_device *spi, void *buf, size_t len)
671 {
672  struct spi_transfer t = {
673  .rx_buf = buf,
674  .len = len,
675  };
676  struct spi_message m;
677 
678  spi_message_init(&m);
679  spi_message_add_tail(&t, &m);
680  return spi_sync(spi, &m);
681 }
682 
683 /* this copies txbuf and rxbuf data; for small transfers only! */
684 extern int spi_write_then_read(struct spi_device *spi,
685  const void *txbuf, unsigned n_tx,
686  void *rxbuf, unsigned n_rx);
687 
698 static inline ssize_t spi_w8r8(struct spi_device *spi, u8 cmd)
699 {
700  ssize_t status;
701  u8 result;
702 
703  status = spi_write_then_read(spi, &cmd, 1, &result, 1);
704 
705  /* return negative errno or unsigned value */
706  return (status < 0) ? status : result;
707 }
708 
722 static inline ssize_t spi_w8r16(struct spi_device *spi, u8 cmd)
723 {
724  ssize_t status;
725  u16 result;
726 
727  status = spi_write_then_read(spi, &cmd, 1, (u8 *) &result, 2);
728 
729  /* return negative errno or unsigned value */
730  return (status < 0) ? status : result;
731 }
732 
733 /*---------------------------------------------------------------------------*/
734 
735 /*
736  * INTERFACE between board init code and SPI infrastructure.
737  *
738  * No SPI driver ever sees these SPI device table segments, but
739  * it's how the SPI core (or adapters that get hotplugged) grows
740  * the driver model tree.
741  *
742  * As a rule, SPI devices can't be probed. Instead, board init code
743  * provides a table listing the devices which are present, with enough
744  * information to bind and set up the device's driver. There's basic
745  * support for nonstatic configurations too; enough to handle adding
746  * parport adapters, or microcontrollers acting as USB-to-SPI bridges.
747  */
748 
781  /* the device name and module name are coupled, like platform_bus;
782  * "modalias" is normally the driver name.
783  *
784  * platform_data goes to spi_device.dev.platform_data,
785  * controller_data goes to spi_device.controller_data,
786  * irq is copied too
787  */
789  const void *platform_data;
791  int irq;
792 
793  /* slower signaling on noisy or low voltage boards */
795 
796 
797  /* bus_num is board specific and matches the bus_num of some
798  * spi_master that will probably be registered later.
799  *
800  * chip_select reflects how this chip is wired to that master;
801  * it's less than num_chipselect.
802  */
805 
806  /* mode becomes spi_device.mode, and is essential for chips
807  * where the default of SPI_CS_HIGH = 0 is wrong.
808  */
810 
811  /* ... may need additional spi_device chip config data here.
812  * avoid stuff protocol drivers can set; but include stuff
813  * needed to behave without being bound to a driver:
814  * - quirks like clock rate mattering when not selected
815  */
816 };
817 
818 #ifdef CONFIG_SPI
819 extern int
820 spi_register_board_info(struct spi_board_info const *info, unsigned n);
821 #else
822 /* board init code may ignore whether SPI is configured or not */
823 static inline int
824 spi_register_board_info(struct spi_board_info const *info, unsigned n)
825  { return 0; }
826 #endif
827 
828 
829 /* If you're hotplugging an adapter with devices (parport, usb, etc)
830  * use spi_new_device() to describe each device. You can also call
831  * spi_unregister_device() to start making that device vanish, but
832  * normally that would be handled by spi_unregister_master().
833  *
834  * You can also use spi_alloc_device() and spi_add_device() to use a two
835  * stage registration sequence for each spi_device. This gives the caller
836  * some more control over the spi_device structure before it is registered,
837  * but requires that caller to initialize fields that would otherwise
838  * be defined using the board info.
839  */
840 extern struct spi_device *
841 spi_alloc_device(struct spi_master *master);
842 
843 extern int
844 spi_add_device(struct spi_device *spi);
845 
846 extern struct spi_device *
847 spi_new_device(struct spi_master *, struct spi_board_info *);
848 
849 static inline void
850 spi_unregister_device(struct spi_device *spi)
851 {
852  if (spi)
853  device_unregister(&spi->dev);
854 }
855 
856 extern const struct spi_device_id *
857 spi_get_device_id(const struct spi_device *sdev);
858 
859 #endif /* __LINUX_SPI_H */