tty: serial: imx: disable UCR4_OREN in .stop_rx() instead of .shutdown()
authorFugang Duan <fugang.duan@nxp.com>
Thu, 25 Nov 2021 02:03:49 +0000 (10:03 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 09:54:12 +0000 (10:54 +0100)
commitf0653cd4da669cbcddd81f8edd9f542805252691
treeae06115950acd0ab257f5d7e0c589642f8f7ac08
parentb8d10f601f226f055df8b5368d7ea7f369136cd5
tty: serial: imx: disable UCR4_OREN in .stop_rx() instead of .shutdown()

[ Upstream commit 028e083832b06fdeeb290e1e57dc1f6702c4c215 ]

The UCR4_OREN should be disabled before disabling the uart receiver in
.stop_rx() instead of in the .shutdown().

Otherwise, if we have the overrun error during the receiver disable
process, the overrun interrupt will keep trigging until we disable the
OREN interrupt in the .shutdown(), because the ORE status can only be
cleared when read the rx FIFO or reset the controller.  Although the
called time between the receiver disable and OREN disable in .shutdown()
is very short, there is still the risk of endless interrupt during this
short period of time. So here change to disable OREN before the receiver
been disabled in .stop_rx().

Signed-off-by: Fugang Duan <fugang.duan@nxp.com>
Signed-off-by: Sherry Sun <sherry.sun@nxp.com>
Link: https://lore.kernel.org/r/20211125020349.4980-1-sherry.sun@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/tty/serial/imx.c