WARNING: conditionally tested patches, -- see CAVEAT below for details. The original problem that caused these changes was broken bytes being sent/received at random on RTS/CTS handshake switch (i.e., on setting/clearing termios CRTSCTS bit). As it went, a few other problems were found and fixed, and then the fix for original issue has been split into multiple patches that seem to make sense by themselves. Thus, the "serial: imx: fix data breakage on termios change", that finally fixes the issue, depends on 2 preceding patches. The last patch in the series, "serial: imx: use Tx ready rather than Tx empty irq" is independent of the rest and doesn't fix any serious issue, but it should get rid of holes in continuous output, specifically in PIO mode. CAVEAT: Originally, patches have been tested (and are still in use) on a board based on iMX6SX ARM chip, but they are made on top of 4.9.146 Linux kernel with 'imx_4.9.11_1.0.0_ga' branch of 'linux-imx' (imx vendor) repo merged in, to be able to run on actual hardware (bare 4.9.x Linux panics on iMX6SX). These series is that original set rebased on top of mainstream Linux v5.1, and the result has only been checked to compile, i.e., no run tests were performed, as I can't run any mainstream Linux on my board. I also have similar series on top of mainstream v4.9.146, if that's more appropriate. However, those series have 1 more patch, that happenes to match one that's already included in v5.1. Sergey Organov (8): serial: imx: fix DTR inversion serial: imx: fix breaking RTS/CTS handshake by mctrl change serial: imx: preserve RTS state over termios change serial: imx: get rid of unbounded busy-waiting loop serial: imx: do not stop Rx/Tx on termios change serial: imx: do not disable individual irqs during termios change serial: imx: fix data breakage on termios change serial: imx: use Tx ready rather than Tx empty irq drivers/tty/serial/imx.c | 68 +++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 36 deletions(-) -- 2.10.0.1.g57b01a3