spi: omap3: add support for more word lengths
Current implementation only supports 8 bit word lengths, even though omap3 can handle anything between 4 and 32. Update the spi interface to support changing the SPI word length, and implement it in omap3_spi driver to support the full range of possible word lengths. This implementation is backwards compatible by defaulting to the old behavior of 8 bit word lengths. Also, it required a change to the omap3_spi non static I/O functions, but since they are not used anywhere else, no collateral changes are required. Cc: Tom Rini <trini@ti.com> Cc: Jagannadha Sutradharudu Teki <jagannadh.teki@gmail.com> Cc: Igor Grinberg <grinberg@compulab.co.il> Signed-off-by: Nikita Kiryanov <nikita@compulab.co.il>
This commit is contained in:
committed by
Anatolij Gustschin
parent
54a759c880
commit
5753d09b10
@@ -33,6 +33,8 @@
|
||||
/* Header byte that marks the start of the message */
|
||||
#define SPI_PREAMBLE_END_BYTE 0xec
|
||||
|
||||
#define SPI_DEFAULT_WORDLEN 8
|
||||
|
||||
/**
|
||||
* struct spi_slave - Representation of a SPI slave
|
||||
*
|
||||
@@ -40,6 +42,7 @@
|
||||
*
|
||||
* @bus: ID of the bus that the slave is attached to.
|
||||
* @cs: ID of the chip select connected to the slave.
|
||||
* @wordlen: Size of SPI word in number of bits
|
||||
* @max_write_size: If non-zero, the maximum number of bytes which can
|
||||
* be written at once, excluding command bytes.
|
||||
* @memory_map: Address of read-only SPI flash access.
|
||||
@@ -47,6 +50,7 @@
|
||||
struct spi_slave {
|
||||
unsigned int bus;
|
||||
unsigned int cs;
|
||||
unsigned int wordlen;
|
||||
unsigned int max_write_size;
|
||||
void *memory_map;
|
||||
};
|
||||
@@ -152,6 +156,18 @@ int spi_claim_bus(struct spi_slave *slave);
|
||||
*/
|
||||
void spi_release_bus(struct spi_slave *slave);
|
||||
|
||||
/**
|
||||
* Set the word length for SPI transactions
|
||||
*
|
||||
* Set the word length (number of bits per word) for SPI transactions.
|
||||
*
|
||||
* @slave: The SPI slave
|
||||
* @wordlen: The number of bits in a word
|
||||
*
|
||||
* Returns: 0 on success, -1 on failure.
|
||||
*/
|
||||
int spi_set_wordlen(struct spi_slave *slave, unsigned int wordlen);
|
||||
|
||||
/**
|
||||
* SPI transfer
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user