Hi,
I think your patch is not complete, because you did not correct the normal mode. Shouldn't you do the same at the end of mxs_auart_rx_chars(struct mxs_auart_port *s), because it is also called in irq context.
Also, after reading tty_flip_buffer() from atomic context when low_latency==1 (Linux Serial), it seems to me that the flag ASYNC_LOW_LATENCY has to be removed. After some investigation, its seems to be used in different context.
It is mostly (and commonly) set by userland software which want to reduce the latency when receiving characters. In this case, it is used by driver to change the way they drive the hardware depending on what the user want.
It is only set by some few driver (like CDC-ACM for example). In this case, not that the userland have no way to disable this flag.
Imho (but correct me if I'm wrong), it should never be set by the driver directly but the driver should take care of it (like your patch did), and not throw an ugly exception if this flag is requested by the user.
By the way, I was going here because I saw some latency problem, and that flag felt really strange to me and caught my attention.
I figure out that my problem was related to the "really high" value of the rxtimeout flag which is configured to 0x80 in DMA mode (1031 bits), whereas the reference manual wrote that the default value is 0x03 (31 bits).