diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-25 16:20:36 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-25 16:20:36 -0500 |
commit | 2d2e7d195b902c419bc0b69ced026aca444d69a8 (patch) | |
tree | a4caa21b9db159873897d64b553042a1ae920ab5 /include/linux/spi | |
parent | 15333539a9b3022656f815f643a77f6b054b335f (diff) | |
parent | 8b8b773e6b611e6629ac01f85d401c949d153546 (diff) |
Merge tag 'spi-v3.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
Pull spi updates from Mark Brown:
"A respun version of the merges for the pull request previously sent
with a few additional fixes. The last two merges were fixed up by
hand since the branches have moved on and currently have the prior
merge in them.
Quite a busy release for the SPI subsystem, mostly in cleanups big and
small scattered through the stack rather than anything else:
- New driver for the Broadcom BC63xx HSSPI controller
- Fix duplicate device registration for ACPI
- Conversion of s3c64xx to DMAEngine (this pulls in platform and DMA
changes upon which the transiton depends)
- Some small optimisations to reduce the amount of time we hold locks
in the datapath, eliminate some redundant checks and the size of a
spi_transfer
- Lots of fixes, cleanups and general enhancements to drivers,
especially the rspi and Atmel drivers"
* tag 'spi-v3.14-2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: (112 commits)
spi: core: Fix transfer failure when master->transfer_one returns positive value
spi: Correct set_cs() documentation
spi: Clarify transfer_one() w.r.t. spi_finalize_current_transfer()
spi: Spelling s/finised/finished/
spi: sc18is602: Convert to use bits_per_word_mask
spi: Remove duplicate code to set default bits_per_word setting
spi/pxa2xx: fix compilation warning when !CONFIG_PM_SLEEP
spi: clps711x: Add MODULE_ALIAS to support module auto-loading
spi: rspi: Add missing clk_disable() calls in error and cleanup paths
spi: rspi: Spelling s/transmition/transmission/
spi: rspi: Add support for specifying CPHA/CPOL
spi/pxa2xx: initialize DMA channels to -1 to prevent inadvertent match
spi: rspi: Add more QSPI register documentation
spi: rspi: Add more RSPI register documentation
spi: rspi: Remove dependency on DMAE for SHMOBILE
spi/s3c64xx: Correct indentation
spi: sh: Use spi_sh_clear_bit() instead of open-coded
spi: bitbang: Grammar s/make to make/to make/
spi: sh-hspi: Spelling s/recive/receive/
spi: core: Improve tx/rx_nbits check comments
...
Diffstat (limited to 'include/linux/spi')
-rw-r--r-- | include/linux/spi/s3c24xx.h | 2 | ||||
-rw-r--r-- | include/linux/spi/spi.h | 20 |
2 files changed, 13 insertions, 9 deletions
diff --git a/include/linux/spi/s3c24xx.h b/include/linux/spi/s3c24xx.h index c23b923e493b..ca271c06c591 100644 --- a/include/linux/spi/s3c24xx.h +++ b/include/linux/spi/s3c24xx.h | |||
@@ -23,4 +23,6 @@ struct s3c2410_spi_info { | |||
23 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); | 23 | void (*set_cs)(struct s3c2410_spi_info *spi, int cs, int pol); |
24 | }; | 24 | }; |
25 | 25 | ||
26 | extern int s3c24xx_set_fiq(unsigned int irq, bool on); | ||
27 | |||
26 | #endif /* __LINUX_SPI_S3C24XX_H */ | 28 | #endif /* __LINUX_SPI_S3C24XX_H */ |
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 8c62ba74dd91..a1d4ca290862 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h | |||
@@ -75,6 +75,7 @@ struct spi_device { | |||
75 | struct spi_master *master; | 75 | struct spi_master *master; |
76 | u32 max_speed_hz; | 76 | u32 max_speed_hz; |
77 | u8 chip_select; | 77 | u8 chip_select; |
78 | u8 bits_per_word; | ||
78 | u16 mode; | 79 | u16 mode; |
79 | #define SPI_CPHA 0x01 /* clock phase */ | 80 | #define SPI_CPHA 0x01 /* clock phase */ |
80 | #define SPI_CPOL 0x02 /* clock polarity */ | 81 | #define SPI_CPOL 0x02 /* clock polarity */ |
@@ -92,7 +93,6 @@ struct spi_device { | |||
92 | #define SPI_TX_QUAD 0x200 /* transmit with 4 wires */ | 93 | #define SPI_TX_QUAD 0x200 /* transmit with 4 wires */ |
93 | #define SPI_RX_DUAL 0x400 /* receive with 2 wires */ | 94 | #define SPI_RX_DUAL 0x400 /* receive with 2 wires */ |
94 | #define SPI_RX_QUAD 0x800 /* receive with 4 wires */ | 95 | #define SPI_RX_QUAD 0x800 /* receive with 4 wires */ |
95 | u8 bits_per_word; | ||
96 | int irq; | 96 | int irq; |
97 | void *controller_state; | 97 | void *controller_state; |
98 | void *controller_data; | 98 | void *controller_data; |
@@ -277,15 +277,17 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv) | |||
277 | * @unprepare_transfer_hardware: there are currently no more messages on the | 277 | * @unprepare_transfer_hardware: there are currently no more messages on the |
278 | * queue so the subsystem notifies the driver that it may relax the | 278 | * queue so the subsystem notifies the driver that it may relax the |
279 | * hardware by issuing this call | 279 | * hardware by issuing this call |
280 | * @set_cs: assert or deassert chip select, true to assert. May be called | 280 | * @set_cs: set the logic level of the chip select line. May be called |
281 | * from interrupt context. | 281 | * from interrupt context. |
282 | * @prepare_message: set up the controller to transfer a single message, | 282 | * @prepare_message: set up the controller to transfer a single message, |
283 | * for example doing DMA mapping. Called from threaded | 283 | * for example doing DMA mapping. Called from threaded |
284 | * context. | 284 | * context. |
285 | * @transfer_one: transfer a single spi_transfer. When the | 285 | * @transfer_one: transfer a single spi_transfer. |
286 | * driver is finished with this transfer it must call | 286 | * - return 0 if the transfer is finished, |
287 | * spi_finalize_current_transfer() so the subsystem can issue | 287 | * - return 1 if the transfer is still in progress. When |
288 | * the next transfer | 288 | * the driver is finished with this transfer it must |
289 | * call spi_finalize_current_transfer() so the subsystem | ||
290 | * can issue the next transfer | ||
289 | * @unprepare_message: undo any work done by prepare_message(). | 291 | * @unprepare_message: undo any work done by prepare_message(). |
290 | * @cs_gpios: Array of GPIOs to use as chip select lines; one per CS | 292 | * @cs_gpios: Array of GPIOs to use as chip select lines; one per CS |
291 | * number. Any individual value may be -ENOENT for CS lines that | 293 | * number. Any individual value may be -ENOENT for CS lines that |
@@ -576,8 +578,8 @@ struct spi_transfer { | |||
576 | dma_addr_t rx_dma; | 578 | dma_addr_t rx_dma; |
577 | 579 | ||
578 | unsigned cs_change:1; | 580 | unsigned cs_change:1; |
579 | u8 tx_nbits; | 581 | unsigned tx_nbits:3; |
580 | u8 rx_nbits; | 582 | unsigned rx_nbits:3; |
581 | #define SPI_NBITS_SINGLE 0x01 /* 1bit transfer */ | 583 | #define SPI_NBITS_SINGLE 0x01 /* 1bit transfer */ |
582 | #define SPI_NBITS_DUAL 0x02 /* 2bits transfer */ | 584 | #define SPI_NBITS_DUAL 0x02 /* 2bits transfer */ |
583 | #define SPI_NBITS_QUAD 0x04 /* 4bits transfer */ | 585 | #define SPI_NBITS_QUAD 0x04 /* 4bits transfer */ |
@@ -847,7 +849,7 @@ static inline ssize_t spi_w8r16(struct spi_device *spi, u8 cmd) | |||
847 | ssize_t status; | 849 | ssize_t status; |
848 | u16 result; | 850 | u16 result; |
849 | 851 | ||
850 | status = spi_write_then_read(spi, &cmd, 1, (u8 *) &result, 2); | 852 | status = spi_write_then_read(spi, &cmd, 1, &result, 2); |
851 | 853 | ||
852 | /* return negative errno or unsigned value */ | 854 | /* return negative errno or unsigned value */ |
853 | return (status < 0) ? status : result; | 855 | return (status < 0) ? status : result; |