spi: spi-mem: Mark dummy transfers by setting dummy_data bit
This patch marks dummy transfer by setting dummy_data bit to 1. Controllers supporting dummy transfer by hardware use this bit field to skip software transfer of dummy bytes and use hardware dummy bytes transfer. Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com> Link: https://lore.kernel.org/r/1608585459-17250-6-git-send-email-skomatineni@nvidia.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
921fc1838f
commit
98621ed011
@@ -354,6 +354,7 @@ int spi_mem_exec_op(struct spi_mem *mem, const struct spi_mem_op *op)
|
|||||||
xfers[xferpos].tx_buf = tmpbuf + op->addr.nbytes + 1;
|
xfers[xferpos].tx_buf = tmpbuf + op->addr.nbytes + 1;
|
||||||
xfers[xferpos].len = op->dummy.nbytes;
|
xfers[xferpos].len = op->dummy.nbytes;
|
||||||
xfers[xferpos].tx_nbits = op->dummy.buswidth;
|
xfers[xferpos].tx_nbits = op->dummy.buswidth;
|
||||||
|
xfers[xferpos].dummy_data = 1;
|
||||||
spi_message_add_tail(&xfers[xferpos], &msg);
|
spi_message_add_tail(&xfers[xferpos], &msg);
|
||||||
xferpos++;
|
xferpos++;
|
||||||
totalxferlen += op->dummy.nbytes;
|
totalxferlen += op->dummy.nbytes;
|
||||||
|
|||||||
@@ -825,6 +825,7 @@ extern void spi_res_release(struct spi_controller *ctlr,
|
|||||||
* transfer. If 0 the default (from @spi_device) is used.
|
* transfer. If 0 the default (from @spi_device) is used.
|
||||||
* @bits_per_word: select a bits_per_word other than the device default
|
* @bits_per_word: select a bits_per_word other than the device default
|
||||||
* for this transfer. If 0 the default (from @spi_device) is used.
|
* for this transfer. If 0 the default (from @spi_device) is used.
|
||||||
|
* @dummy_data: indicates transfer is dummy bytes transfer.
|
||||||
* @cs_change: affects chipselect after this transfer completes
|
* @cs_change: affects chipselect after this transfer completes
|
||||||
* @cs_change_delay: delay between cs deassert and assert when
|
* @cs_change_delay: delay between cs deassert and assert when
|
||||||
* @cs_change is set and @spi_transfer is not the last in @spi_message
|
* @cs_change is set and @spi_transfer is not the last in @spi_message
|
||||||
@@ -937,6 +938,7 @@ struct spi_transfer {
|
|||||||
struct sg_table tx_sg;
|
struct sg_table tx_sg;
|
||||||
struct sg_table rx_sg;
|
struct sg_table rx_sg;
|
||||||
|
|
||||||
|
unsigned dummy_data:1;
|
||||||
unsigned cs_change:1;
|
unsigned cs_change:1;
|
||||||
unsigned tx_nbits:3;
|
unsigned tx_nbits:3;
|
||||||
unsigned rx_nbits:3;
|
unsigned rx_nbits:3;
|
||||||
|
|||||||
Reference in New Issue
Block a user