NFC: trf7970a: Use spi_sync() instead of spi_write_then_read()
To more efficiently handle long continuous reads, use spi_sync() instead of spi_write_then_read(). Signed-off-by: Mark A. Greer <mgreer@animalcreek.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
24707296c7
commit
3e7f335689
|
@ -393,15 +393,28 @@ static int trf7970a_read(struct trf7970a *trf, u8 reg, u8 *val)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int trf7970a_read_cont(struct trf7970a *trf, u8 reg,
|
||||
u8 *buf, size_t len)
|
||||
static int trf7970a_read_cont(struct trf7970a *trf, u8 reg, u8 *buf, size_t len)
|
||||
{
|
||||
u8 addr = reg | TRF7970A_CMD_BIT_RW | TRF7970A_CMD_BIT_CONTINUOUS;
|
||||
struct spi_transfer t[2];
|
||||
struct spi_message m;
|
||||
int ret;
|
||||
|
||||
dev_dbg(trf->dev, "read_cont(0x%x, %zd)\n", addr, len);
|
||||
|
||||
ret = spi_write_then_read(trf->spi, &addr, 1, buf, len);
|
||||
spi_message_init(&m);
|
||||
|
||||
memset(&t, 0, sizeof(t));
|
||||
|
||||
t[0].tx_buf = &addr;
|
||||
t[0].len = sizeof(addr);
|
||||
spi_message_add_tail(&t[0], &m);
|
||||
|
||||
t[1].rx_buf = buf;
|
||||
t[1].len = len;
|
||||
spi_message_add_tail(&t[1], &m);
|
||||
|
||||
ret = spi_sync(trf->spi, &m);
|
||||
if (ret)
|
||||
dev_err(trf->dev, "%s - addr: 0x%x, ret: %d\n", __func__, addr,
|
||||
ret);
|
||||
|
|
Loading…
Reference in New Issue