tty: max310x: Split uart characters insertion loop
authorSerge Semin <fancer.lancer@gmail.com>
Tue, 14 May 2019 10:14:15 +0000 (13:14 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 21 May 2019 10:15:54 +0000 (12:15 +0200)
commit9c12d739d69b80847e99d24692ff20de993bf172
tree3b1dec44d8d0350c74cd50073d6f0abc2089fc3b
parent2b9e6f0a400b6be1a408cd63ed09cfeb8f5dd627
tty: max310x: Split uart characters insertion loop

Batch read mode doesn't check any conditions or flags except the Rx
overflow one. But it may only happen after the last character is pushed
into the RHR register. In this case we shouldn't push all the read
characters with overrun flag set, but only the last one caused the
FIFO overflow. This commit splits the characters retrieval loop into
two parts. First one is ordinary intsert-chars procedure without taking
the overrun status into account. Second part inserts the last character
checking whether the overrun happened and pushing a '\0' character with
TTY_OVERRUN flag to a flip-buffer.

If we left the loop the way it was the '\0' character would be inserted
after each character retrieved at the overrun occasion.

Signed-off-by: Serge Semin <fancer.lancer@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/max310x.c