diff options
Diffstat (limited to 'include/linux/spi/spi-mem.h')
| -rw-r--r-- | include/linux/spi/spi-mem.h | 14 | 
1 files changed, 13 insertions, 1 deletions
diff --git a/include/linux/spi/spi-mem.h b/include/linux/spi/spi-mem.h index af9ff2f0f1b2..159463cc659c 100644 --- a/include/linux/spi/spi-mem.h +++ b/include/linux/spi/spi-mem.h @@ -17,6 +17,7 @@  	{							\  		.buswidth = __buswidth,				\  		.opcode = __opcode,				\ +		.nbytes = 1,					\  	}  #define SPI_MEM_OP_ADDR(__nbytes, __val, __buswidth)		\ @@ -69,11 +70,15 @@ enum spi_mem_data_dir {  /**   * struct spi_mem_op - describes a SPI memory operation + * @cmd.nbytes: number of opcode bytes (only 1 or 2 are valid). The opcode is + *		sent MSB-first.   * @cmd.buswidth: number of IO lines used to transmit the command   * @cmd.opcode: operation opcode + * @cmd.dtr: whether the command opcode should be sent in DTR mode or not   * @addr.nbytes: number of address bytes to send. Can be zero if the operation   *		 does not need to send an address   * @addr.buswidth: number of IO lines used to transmit the address cycles + * @addr.dtr: whether the address should be sent in DTR mode or not   * @addr.val: address value. This value is always sent MSB first on the bus.   *	      Note that only @addr.nbytes are taken into account in this   *	      address value, so users should make sure the value fits in the @@ -81,7 +86,9 @@ enum spi_mem_data_dir {   * @dummy.nbytes: number of dummy bytes to send after an opcode or address. Can   *		  be zero if the operation does not require dummy bytes   * @dummy.buswidth: number of IO lanes used to transmit the dummy bytes + * @dummy.dtr: whether the dummy bytes should be sent in DTR mode or not   * @data.buswidth: number of IO lanes used to send/receive the data + * @data.dtr: whether the data should be sent in DTR mode or not   * @data.dir: direction of the transfer   * @data.nbytes: number of data bytes to send/receive. Can be zero if the   *		 operation does not involve transferring data @@ -90,23 +97,28 @@ enum spi_mem_data_dir {   */  struct spi_mem_op {  	struct { +		u8 nbytes;  		u8 buswidth; -		u8 opcode; +		u8 dtr : 1; +		u16 opcode;  	} cmd;  	struct {  		u8 nbytes;  		u8 buswidth; +		u8 dtr : 1;  		u64 val;  	} addr;  	struct {  		u8 nbytes;  		u8 buswidth; +		u8 dtr : 1;  	} dummy;  	struct {  		u8 buswidth; +		u8 dtr : 1;  		enum spi_mem_data_dir dir;  		unsigned int nbytes;  		union {  |