1 /* SPDX-License-Identifier: GPL-2.0-or-later 2 * 3 * Copyright (C) 2005 David Brownell 4 */ 5 6 #ifndef __LINUX_SPI_H 7 #define __LINUX_SPI_H 8 9 #include <linux/device.h> 10 #include <linux/mod_devicetable.h> 11 #include <linux/slab.h> 12 #include <linux/kthread.h> 13 #include <linux/completion.h> 14 #include <linux/scatterlist.h> 15 16 struct dma_chan; 17 struct property_entry; 18 struct spi_controller; 19 struct spi_transfer; 20 struct spi_controller_mem_ops; 21 22 /* 23 * INTERFACES between SPI master-side drivers and SPI slave protocol handlers, 24 * and SPI infrastructure. 25 */ 26 extern struct bus_type spi_bus_type; 27 28 /** 29 * struct spi_statistics - statistics for spi transfers 30 * @lock: lock protecting this structure 31 * 32 * @messages: number of spi-messages handled 33 * @transfers: number of spi_transfers handled 34 * @errors: number of errors during spi_transfer 35 * @timedout: number of timeouts during spi_transfer 36 * 37 * @spi_sync: number of times spi_sync is used 38 * @spi_sync_immediate: 39 * number of times spi_sync is executed immediately 40 * in calling context without queuing and scheduling 41 * @spi_async: number of times spi_async is used 42 * 43 * @bytes: number of bytes transferred to/from device 44 * @bytes_tx: number of bytes sent to device 45 * @bytes_rx: number of bytes received from device 46 * 47 * @transfer_bytes_histo: 48 * transfer bytes histogramm 49 * 50 * @transfers_split_maxsize: 51 * number of transfers that have been split because of 52 * maxsize limit 53 */ 54 struct spi_statistics { 55 spinlock_t lock; /* lock for the whole structure */ 56 57 unsigned long messages; 58 unsigned long transfers; 59 unsigned long errors; 60 unsigned long timedout; 61 62 unsigned long spi_sync; 63 unsigned long spi_sync_immediate; 64 unsigned long spi_async; 65 66 unsigned long long bytes; 67 unsigned long long bytes_rx; 68 unsigned long long bytes_tx; 69 70 #define SPI_STATISTICS_HISTO_SIZE 17 71 unsigned long transfer_bytes_histo[SPI_STATISTICS_HISTO_SIZE]; 72 73 unsigned long transfers_split_maxsize; 74 }; 75 76 void spi_statistics_add_transfer_stats(struct spi_statistics *stats, 77 struct spi_transfer *xfer, 78 struct spi_controller *ctlr); 79 80 #define SPI_STATISTICS_ADD_TO_FIELD(stats, field, count) \ 81 do { \ 82 unsigned long flags; \ 83 spin_lock_irqsave(&(stats)->lock, flags); \ 84 (stats)->field += count; \ 85 spin_unlock_irqrestore(&(stats)->lock, flags); \ 86 } while (0) 87 88 #define SPI_STATISTICS_INCREMENT_FIELD(stats, field) \ 89 SPI_STATISTICS_ADD_TO_FIELD(stats, field, 1) 90 91 /** 92 * struct spi_device - Controller side proxy for an SPI slave device 93 * @dev: Driver model representation of the device. 94 * @controller: SPI controller used with the device. 95 * @master: Copy of controller, for backwards compatibility. 96 * @max_speed_hz: Maximum clock rate to be used with this chip 97 * (on this board); may be changed by the device's driver. 98 * The spi_transfer.speed_hz can override this for each transfer. 99 * @chip_select: Chipselect, distinguishing chips handled by @controller. 100 * @mode: The spi mode defines how data is clocked out and in. 101 * This may be changed by the device's driver. 102 * The "active low" default for chipselect mode can be overridden 103 * (by specifying SPI_CS_HIGH) as can the "MSB first" default for 104 * each word in a transfer (by specifying SPI_LSB_FIRST). 105 * @bits_per_word: Data transfers involve one or more words; word sizes 106 * like eight or 12 bits are common. In-memory wordsizes are 107 * powers of two bytes (e.g. 20 bit samples use 32 bits). 108 * This may be changed by the device's driver, or left at the 109 * default (0) indicating protocol words are eight bit bytes. 110 * The spi_transfer.bits_per_word can override this for each transfer. 111 * @irq: Negative, or the number passed to request_irq() to receive 112 * interrupts from this device. 113 * @controller_state: Controller's runtime state 114 * @controller_data: Board-specific definitions for controller, such as 115 * FIFO initialization parameters; from board_info.controller_data 116 * @modalias: Name of the driver to use with this device, or an alias 117 * for that name. This appears in the sysfs "modalias" attribute 118 * for driver coldplugging, and in uevents used for hotplugging 119 * @cs_gpio: gpio number of the chipselect line (optional, -ENOENT when 120 * not using a GPIO line) 121 * 122 * @statistics: statistics for the spi_device 123 * 124 * A @spi_device is used to interchange data between an SPI slave 125 * (usually a discrete chip) and CPU memory. 126 * 127 * In @dev, the platform_data is used to hold information about this 128 * device that's meaningful to the device's protocol driver, but not 129 * to its controller. One example might be an identifier for a chip 130 * variant with slightly different functionality; another might be 131 * information about how this particular board wires the chip's pins. 132 */ 133 struct spi_device { 134 struct device dev; 135 struct spi_controller *controller; 136 struct spi_controller *master; /* compatibility layer */ 137 u32 max_speed_hz; 138 u8 chip_select; 139 u8 bits_per_word; 140 u16 mode; 141 #define SPI_CPHA 0x01 /* clock phase */ 142 #define SPI_CPOL 0x02 /* clock polarity */ 143 #define SPI_MODE_0 (0|0) /* (original MicroWire) */ 144 #define SPI_MODE_1 (0|SPI_CPHA) 145 #define SPI_MODE_2 (SPI_CPOL|0) 146 #define SPI_MODE_3 (SPI_CPOL|SPI_CPHA) 147 #define SPI_CS_HIGH 0x04 /* chipselect active high? */ 148 #define SPI_LSB_FIRST 0x08 /* per-word bits-on-wire */ 149 #define SPI_3WIRE 0x10 /* SI/SO signals shared */ 150 #define SPI_LOOP 0x20 /* loopback mode */ 151 #define SPI_NO_CS 0x40 /* 1 dev/bus, no chipselect */ 152 #define SPI_READY 0x80 /* slave pulls low to pause */ 153 #define SPI_TX_DUAL 0x100 /* transmit with 2 wires */ 154 #define SPI_TX_QUAD 0x200 /* transmit with 4 wires */ 155 #define SPI_RX_DUAL 0x400 /* receive with 2 wires */ 156 #define SPI_RX_QUAD 0x800 /* receive with 4 wires */ 157 #define SPI_CS_WORD 0x1000 /* toggle cs after each word */ 158 int irq; 159 void *controller_state; 160 void *controller_data; 161 char modalias[SPI_NAME_SIZE]; 162 const char *driver_override; 163 int cs_gpio; /* chip select gpio */ 164 165 /* the statistics */ 166 struct spi_statistics statistics; 167 168 /* 169 * likely need more hooks for more protocol options affecting how 170 * the controller talks to each chip, like: 171 * - memory packing (12 bit samples into low bits, others zeroed) 172 * - priority 173 * - chipselect delays 174 * - ... 175 */ 176 }; 177 178 static inline struct spi_device *to_spi_device(struct device *dev) 179 { 180 return dev ? container_of(dev, struct spi_device, dev) : NULL; 181 } 182 183 /* most drivers won't need to care about device refcounting */ 184 static inline struct spi_device *spi_dev_get(struct spi_device *spi) 185 { 186 return (spi && get_device(&spi->dev)) ? spi : NULL; 187 } 188 189 static inline void spi_dev_put(struct spi_device *spi) 190 { 191 if (spi) 192 put_device(&spi->dev); 193 } 194 195 /* ctldata is for the bus_controller driver's runtime state */ 196 static inline void *spi_get_ctldata(struct spi_device *spi) 197 { 198 return spi->controller_state; 199 } 200 201 static inline void spi_set_ctldata(struct spi_device *spi, void *state) 202 { 203 spi->controller_state = state; 204 } 205 206 /* device driver data */ 207 208 static inline void spi_set_drvdata(struct spi_device *spi, void *data) 209 { 210 dev_set_drvdata(&spi->dev, data); 211 } 212 213 static inline void *spi_get_drvdata(struct spi_device *spi) 214 { 215 return dev_get_drvdata(&spi->dev); 216 } 217 218 struct spi_message; 219 struct spi_transfer; 220 221 /** 222 * struct spi_driver - Host side "protocol" driver 223 * @id_table: List of SPI devices supported by this driver 224 * @probe: Binds this driver to the spi device. Drivers can verify 225 * that the device is actually present, and may need to configure 226 * characteristics (such as bits_per_word) which weren't needed for 227 * the initial configuration done during system setup. 228 * @remove: Unbinds this driver from the spi device 229 * @shutdown: Standard shutdown callback used during system state 230 * transitions such as powerdown/halt and kexec 231 * @driver: SPI device drivers should initialize the name and owner 232 * field of this structure. 233 * 234 * This represents the kind of device driver that uses SPI messages to 235 * interact with the hardware at the other end of a SPI link. It's called 236 * a "protocol" driver because it works through messages rather than talking 237 * directly to SPI hardware (which is what the underlying SPI controller 238 * driver does to pass those messages). These protocols are defined in the 239 * specification for the device(s) supported by the driver. 240 * 241 * As a rule, those device protocols represent the lowest level interface 242 * supported by a driver, and it will support upper level interfaces too. 243 * Examples of such upper levels include frameworks like MTD, networking, 244 * MMC, RTC, filesystem character device nodes, and hardware monitoring. 245 */ 246 struct spi_driver { 247 const struct spi_device_id *id_table; 248 int (*probe)(struct spi_device *spi); 249 int (*remove)(struct spi_device *spi); 250 void (*shutdown)(struct spi_device *spi); 251 struct device_driver driver; 252 }; 253 254 static inline struct spi_driver *to_spi_driver(struct device_driver *drv) 255 { 256 return drv ? container_of(drv, struct spi_driver, driver) : NULL; 257 } 258 259 extern int __spi_register_driver(struct module *owner, struct spi_driver *sdrv); 260 261 /** 262 * spi_unregister_driver - reverse effect of spi_register_driver 263 * @sdrv: the driver to unregister 264 * Context: can sleep 265 */ 266 static inline void spi_unregister_driver(struct spi_driver *sdrv) 267 { 268 if (sdrv) 269 driver_unregister(&sdrv->driver); 270 } 271 272 /* use a define to avoid include chaining to get THIS_MODULE */ 273 #define spi_register_driver(driver) \ 274 __spi_register_driver(THIS_MODULE, driver) 275 276 /** 277 * module_spi_driver() - Helper macro for registering a SPI driver 278 * @__spi_driver: spi_driver struct 279 * 280 * Helper macro for SPI drivers which do not do anything special in module 281 * init/exit. This eliminates a lot of boilerplate. Each module may only 282 * use this macro once, and calling it replaces module_init() and module_exit() 283 */ 284 #define module_spi_driver(__spi_driver) \ 285 module_driver(__spi_driver, spi_register_driver, \ 286 spi_unregister_driver) 287 288 /** 289 * struct spi_controller - interface to SPI master or slave controller 290 * @dev: device interface to this driver 291 * @list: link with the global spi_controller list 292 * @bus_num: board-specific (and often SOC-specific) identifier for a 293 * given SPI controller. 294 * @num_chipselect: chipselects are used to distinguish individual 295 * SPI slaves, and are numbered from zero to num_chipselects. 296 * each slave has a chipselect signal, but it's common that not 297 * every chipselect is connected to a slave. 298 * @dma_alignment: SPI controller constraint on DMA buffers alignment. 299 * @mode_bits: flags understood by this controller driver 300 * @bits_per_word_mask: A mask indicating which values of bits_per_word are 301 * supported by the driver. Bit n indicates that a bits_per_word n+1 is 302 * supported. If set, the SPI core will reject any transfer with an 303 * unsupported bits_per_word. If not set, this value is simply ignored, 304 * and it's up to the individual driver to perform any validation. 305 * @min_speed_hz: Lowest supported transfer speed 306 * @max_speed_hz: Highest supported transfer speed 307 * @flags: other constraints relevant to this driver 308 * @slave: indicates that this is an SPI slave controller 309 * @max_transfer_size: function that returns the max transfer size for 310 * a &spi_device; may be %NULL, so the default %SIZE_MAX will be used. 311 * @max_message_size: function that returns the max message size for 312 * a &spi_device; may be %NULL, so the default %SIZE_MAX will be used. 313 * @io_mutex: mutex for physical bus access 314 * @bus_lock_spinlock: spinlock for SPI bus locking 315 * @bus_lock_mutex: mutex for exclusion of multiple callers 316 * @bus_lock_flag: indicates that the SPI bus is locked for exclusive use 317 * @setup: updates the device mode and clocking records used by a 318 * device's SPI controller; protocol code may call this. This 319 * must fail if an unrecognized or unsupported mode is requested. 320 * It's always safe to call this unless transfers are pending on 321 * the device whose settings are being modified. 322 * @transfer: adds a message to the controller's transfer queue. 323 * @cleanup: frees controller-specific state 324 * @can_dma: determine whether this controller supports DMA 325 * @queued: whether this controller is providing an internal message queue 326 * @kworker: thread struct for message pump 327 * @kworker_task: pointer to task for message pump kworker thread 328 * @pump_messages: work struct for scheduling work to the message pump 329 * @queue_lock: spinlock to syncronise access to message queue 330 * @queue: message queue 331 * @idling: the device is entering idle state 332 * @cur_msg: the currently in-flight message 333 * @cur_msg_prepared: spi_prepare_message was called for the currently 334 * in-flight message 335 * @cur_msg_mapped: message has been mapped for DMA 336 * @xfer_completion: used by core transfer_one_message() 337 * @busy: message pump is busy 338 * @running: message pump is running 339 * @rt: whether this queue is set to run as a realtime task 340 * @auto_runtime_pm: the core should ensure a runtime PM reference is held 341 * while the hardware is prepared, using the parent 342 * device for the spidev 343 * @max_dma_len: Maximum length of a DMA transfer for the device. 344 * @prepare_transfer_hardware: a message will soon arrive from the queue 345 * so the subsystem requests the driver to prepare the transfer hardware 346 * by issuing this call 347 * @transfer_one_message: the subsystem calls the driver to transfer a single 348 * message while queuing transfers that arrive in the meantime. When the 349 * driver is finished with this message, it must call 350 * spi_finalize_current_message() so the subsystem can issue the next 351 * message 352 * @unprepare_transfer_hardware: there are currently no more messages on the 353 * queue so the subsystem notifies the driver that it may relax the 354 * hardware by issuing this call 355 * @set_cs: set the logic level of the chip select line. May be called 356 * from interrupt context. 357 * @prepare_message: set up the controller to transfer a single message, 358 * for example doing DMA mapping. Called from threaded 359 * context. 360 * @transfer_one: transfer a single spi_transfer. 361 * - return 0 if the transfer is finished, 362 * - return 1 if the transfer is still in progress. When 363 * the driver is finished with this transfer it must 364 * call spi_finalize_current_transfer() so the subsystem 365 * can issue the next transfer. Note: transfer_one and 366 * transfer_one_message are mutually exclusive; when both 367 * are set, the generic subsystem does not call your 368 * transfer_one callback. 369 * @handle_err: the subsystem calls the driver to handle an error that occurs 370 * in the generic implementation of transfer_one_message(). 371 * @mem_ops: optimized/dedicated operations for interactions with SPI memory. 372 * This field is optional and should only be implemented if the 373 * controller has native support for memory like operations. 374 * @unprepare_message: undo any work done by prepare_message(). 375 * @slave_abort: abort the ongoing transfer request on an SPI slave controller 376 * @cs_gpios: Array of GPIOs to use as chip select lines; one per CS 377 * number. Any individual value may be -ENOENT for CS lines that 378 * are not GPIOs (driven by the SPI controller itself). 379 * @statistics: statistics for the spi_controller 380 * @dma_tx: DMA transmit channel 381 * @dma_rx: DMA receive channel 382 * @dummy_rx: dummy receive buffer for full-duplex devices 383 * @dummy_tx: dummy transmit buffer for full-duplex devices 384 * @fw_translate_cs: If the boot firmware uses different numbering scheme 385 * what Linux expects, this optional hook can be used to translate 386 * between the two. 387 * 388 * Each SPI controller can communicate with one or more @spi_device 389 * children. These make a small bus, sharing MOSI, MISO and SCK signals 390 * but not chip select signals. Each device may be configured to use a 391 * different clock rate, since those shared signals are ignored unless 392 * the chip is selected. 393 * 394 * The driver for an SPI controller manages access to those devices through 395 * a queue of spi_message transactions, copying data between CPU memory and 396 * an SPI slave device. For each such message it queues, it calls the 397 * message's completion function when the transaction completes. 398 */ 399 struct spi_controller { 400 struct device dev; 401 402 struct list_head list; 403 404 /* other than negative (== assign one dynamically), bus_num is fully 405 * board-specific. usually that simplifies to being SOC-specific. 406 * example: one SOC has three SPI controllers, numbered 0..2, 407 * and one board's schematics might show it using SPI-2. software 408 * would normally use bus_num=2 for that controller. 409 */ 410 s16 bus_num; 411 412 /* chipselects will be integral to many controllers; some others 413 * might use board-specific GPIOs. 414 */ 415 u16 num_chipselect; 416 417 /* some SPI controllers pose alignment requirements on DMAable 418 * buffers; let protocol drivers know about these requirements. 419 */ 420 u16 dma_alignment; 421 422 /* spi_device.mode flags understood by this controller driver */ 423 u16 mode_bits; 424 425 /* bitmask of supported bits_per_word for transfers */ 426 u32 bits_per_word_mask; 427 #define SPI_BPW_MASK(bits) BIT((bits) - 1) 428 #define SPI_BIT_MASK(bits) (((bits) == 32) ? ~0U : (BIT(bits) - 1)) 429 #define SPI_BPW_RANGE_MASK(min, max) (SPI_BIT_MASK(max) - SPI_BIT_MASK(min - 1)) 430 431 /* limits on transfer speed */ 432 u32 min_speed_hz; 433 u32 max_speed_hz; 434 435 /* other constraints relevant to this driver */ 436 u16 flags; 437 #define SPI_CONTROLLER_HALF_DUPLEX BIT(0) /* can't do full duplex */ 438 #define SPI_CONTROLLER_NO_RX BIT(1) /* can't do buffer read */ 439 #define SPI_CONTROLLER_NO_TX BIT(2) /* can't do buffer write */ 440 #define SPI_CONTROLLER_MUST_RX BIT(3) /* requires rx */ 441 #define SPI_CONTROLLER_MUST_TX BIT(4) /* requires tx */ 442 443 #define SPI_MASTER_GPIO_SS BIT(5) /* GPIO CS must select slave */ 444 445 /* flag indicating this is an SPI slave controller */ 446 bool slave; 447 448 /* 449 * on some hardware transfer / message size may be constrained 450 * the limit may depend on device transfer settings 451 */ 452 size_t (*max_transfer_size)(struct spi_device *spi); 453 size_t (*max_message_size)(struct spi_device *spi); 454 455 /* I/O mutex */ 456 struct mutex io_mutex; 457 458 /* lock and mutex for SPI bus locking */ 459 spinlock_t bus_lock_spinlock; 460 struct mutex bus_lock_mutex; 461 462 /* flag indicating that the SPI bus is locked for exclusive use */ 463 bool bus_lock_flag; 464 465 /* Setup mode and clock, etc (spi driver may call many times). 466 * 467 * IMPORTANT: this may be called when transfers to another 468 * device are active. DO NOT UPDATE SHARED REGISTERS in ways 469 * which could break those transfers. 470 */ 471 int (*setup)(struct spi_device *spi); 472 473 /* bidirectional bulk transfers 474 * 475 * + The transfer() method may not sleep; its main role is 476 * just to add the message to the queue. 477 * + For now there's no remove-from-queue operation, or 478 * any other request management 479 * + To a given spi_device, message queueing is pure fifo 480 * 481 * + The controller's main job is to process its message queue, 482 * selecting a chip (for masters), then transferring data 483 * + If there are multiple spi_device children, the i/o queue 484 * arbitration algorithm is unspecified (round robin, fifo, 485 * priority, reservations, preemption, etc) 486 * 487 * + Chipselect stays active during the entire message 488 * (unless modified by spi_transfer.cs_change != 0). 489 * + The message transfers use clock and SPI mode parameters 490 * previously established by setup() for this device 491 */ 492 int (*transfer)(struct spi_device *spi, 493 struct spi_message *mesg); 494 495 /* called on release() to free memory provided by spi_controller */ 496 void (*cleanup)(struct spi_device *spi); 497 498 /* 499 * Used to enable core support for DMA handling, if can_dma() 500 * exists and returns true then the transfer will be mapped 501 * prior to transfer_one() being called. The driver should 502 * not modify or store xfer and dma_tx and dma_rx must be set 503 * while the device is prepared. 504 */ 505 bool (*can_dma)(struct spi_controller *ctlr, 506 struct spi_device *spi, 507 struct spi_transfer *xfer); 508 509 /* 510 * These hooks are for drivers that want to use the generic 511 * controller transfer queueing mechanism. If these are used, the 512 * transfer() function above must NOT be specified by the driver. 513 * Over time we expect SPI drivers to be phased over to this API. 514 */ 515 bool queued; 516 struct kthread_worker kworker; 517 struct task_struct *kworker_task; 518 struct kthread_work pump_messages; 519 spinlock_t queue_lock; 520 struct list_head queue; 521 struct spi_message *cur_msg; 522 bool idling; 523 bool busy; 524 bool running; 525 bool rt; 526 bool auto_runtime_pm; 527 bool cur_msg_prepared; 528 bool cur_msg_mapped; 529 struct completion xfer_completion; 530 size_t max_dma_len; 531 532 int (*prepare_transfer_hardware)(struct spi_controller *ctlr); 533 int (*transfer_one_message)(struct spi_controller *ctlr, 534 struct spi_message *mesg); 535 int (*unprepare_transfer_hardware)(struct spi_controller *ctlr); 536 int (*prepare_message)(struct spi_controller *ctlr, 537 struct spi_message *message); 538 int (*unprepare_message)(struct spi_controller *ctlr, 539 struct spi_message *message); 540 int (*slave_abort)(struct spi_controller *ctlr); 541 542 /* 543 * These hooks are for drivers that use a generic implementation 544 * of transfer_one_message() provied by the core. 545 */ 546 void (*set_cs)(struct spi_device *spi, bool enable); 547 int (*transfer_one)(struct spi_controller *ctlr, struct spi_device *spi, 548 struct spi_transfer *transfer); 549 void (*handle_err)(struct spi_controller *ctlr, 550 struct spi_message *message); 551 552 /* Optimized handlers for SPI memory-like operations. */ 553 const struct spi_controller_mem_ops *mem_ops; 554 555 /* gpio chip select */ 556 int *cs_gpios; 557 558 /* statistics */ 559 struct spi_statistics statistics; 560 561 /* DMA channels for use with core dmaengine helpers */ 562 struct dma_chan *dma_tx; 563 struct dma_chan *dma_rx; 564 565 /* dummy data for full duplex devices */ 566 void *dummy_rx; 567 void *dummy_tx; 568 569 int (*fw_translate_cs)(struct spi_controller *ctlr, unsigned cs); 570 }; 571 572 static inline void *spi_controller_get_devdata(struct spi_controller *ctlr) 573 { 574 return dev_get_drvdata(&ctlr->dev); 575 } 576 577 static inline void spi_controller_set_devdata(struct spi_controller *ctlr, 578 void *data) 579 { 580 dev_set_drvdata(&ctlr->dev, data); 581 } 582 583 static inline struct spi_controller *spi_controller_get(struct spi_controller *ctlr) 584 { 585 if (!ctlr || !get_device(&ctlr->dev)) 586 return NULL; 587 return ctlr; 588 } 589 590 static inline void spi_controller_put(struct spi_controller *ctlr) 591 { 592 if (ctlr) 593 put_device(&ctlr->dev); 594 } 595 596 static inline bool spi_controller_is_slave(struct spi_controller *ctlr) 597 { 598 return IS_ENABLED(CONFIG_SPI_SLAVE) && ctlr->slave; 599 } 600 601 /* PM calls that need to be issued by the driver */ 602 extern int spi_controller_suspend(struct spi_controller *ctlr); 603 extern int spi_controller_resume(struct spi_controller *ctlr); 604 605 /* Calls the driver make to interact with the message queue */ 606 extern struct spi_message *spi_get_next_queued_message(struct spi_controller *ctlr); 607 extern void spi_finalize_current_message(struct spi_controller *ctlr); 608 extern void spi_finalize_current_transfer(struct spi_controller *ctlr); 609 610 /* the spi driver core manages memory for the spi_controller classdev */ 611 extern struct spi_controller *__spi_alloc_controller(struct device *host, 612 unsigned int size, bool slave); 613 614 static inline struct spi_controller *spi_alloc_master(struct device *host, 615 unsigned int size) 616 { 617 return __spi_alloc_controller(host, size, false); 618 } 619 620 static inline struct spi_controller *spi_alloc_slave(struct device *host, 621 unsigned int size) 622 { 623 if (!IS_ENABLED(CONFIG_SPI_SLAVE)) 624 return NULL; 625 626 return __spi_alloc_controller(host, size, true); 627 } 628 629 extern int spi_register_controller(struct spi_controller *ctlr); 630 extern int devm_spi_register_controller(struct device *dev, 631 struct spi_controller *ctlr); 632 extern void spi_unregister_controller(struct spi_controller *ctlr); 633 634 extern struct spi_controller *spi_busnum_to_master(u16 busnum); 635 636 /* 637 * SPI resource management while processing a SPI message 638 */ 639 640 typedef void (*spi_res_release_t)(struct spi_controller *ctlr, 641 struct spi_message *msg, 642 void *res); 643 644 /** 645 * struct spi_res - spi resource management structure 646 * @entry: list entry 647 * @release: release code called prior to freeing this resource 648 * @data: extra data allocated for the specific use-case 649 * 650 * this is based on ideas from devres, but focused on life-cycle 651 * management during spi_message processing 652 */ 653 struct spi_res { 654 struct list_head entry; 655 spi_res_release_t release; 656 unsigned long long data[]; /* guarantee ull alignment */ 657 }; 658 659 extern void *spi_res_alloc(struct spi_device *spi, 660 spi_res_release_t release, 661 size_t size, gfp_t gfp); 662 extern void spi_res_add(struct spi_message *message, void *res); 663 extern void spi_res_free(void *res); 664 665 extern void spi_res_release(struct spi_controller *ctlr, 666 struct spi_message *message); 667 668 /*---------------------------------------------------------------------------*/ 669 670 /* 671 * I/O INTERFACE between SPI controller and protocol drivers 672 * 673 * Protocol drivers use a queue of spi_messages, each transferring data 674 * between the controller and memory buffers. 675 * 676 * The spi_messages themselves consist of a series of read+write transfer 677 * segments. Those segments always read the same number of bits as they 678 * write; but one or the other is easily ignored by passing a null buffer 679 * pointer. (This is unlike most types of I/O API, because SPI hardware 680 * is full duplex.) 681 * 682 * NOTE: Allocation of spi_transfer and spi_message memory is entirely 683 * up to the protocol driver, which guarantees the integrity of both (as 684 * well as the data buffers) for as long as the message is queued. 685 */ 686 687 /** 688 * struct spi_transfer - a read/write buffer pair 689 * @tx_buf: data to be written (dma-safe memory), or NULL 690 * @rx_buf: data to be read (dma-safe memory), or NULL 691 * @tx_dma: DMA address of tx_buf, if @spi_message.is_dma_mapped 692 * @rx_dma: DMA address of rx_buf, if @spi_message.is_dma_mapped 693 * @tx_nbits: number of bits used for writing. If 0 the default 694 * (SPI_NBITS_SINGLE) is used. 695 * @rx_nbits: number of bits used for reading. If 0 the default 696 * (SPI_NBITS_SINGLE) is used. 697 * @len: size of rx and tx buffers (in bytes) 698 * @speed_hz: Select a speed other than the device default for this 699 * transfer. If 0 the default (from @spi_device) is used. 700 * @bits_per_word: select a bits_per_word other than the device default 701 * for this transfer. If 0 the default (from @spi_device) is used. 702 * @cs_change: affects chipselect after this transfer completes 703 * @delay_usecs: microseconds to delay after this transfer before 704 * (optionally) changing the chipselect status, then starting 705 * the next transfer or completing this @spi_message. 706 * @word_delay: clock cycles to inter word delay after each word size 707 * (set by bits_per_word) transmission. 708 * @transfer_list: transfers are sequenced through @spi_message.transfers 709 * @tx_sg: Scatterlist for transmit, currently not for client use 710 * @rx_sg: Scatterlist for receive, currently not for client use 711 * 712 * SPI transfers always write the same number of bytes as they read. 713 * Protocol drivers should always provide @rx_buf and/or @tx_buf. 714 * In some cases, they may also want to provide DMA addresses for 715 * the data being transferred; that may reduce overhead, when the 716 * underlying driver uses dma. 717 * 718 * If the transmit buffer is null, zeroes will be shifted out 719 * while filling @rx_buf. If the receive buffer is null, the data 720 * shifted in will be discarded. Only "len" bytes shift out (or in). 721 * It's an error to try to shift out a partial word. (For example, by 722 * shifting out three bytes with word size of sixteen or twenty bits; 723 * the former uses two bytes per word, the latter uses four bytes.) 724 * 725 * In-memory data values are always in native CPU byte order, translated 726 * from the wire byte order (big-endian except with SPI_LSB_FIRST). So 727 * for example when bits_per_word is sixteen, buffers are 2N bytes long 728 * (@len = 2N) and hold N sixteen bit words in CPU byte order. 729 * 730 * When the word size of the SPI transfer is not a power-of-two multiple 731 * of eight bits, those in-memory words include extra bits. In-memory 732 * words are always seen by protocol drivers as right-justified, so the 733 * undefined (rx) or unused (tx) bits are always the most significant bits. 734 * 735 * All SPI transfers start with the relevant chipselect active. Normally 736 * it stays selected until after the last transfer in a message. Drivers 737 * can affect the chipselect signal using cs_change. 738 * 739 * (i) If the transfer isn't the last one in the message, this flag is 740 * used to make the chipselect briefly go inactive in the middle of the 741 * message. Toggling chipselect in this way may be needed to terminate 742 * a chip command, letting a single spi_message perform all of group of 743 * chip transactions together. 744 * 745 * (ii) When the transfer is the last one in the message, the chip may 746 * stay selected until the next transfer. On multi-device SPI busses 747 * with nothing blocking messages going to other devices, this is just 748 * a performance hint; starting a message to another device deselects 749 * this one. But in other cases, this can be used to ensure correctness. 750 * Some devices need protocol transactions to be built from a series of 751 * spi_message submissions, where the content of one message is determined 752 * by the results of previous messages and where the whole transaction 753 * ends when the chipselect goes intactive. 754 * 755 * When SPI can transfer in 1x,2x or 4x. It can get this transfer information 756 * from device through @tx_nbits and @rx_nbits. In Bi-direction, these 757 * two should both be set. User can set transfer mode with SPI_NBITS_SINGLE(1x) 758 * SPI_NBITS_DUAL(2x) and SPI_NBITS_QUAD(4x) to support these three transfer. 759 * 760 * The code that submits an spi_message (and its spi_transfers) 761 * to the lower layers is responsible for managing its memory. 762 * Zero-initialize every field you don't set up explicitly, to 763 * insulate against future API updates. After you submit a message 764 * and its transfers, ignore them until its completion callback. 765 */ 766 struct spi_transfer { 767 /* it's ok if tx_buf == rx_buf (right?) 768 * for MicroWire, one buffer must be null 769 * buffers must work with dma_*map_single() calls, unless 770 * spi_message.is_dma_mapped reports a pre-existing mapping 771 */ 772 const void *tx_buf; 773 void *rx_buf; 774 unsigned len; 775 776 dma_addr_t tx_dma; 777 dma_addr_t rx_dma; 778 struct sg_table tx_sg; 779 struct sg_table rx_sg; 780 781 unsigned cs_change:1; 782 unsigned tx_nbits:3; 783 unsigned rx_nbits:3; 784 #define SPI_NBITS_SINGLE 0x01 /* 1bit transfer */ 785 #define SPI_NBITS_DUAL 0x02 /* 2bits transfer */ 786 #define SPI_NBITS_QUAD 0x04 /* 4bits transfer */ 787 u8 bits_per_word; 788 u16 delay_usecs; 789 u32 speed_hz; 790 u16 word_delay; 791 792 struct list_head transfer_list; 793 }; 794 795 /** 796 * struct spi_message - one multi-segment SPI transaction 797 * @transfers: list of transfer segments in this transaction 798 * @spi: SPI device to which the transaction is queued 799 * @is_dma_mapped: if true, the caller provided both dma and cpu virtual 800 * addresses for each transfer buffer 801 * @complete: called to report transaction completions 802 * @context: the argument to complete() when it's called 803 * @frame_length: the total number of bytes in the message 804 * @actual_length: the total number of bytes that were transferred in all 805 * successful segments 806 * @status: zero for success, else negative errno 807 * @queue: for use by whichever driver currently owns the message 808 * @state: for use by whichever driver currently owns the message 809 * @resources: for resource management when the spi message is processed 810 * 811 * A @spi_message is used to execute an atomic sequence of data transfers, 812 * each represented by a struct spi_transfer. The sequence is "atomic" 813 * in the sense that no other spi_message may use that SPI bus until that 814 * sequence completes. On some systems, many such sequences can execute as 815 * as single programmed DMA transfer. On all systems, these messages are 816 * queued, and might complete after transactions to other devices. Messages 817 * sent to a given spi_device are always executed in FIFO order. 818 * 819 * The code that submits an spi_message (and its spi_transfers) 820 * to the lower layers is responsible for managing its memory. 821 * Zero-initialize every field you don't set up explicitly, to 822 * insulate against future API updates. After you submit a message 823 * and its transfers, ignore them until its completion callback. 824 */ 825 struct spi_message { 826 struct list_head transfers; 827 828 struct spi_device *spi; 829 830 unsigned is_dma_mapped:1; 831 832 /* REVISIT: we might want a flag affecting the behavior of the 833 * last transfer ... allowing things like "read 16 bit length L" 834 * immediately followed by "read L bytes". Basically imposing 835 * a specific message scheduling algorithm. 836 * 837 * Some controller drivers (message-at-a-time queue processing) 838 * could provide that as their default scheduling algorithm. But 839 * others (with multi-message pipelines) could need a flag to 840 * tell them about such special cases. 841 */ 842 843 /* completion is reported through a callback */ 844 void (*complete)(void *context); 845 void *context; 846 unsigned frame_length; 847 unsigned actual_length; 848 int status; 849 850 /* for optional use by whatever driver currently owns the 851 * spi_message ... between calls to spi_async and then later 852 * complete(), that's the spi_controller controller driver. 853 */ 854 struct list_head queue; 855 void *state; 856 857 /* list of spi_res reources when the spi message is processed */ 858 struct list_head resources; 859 }; 860 861 static inline void spi_message_init_no_memset(struct spi_message *m) 862 { 863 INIT_LIST_HEAD(&m->transfers); 864 INIT_LIST_HEAD(&m->resources); 865 } 866 867 static inline void spi_message_init(struct spi_message *m) 868 { 869 memset(m, 0, sizeof *m); 870 spi_message_init_no_memset(m); 871 } 872 873 static inline void 874 spi_message_add_tail(struct spi_transfer *t, struct spi_message *m) 875 { 876 list_add_tail(&t->transfer_list, &m->transfers); 877 } 878 879 static inline void 880 spi_transfer_del(struct spi_transfer *t) 881 { 882 list_del(&t->transfer_list); 883 } 884 885 /** 886 * spi_message_init_with_transfers - Initialize spi_message and append transfers 887 * @m: spi_message to be initialized 888 * @xfers: An array of spi transfers 889 * @num_xfers: Number of items in the xfer array 890 * 891 * This function initializes the given spi_message and adds each spi_transfer in 892 * the given array to the message. 893 */ 894 static inline void 895 spi_message_init_with_transfers(struct spi_message *m, 896 struct spi_transfer *xfers, unsigned int num_xfers) 897 { 898 unsigned int i; 899 900 spi_message_init(m); 901 for (i = 0; i < num_xfers; ++i) 902 spi_message_add_tail(&xfers[i], m); 903 } 904 905 /* It's fine to embed message and transaction structures in other data 906 * structures so long as you don't free them while they're in use. 907 */ 908 909 static inline struct spi_message *spi_message_alloc(unsigned ntrans, gfp_t flags) 910 { 911 struct spi_message *m; 912 913 m = kzalloc(sizeof(struct spi_message) 914 + ntrans * sizeof(struct spi_transfer), 915 flags); 916 if (m) { 917 unsigned i; 918 struct spi_transfer *t = (struct spi_transfer *)(m + 1); 919 920 spi_message_init_no_memset(m); 921 for (i = 0; i < ntrans; i++, t++) 922 spi_message_add_tail(t, m); 923 } 924 return m; 925 } 926 927 static inline void spi_message_free(struct spi_message *m) 928 { 929 kfree(m); 930 } 931 932 extern int spi_setup(struct spi_device *spi); 933 extern int spi_async(struct spi_device *spi, struct spi_message *message); 934 extern int spi_async_locked(struct spi_device *spi, 935 struct spi_message *message); 936 extern int spi_slave_abort(struct spi_device *spi); 937 938 static inline size_t 939 spi_max_message_size(struct spi_device *spi) 940 { 941 struct spi_controller *ctlr = spi->controller; 942 943 if (!ctlr->max_message_size) 944 return SIZE_MAX; 945 return ctlr->max_message_size(spi); 946 } 947 948 static inline size_t 949 spi_max_transfer_size(struct spi_device *spi) 950 { 951 struct spi_controller *ctlr = spi->controller; 952 size_t tr_max = SIZE_MAX; 953 size_t msg_max = spi_max_message_size(spi); 954 955 if (ctlr->max_transfer_size) 956 tr_max = ctlr->max_transfer_size(spi); 957 958 /* transfer size limit must not be greater than messsage size limit */ 959 return min(tr_max, msg_max); 960 } 961 962 /*---------------------------------------------------------------------------*/ 963 964 /* SPI transfer replacement methods which make use of spi_res */ 965 966 struct spi_replaced_transfers; 967 typedef void (*spi_replaced_release_t)(struct spi_controller *ctlr, 968 struct spi_message *msg, 969 struct spi_replaced_transfers *res); 970 /** 971 * struct spi_replaced_transfers - structure describing the spi_transfer 972 * replacements that have occurred 973 * so that they can get reverted 974 * @release: some extra release code to get executed prior to 975 * relasing this structure 976 * @extradata: pointer to some extra data if requested or NULL 977 * @replaced_transfers: transfers that have been replaced and which need 978 * to get restored 979 * @replaced_after: the transfer after which the @replaced_transfers 980 * are to get re-inserted 981 * @inserted: number of transfers inserted 982 * @inserted_transfers: array of spi_transfers of array-size @inserted, 983 * that have been replacing replaced_transfers 984 * 985 * note: that @extradata will point to @inserted_transfers[@inserted] 986 * if some extra allocation is requested, so alignment will be the same 987 * as for spi_transfers 988 */ 989 struct spi_replaced_transfers { 990 spi_replaced_release_t release; 991 void *extradata; 992 struct list_head replaced_transfers; 993 struct list_head *replaced_after; 994 size_t inserted; 995 struct spi_transfer inserted_transfers[]; 996 }; 997 998 extern struct spi_replaced_transfers *spi_replace_transfers( 999 struct spi_message *msg, 1000 struct spi_transfer *xfer_first, 1001 size_t remove, 1002 size_t insert, 1003 spi_replaced_release_t release, 1004 size_t extradatasize, 1005 gfp_t gfp); 1006 1007 /*---------------------------------------------------------------------------*/ 1008 1009 /* SPI transfer transformation methods */ 1010 1011 extern int spi_split_transfers_maxsize(struct spi_controller *ctlr, 1012 struct spi_message *msg, 1013 size_t maxsize, 1014 gfp_t gfp); 1015 1016 /*---------------------------------------------------------------------------*/ 1017 1018 /* All these synchronous SPI transfer routines are utilities layered 1019 * over the core async transfer primitive. Here, "synchronous" means 1020 * they will sleep uninterruptibly until the async transfer completes. 1021 */ 1022 1023 extern int spi_sync(struct spi_device *spi, struct spi_message *message); 1024 extern int spi_sync_locked(struct spi_device *spi, struct spi_message *message); 1025 extern int spi_bus_lock(struct spi_controller *ctlr); 1026 extern int spi_bus_unlock(struct spi_controller *ctlr); 1027 1028 /** 1029 * spi_sync_transfer - synchronous SPI data transfer 1030 * @spi: device with which data will be exchanged 1031 * @xfers: An array of spi_transfers 1032 * @num_xfers: Number of items in the xfer array 1033 * Context: can sleep 1034 * 1035 * Does a synchronous SPI data transfer of the given spi_transfer array. 1036 * 1037 * For more specific semantics see spi_sync(). 1038 * 1039 * Return: Return: zero on success, else a negative error code. 1040 */ 1041 static inline int 1042 spi_sync_transfer(struct spi_device *spi, struct spi_transfer *xfers, 1043 unsigned int num_xfers) 1044 { 1045 struct spi_message msg; 1046 1047 spi_message_init_with_transfers(&msg, xfers, num_xfers); 1048 1049 return spi_sync(spi, &msg); 1050 } 1051 1052 /** 1053 * spi_write - SPI synchronous write 1054 * @spi: device to which data will be written 1055 * @buf: data buffer 1056 * @len: data buffer size 1057 * Context: can sleep 1058 * 1059 * This function writes the buffer @buf. 1060 * Callable only from contexts that can sleep. 1061 * 1062 * Return: zero on success, else a negative error code. 1063 */ 1064 static inline int 1065 spi_write(struct spi_device *spi, const void *buf, size_t len) 1066 { 1067 struct spi_transfer t = { 1068 .tx_buf = buf, 1069 .len = len, 1070 }; 1071 1072 return spi_sync_transfer(spi, &t, 1); 1073 } 1074 1075 /** 1076 * spi_read - SPI synchronous read 1077 * @spi: device from which data will be read 1078 * @buf: data buffer 1079 * @len: data buffer size 1080 * Context: can sleep 1081 * 1082 * This function reads the buffer @buf. 1083 * Callable only from contexts that can sleep. 1084 * 1085 * Return: zero on success, else a negative error code. 1086 */ 1087 static inline int 1088 spi_read(struct spi_device *spi, void *buf, size_t len) 1089 { 1090 struct spi_transfer t = { 1091 .rx_buf = buf, 1092 .len = len, 1093 }; 1094 1095 return spi_sync_transfer(spi, &t, 1); 1096 } 1097 1098 /* this copies txbuf and rxbuf data; for small transfers only! */ 1099 extern int spi_write_then_read(struct spi_device *spi, 1100 const void *txbuf, unsigned n_tx, 1101 void *rxbuf, unsigned n_rx); 1102 1103 /** 1104 * spi_w8r8 - SPI synchronous 8 bit write followed by 8 bit read 1105 * @spi: device with which data will be exchanged 1106 * @cmd: command to be written before data is read back 1107 * Context: can sleep 1108 * 1109 * Callable only from contexts that can sleep. 1110 * 1111 * Return: the (unsigned) eight bit number returned by the 1112 * device, or else a negative error code. 1113 */ 1114 static inline ssize_t spi_w8r8(struct spi_device *spi, u8 cmd) 1115 { 1116 ssize_t status; 1117 u8 result; 1118 1119 status = spi_write_then_read(spi, &cmd, 1, &result, 1); 1120 1121 /* return negative errno or unsigned value */ 1122 return (status < 0) ? status : result; 1123 } 1124 1125 /** 1126 * spi_w8r16 - SPI synchronous 8 bit write followed by 16 bit read 1127 * @spi: device with which data will be exchanged 1128 * @cmd: command to be written before data is read back 1129 * Context: can sleep 1130 * 1131 * The number is returned in wire-order, which is at least sometimes 1132 * big-endian. 1133 * 1134 * Callable only from contexts that can sleep. 1135 * 1136 * Return: the (unsigned) sixteen bit number returned by the 1137 * device, or else a negative error code. 1138 */ 1139 static inline ssize_t spi_w8r16(struct spi_device *spi, u8 cmd) 1140 { 1141 ssize_t status; 1142 u16 result; 1143 1144 status = spi_write_then_read(spi, &cmd, 1, &result, 2); 1145 1146 /* return negative errno or unsigned value */ 1147 return (status < 0) ? status : result; 1148 } 1149 1150 /** 1151 * spi_w8r16be - SPI synchronous 8 bit write followed by 16 bit big-endian read 1152 * @spi: device with which data will be exchanged 1153 * @cmd: command to be written before data is read back 1154 * Context: can sleep 1155 * 1156 * This function is similar to spi_w8r16, with the exception that it will 1157 * convert the read 16 bit data word from big-endian to native endianness. 1158 * 1159 * Callable only from contexts that can sleep. 1160 * 1161 * Return: the (unsigned) sixteen bit number returned by the device in cpu 1162 * endianness, or else a negative error code. 1163 */ 1164 static inline ssize_t spi_w8r16be(struct spi_device *spi, u8 cmd) 1165 1166 { 1167 ssize_t status; 1168 __be16 result; 1169 1170 status = spi_write_then_read(spi, &cmd, 1, &result, 2); 1171 if (status < 0) 1172 return status; 1173 1174 return be16_to_cpu(result); 1175 } 1176 1177 /*---------------------------------------------------------------------------*/ 1178 1179 /* 1180 * INTERFACE between board init code and SPI infrastructure. 1181 * 1182 * No SPI driver ever sees these SPI device table segments, but 1183 * it's how the SPI core (or adapters that get hotplugged) grows 1184 * the driver model tree. 1185 * 1186 * As a rule, SPI devices can't be probed. Instead, board init code 1187 * provides a table listing the devices which are present, with enough 1188 * information to bind and set up the device's driver. There's basic 1189 * support for nonstatic configurations too; enough to handle adding 1190 * parport adapters, or microcontrollers acting as USB-to-SPI bridges. 1191 */ 1192 1193 /** 1194 * struct spi_board_info - board-specific template for a SPI device 1195 * @modalias: Initializes spi_device.modalias; identifies the driver. 1196 * @platform_data: Initializes spi_device.platform_data; the particular 1197 * data stored there is driver-specific. 1198 * @properties: Additional device properties for the device. 1199 * @controller_data: Initializes spi_device.controller_data; some 1200 * controllers need hints about hardware setup, e.g. for DMA. 1201 * @irq: Initializes spi_device.irq; depends on how the board is wired. 1202 * @max_speed_hz: Initializes spi_device.max_speed_hz; based on limits 1203 * from the chip datasheet and board-specific signal quality issues. 1204 * @bus_num: Identifies which spi_controller parents the spi_device; unused 1205 * by spi_new_device(), and otherwise depends on board wiring. 1206 * @chip_select: Initializes spi_device.chip_select; depends on how 1207 * the board is wired. 1208 * @mode: Initializes spi_device.mode; based on the chip datasheet, board 1209 * wiring (some devices support both 3WIRE and standard modes), and 1210 * possibly presence of an inverter in the chipselect path. 1211 * 1212 * When adding new SPI devices to the device tree, these structures serve 1213 * as a partial device template. They hold information which can't always 1214 * be determined by drivers. Information that probe() can establish (such 1215 * as the default transfer wordsize) is not included here. 1216 * 1217 * These structures are used in two places. Their primary role is to 1218 * be stored in tables of board-specific device descriptors, which are 1219 * declared early in board initialization and then used (much later) to 1220 * populate a controller's device tree after the that controller's driver 1221 * initializes. A secondary (and atypical) role is as a parameter to 1222 * spi_new_device() call, which happens after those controller drivers 1223 * are active in some dynamic board configuration models. 1224 */ 1225 struct spi_board_info { 1226 /* the device name and module name are coupled, like platform_bus; 1227 * "modalias" is normally the driver name. 1228 * 1229 * platform_data goes to spi_device.dev.platform_data, 1230 * controller_data goes to spi_device.controller_data, 1231 * device properties are copied and attached to spi_device, 1232 * irq is copied too 1233 */ 1234 char modalias[SPI_NAME_SIZE]; 1235 const void *platform_data; 1236 const struct property_entry *properties; 1237 void *controller_data; 1238 int irq; 1239 1240 /* slower signaling on noisy or low voltage boards */ 1241 u32 max_speed_hz; 1242 1243 1244 /* bus_num is board specific and matches the bus_num of some 1245 * spi_controller that will probably be registered later. 1246 * 1247 * chip_select reflects how this chip is wired to that master; 1248 * it's less than num_chipselect. 1249 */ 1250 u16 bus_num; 1251 u16 chip_select; 1252 1253 /* mode becomes spi_device.mode, and is essential for chips 1254 * where the default of SPI_CS_HIGH = 0 is wrong. 1255 */ 1256 u16 mode; 1257 1258 /* ... may need additional spi_device chip config data here. 1259 * avoid stuff protocol drivers can set; but include stuff 1260 * needed to behave without being bound to a driver: 1261 * - quirks like clock rate mattering when not selected 1262 */ 1263 }; 1264 1265 #ifdef CONFIG_SPI 1266 extern int 1267 spi_register_board_info(struct spi_board_info const *info, unsigned n); 1268 #else 1269 /* board init code may ignore whether SPI is configured or not */ 1270 static inline int 1271 spi_register_board_info(struct spi_board_info const *info, unsigned n) 1272 { return 0; } 1273 #endif 1274 1275 /* If you're hotplugging an adapter with devices (parport, usb, etc) 1276 * use spi_new_device() to describe each device. You can also call 1277 * spi_unregister_device() to start making that device vanish, but 1278 * normally that would be handled by spi_unregister_controller(). 1279 * 1280 * You can also use spi_alloc_device() and spi_add_device() to use a two 1281 * stage registration sequence for each spi_device. This gives the caller 1282 * some more control over the spi_device structure before it is registered, 1283 * but requires that caller to initialize fields that would otherwise 1284 * be defined using the board info. 1285 */ 1286 extern struct spi_device * 1287 spi_alloc_device(struct spi_controller *ctlr); 1288 1289 extern int 1290 spi_add_device(struct spi_device *spi); 1291 1292 extern struct spi_device * 1293 spi_new_device(struct spi_controller *, struct spi_board_info *); 1294 1295 extern void spi_unregister_device(struct spi_device *spi); 1296 1297 extern const struct spi_device_id * 1298 spi_get_device_id(const struct spi_device *sdev); 1299 1300 static inline bool 1301 spi_transfer_is_last(struct spi_controller *ctlr, struct spi_transfer *xfer) 1302 { 1303 return list_is_last(&xfer->transfer_list, &ctlr->cur_msg->transfers); 1304 } 1305 1306 /* OF support code */ 1307 #if IS_ENABLED(CONFIG_OF) 1308 1309 /* must call put_device() when done with returned spi_device device */ 1310 extern struct spi_device * 1311 of_find_spi_device_by_node(struct device_node *node); 1312 1313 #else 1314 1315 static inline struct spi_device * 1316 of_find_spi_device_by_node(struct device_node *node) 1317 { 1318 return NULL; 1319 } 1320 1321 #endif /* IS_ENABLED(CONFIG_OF) */ 1322 1323 /* Compatibility layer */ 1324 #define spi_master spi_controller 1325 1326 #define SPI_MASTER_HALF_DUPLEX SPI_CONTROLLER_HALF_DUPLEX 1327 #define SPI_MASTER_NO_RX SPI_CONTROLLER_NO_RX 1328 #define SPI_MASTER_NO_TX SPI_CONTROLLER_NO_TX 1329 #define SPI_MASTER_MUST_RX SPI_CONTROLLER_MUST_RX 1330 #define SPI_MASTER_MUST_TX SPI_CONTROLLER_MUST_TX 1331 1332 #define spi_master_get_devdata(_ctlr) spi_controller_get_devdata(_ctlr) 1333 #define spi_master_set_devdata(_ctlr, _data) \ 1334 spi_controller_set_devdata(_ctlr, _data) 1335 #define spi_master_get(_ctlr) spi_controller_get(_ctlr) 1336 #define spi_master_put(_ctlr) spi_controller_put(_ctlr) 1337 #define spi_master_suspend(_ctlr) spi_controller_suspend(_ctlr) 1338 #define spi_master_resume(_ctlr) spi_controller_resume(_ctlr) 1339 1340 #define spi_register_master(_ctlr) spi_register_controller(_ctlr) 1341 #define devm_spi_register_master(_dev, _ctlr) \ 1342 devm_spi_register_controller(_dev, _ctlr) 1343 #define spi_unregister_master(_ctlr) spi_unregister_controller(_ctlr) 1344 1345 #endif /* __LINUX_SPI_H */ 1346