summaryrefslogtreecommitdiff
path: root/include/spi.h
diff options
context:
space:
mode:
authorNikita Kiryanov <nikita@compulab.co.il>2013-10-16 17:23:25 +0300
committerAnatolij Gustschin <agust@denx.de>2013-11-12 10:02:44 +0100
commit5753d09b1064a669e3be8f27e0f1fd008b96934a (patch)
tree03eb9c4427faed627d41802960f0c7c516e35203 /include/spi.h
parent54a759c880a11a6dd93704f0adba40139b595e87 (diff)
downloadu-boot-5753d09b1064a669e3be8f27e0f1fd008b96934a.tar.gz
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>
Diffstat (limited to 'include/spi.h')
-rw-r--r--include/spi.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/spi.h b/include/spi.h
index ad9248bee0..67da75cb59 100644
--- a/include/spi.h
+++ b/include/spi.h
@@ -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;
};
@@ -153,6 +157,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
*
* This writes "bitlen" bits out the SPI MOSI port and simultaneously clocks