forked from Minki/linux
NFC: trf7970a: Only fill FIFO if there is space
Handle the case where trf7970a_fill_fifo() is called but there is no room in the FIFO for more TX data. When this happens, wait for another interrupt indicating that there is now space (and set a timer in case that interrupt never occurs). Signed-off-by: Mark A. Greer <mgreer@animalcreek.com> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
parent
7a1e5552af
commit
0e840ed59b
@ -580,6 +580,12 @@ static void trf7970a_fill_fifo(struct trf7970a *trf)
|
|||||||
|
|
||||||
/* Calculate how much more data can be written to the fifo */
|
/* Calculate how much more data can be written to the fifo */
|
||||||
len = TRF7970A_FIFO_SIZE - fifo_bytes;
|
len = TRF7970A_FIFO_SIZE - fifo_bytes;
|
||||||
|
if (!len) {
|
||||||
|
schedule_delayed_work(&trf->timeout_work,
|
||||||
|
msecs_to_jiffies(TRF7970A_WAIT_FOR_FIFO_DRAIN_TIMEOUT));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
len = min(skb->len, len);
|
len = min(skb->len, len);
|
||||||
|
|
||||||
prefix = TRF7970A_CMD_BIT_CONTINUOUS | TRF7970A_FIFO_IO_REGISTER;
|
prefix = TRF7970A_CMD_BIT_CONTINUOUS | TRF7970A_FIFO_IO_REGISTER;
|
||||||
|
Loading…
Reference in New Issue
Block a user