All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Organov <sorganov@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-serial@vger.kernel.org,
	"Fabio Estevam" <festevam@gmail.com>,
	"Jiri Slaby" <jirislaby@kernel.org>,
	"Richard Genoud" <richard.genoud@gmail.com>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Tim Harvey" <tharvey@gateworks.com>,
	"Tomasz Moń" <tomasz.mon@camlingroup.com>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Johan Hovold" <johan@kernel.org>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"Sherry Sun" <sherry.sun@nxp.com>,
	"Stefan Wahren" <stefan.wahren@i2se.com>,
	linux-arm-kernel@lists.infradead.org,
	"NXP Linux Team" <linux-imx@nxp.com>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Sergey Organov" <sorganov@gmail.com>
Subject: [PATCH v1 6/7] serial: imx: stop using USR2 in FIFO reading loop
Date: Wed,  1 Feb 2023 17:26:59 +0300	[thread overview]
Message-ID: <20230201142700.4346-7-sorganov@gmail.com> (raw)
In-Reply-To: <20230201142700.4346-1-sorganov@gmail.com>

The chip provides all the needed bits in the URXD0 register that we read
anyway for data, so get rid of reading USR2 and use only URXD0 bits
instead.

Signed-off-by: Sergey Organov <sorganov@gmail.com>
---
 drivers/tty/serial/imx.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index af4349fe6970..488d8119562e 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -892,27 +892,21 @@ static irqreturn_t __imx_uart_rxint(int irq, void *dev_id)
 	struct tty_port *port = &sport->port.state->port;
 	u32 usr2;
 
-	usr2 = imx_uart_readl(sport, USR2);
-
 	/* If we received something, check for 0xff flood */
+	usr2 = imx_uart_readl(sport, USR2);
 	if (usr2 & USR2_RDR)
 		imx_uart_check_flood(sport, usr2);
 
-	for ( ; usr2 & USR2_RDR; usr2 = imx_uart_readl(sport, USR2)) {
+	while ((rx = imx_uart_readl(sport, URXD0)) & URXD_CHARRDY) {
 		flg = TTY_NORMAL;
 		sport->port.icount.rx++;
 
-		rx = imx_uart_readl(sport, URXD0);
-
-		if (usr2 & USR2_BRCD) {
-			imx_uart_writel(sport, USR2_BRCD, USR2);
-			if (uart_handle_break(&sport->port))
-				continue;
-		}
-
 		if (unlikely(rx & URXD_ERR)) {
-			if (rx & URXD_BRK)
+			if (rx & URXD_BRK) {
 				sport->port.icount.brk++;
+				if (uart_handle_break(&sport->port))
+					continue;
+			}
 			else if (rx & URXD_PRERR)
 				sport->port.icount.parity++;
 			else if (rx & URXD_FRMERR)
-- 
2.30.1


WARNING: multiple messages have this Message-ID (diff)
From: Sergey Organov <sorganov@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-serial@vger.kernel.org,
	"Fabio Estevam" <festevam@gmail.com>,
	"Jiri Slaby" <jirislaby@kernel.org>,
	"Richard Genoud" <richard.genoud@gmail.com>,
	"Sascha Hauer" <s.hauer@pengutronix.de>,
	"Shawn Guo" <shawnguo@kernel.org>,
	"Tim Harvey" <tharvey@gateworks.com>,
	"Tomasz Moń" <tomasz.mon@camlingroup.com>,
	"Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>,
	"Johan Hovold" <johan@kernel.org>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"Sherry Sun" <sherry.sun@nxp.com>,
	"Stefan Wahren" <stefan.wahren@i2se.com>,
	linux-arm-kernel@lists.infradead.org,
	"NXP Linux Team" <linux-imx@nxp.com>,
	"Pengutronix Kernel Team" <kernel@pengutronix.de>,
	"Sergey Organov" <sorganov@gmail.com>
Subject: [PATCH v1 6/7] serial: imx: stop using USR2 in FIFO reading loop
Date: Wed,  1 Feb 2023 17:26:59 +0300	[thread overview]
Message-ID: <20230201142700.4346-7-sorganov@gmail.com> (raw)
In-Reply-To: <20230201142700.4346-1-sorganov@gmail.com>

The chip provides all the needed bits in the URXD0 register that we read
anyway for data, so get rid of reading USR2 and use only URXD0 bits
instead.

Signed-off-by: Sergey Organov <sorganov@gmail.com>
---
 drivers/tty/serial/imx.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index af4349fe6970..488d8119562e 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -892,27 +892,21 @@ static irqreturn_t __imx_uart_rxint(int irq, void *dev_id)
 	struct tty_port *port = &sport->port.state->port;
 	u32 usr2;
 
-	usr2 = imx_uart_readl(sport, USR2);
-
 	/* If we received something, check for 0xff flood */
+	usr2 = imx_uart_readl(sport, USR2);
 	if (usr2 & USR2_RDR)
 		imx_uart_check_flood(sport, usr2);
 
-	for ( ; usr2 & USR2_RDR; usr2 = imx_uart_readl(sport, USR2)) {
+	while ((rx = imx_uart_readl(sport, URXD0)) & URXD_CHARRDY) {
 		flg = TTY_NORMAL;
 		sport->port.icount.rx++;
 
-		rx = imx_uart_readl(sport, URXD0);
-
-		if (usr2 & USR2_BRCD) {
-			imx_uart_writel(sport, USR2_BRCD, USR2);
-			if (uart_handle_break(&sport->port))
-				continue;
-		}
-
 		if (unlikely(rx & URXD_ERR)) {
-			if (rx & URXD_BRK)
+			if (rx & URXD_BRK) {
 				sport->port.icount.brk++;
+				if (uart_handle_break(&sport->port))
+					continue;
+			}
 			else if (rx & URXD_PRERR)
 				sport->port.icount.parity++;
 			else if (rx & URXD_FRMERR)
-- 
2.30.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2023-02-01 14:27 UTC|newest]

Thread overview: 107+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <87bko4e65y.fsf@osv.gnss.ru>
2022-12-15 21:38 ` serial: imx: sudden rx flood: hardware bug? Fabio Estevam
2022-12-15 22:58   ` Fabio Estevam
2022-12-16 17:08   ` Sergey Organov
2023-01-13 18:43 ` [PATCH 0/8] serial: imx: work-around for hardware RX flood, and then isr improvements Sergey Organov
2023-01-13 18:43   ` Sergey Organov
2023-01-13 18:43   ` [PATCH 1/8] serial: imx: factor-out common code to imx_uart_soft_reset() Sergey Organov
2023-01-13 18:43     ` Sergey Organov
2023-01-16 10:30     ` Ilpo Järvinen
2023-01-16 10:30       ` Ilpo Järvinen
2023-01-17 13:42       ` Sergey Organov
2023-01-17 13:42         ` Sergey Organov
2023-01-13 18:43   ` [PATCH 2/8] serial: imx: work-around for hardware RX flood Sergey Organov
2023-01-13 18:43     ` Sergey Organov
2023-01-13 18:43   ` [PATCH 3/8] serial: imx: do not sysrq broken chars Sergey Organov
2023-01-13 18:43     ` Sergey Organov
2023-01-16 10:41     ` Ilpo Järvinen
2023-01-16 10:41       ` Ilpo Järvinen
2023-01-16 15:24     ` Johan Hovold
2023-01-16 15:24       ` Johan Hovold
2023-01-17 17:35       ` Sergey Organov
2023-01-17 17:35         ` Sergey Organov
2023-01-18  8:06         ` Johan Hovold
2023-01-18  8:06           ` Johan Hovold
2023-01-13 18:43   ` [PATCH 4/8] serial: imx: do not break from FIFO reading loop prematurely Sergey Organov
2023-01-13 18:43     ` Sergey Organov
2023-01-13 18:43   ` [PATCH 5/8] serial: imx: remove redundant USR2 read from FIFO reading loop Sergey Organov
2023-01-13 18:43     ` Sergey Organov
2023-01-16 10:50     ` Ilpo Järvinen
2023-01-16 10:50       ` Ilpo Järvinen
2023-01-13 18:43   ` [PATCH 6/8] serial: imx: stop using USR2 in " Sergey Organov
2023-01-13 18:43     ` Sergey Organov
2023-01-16 10:54     ` Ilpo Järvinen
2023-01-16 10:54       ` Ilpo Järvinen
2023-01-17 13:30       ` Sergey Organov
2023-01-17 13:30         ` Sergey Organov
2023-01-13 18:43   ` [PATCH 7/8] serial: imx: use readl() to optimize " Sergey Organov
2023-01-13 18:43     ` Sergey Organov
2023-01-16 11:03     ` Ilpo Järvinen
2023-01-16 11:03       ` Ilpo Järvinen
2023-01-17 17:43       ` Sergey Organov
2023-01-17 17:43         ` Sergey Organov
2023-01-18  8:24         ` Ilpo Järvinen
2023-01-18  8:24           ` Ilpo Järvinen
2023-01-18 15:43           ` Sergey Organov
2023-01-18 15:43             ` Sergey Organov
2023-01-18 19:29             ` Ilpo Järvinen
2023-01-18 19:29               ` Ilpo Järvinen
2023-01-17 10:20     ` Sherry Sun
2023-01-17 10:20       ` Sherry Sun
2023-01-17 17:48       ` Sergey Organov
2023-01-17 17:48         ` Sergey Organov
2023-01-17 11:32     ` Uwe Kleine-König
2023-01-17 11:32       ` Uwe Kleine-König
2023-01-17 13:22       ` Sergey Organov
2023-01-17 13:22         ` Sergey Organov
2023-01-17 21:27         ` Uwe Kleine-König
2023-01-17 21:27           ` Uwe Kleine-König
2023-01-18 15:40           ` Sergey Organov
2023-01-18 15:40             ` Sergey Organov
2023-01-19  7:01             ` Uwe Kleine-König
2023-01-19  7:01               ` Uwe Kleine-König
2023-01-21 18:04               ` Sergey Organov
2023-01-21 18:04                 ` Sergey Organov
2023-01-13 18:43   ` [PATCH 8/8] serial: imx: refine local variables in rxint() Sergey Organov
2023-01-13 18:43     ` Sergey Organov
2023-01-21 15:36 ` [PATCH v1 0/7] serial: imx: work-around for hardware RX flood, and then isr improvements Sergey Organov
2023-01-21 15:36   ` Sergey Organov
2023-01-21 15:36   ` [PATCH v1 1/7] serial: imx: factor-out common code to imx_uart_soft_reset() Sergey Organov
2023-01-21 15:36     ` Sergey Organov
2023-01-21 15:36   ` [PATCH v1 2/7] serial: imx: work-around for hardware RX flood Sergey Organov
2023-01-21 15:36     ` Sergey Organov
2023-01-21 15:36   ` [PATCH v1 3/7] serial: imx: do not sysrq broken chars Sergey Organov
2023-01-21 15:36     ` Sergey Organov
2023-01-21 16:12     ` Stefan Wahren
2023-01-21 16:12       ` Stefan Wahren
2023-01-21 21:04       ` Sergey Organov
2023-01-21 21:04         ` Sergey Organov
2023-01-23 12:38         ` Ilpo Järvinen
2023-01-23 12:38           ` Ilpo Järvinen
2023-01-23 16:34           ` Sergey Organov
2023-01-23 16:34             ` Sergey Organov
2023-01-21 15:36   ` [PATCH v1 4/7] serial: imx: do not break from FIFO reading loop prematurely Sergey Organov
2023-01-21 15:36     ` Sergey Organov
2023-01-21 15:36   ` [PATCH v1 5/7] serial: imx: remove redundant USR2 read from FIFO reading loop Sergey Organov
2023-01-21 15:36     ` Sergey Organov
2023-01-21 15:36   ` [PATCH v1 6/7] serial: imx: stop using USR2 in " Sergey Organov
2023-01-21 15:36     ` Sergey Organov
2023-01-21 15:36   ` [PATCH v1 7/7] serial: imx: refine local variables in rxint() Sergey Organov
2023-01-21 15:36     ` Sergey Organov
2023-02-01 14:16 ` [PATCH RESEND] serial: imx: get rid of registers shadowing Sergey Organov
2023-02-01 14:16   ` Sergey Organov
2023-02-01 14:26 ` [PATCH v1 RESEND 0/7] serial: imx: work-around for hardware RX flood, and then isr improvements Sergey Organov
2023-02-01 14:26   ` Sergey Organov
2023-02-01 14:26   ` [PATCH v1 1/7] serial: imx: factor-out common code to imx_uart_soft_reset() Sergey Organov
2023-02-01 14:26     ` Sergey Organov
2023-02-01 14:26   ` [PATCH v1 2/7] serial: imx: work-around for hardware RX flood Sergey Organov
2023-02-01 14:26     ` Sergey Organov
2023-02-01 14:26   ` [PATCH v1 3/7] serial: imx: do not sysrq broken chars Sergey Organov
2023-02-01 14:26     ` Sergey Organov
2023-02-01 14:26   ` [PATCH v1 4/7] serial: imx: do not break from FIFO reading loop prematurely Sergey Organov
2023-02-01 14:26     ` Sergey Organov
2023-02-01 14:26   ` [PATCH v1 5/7] serial: imx: remove redundant USR2 read from FIFO reading loop Sergey Organov
2023-02-01 14:26     ` Sergey Organov
2023-02-01 14:26   ` Sergey Organov [this message]
2023-02-01 14:26     ` [PATCH v1 6/7] serial: imx: stop using USR2 in " Sergey Organov
2023-02-01 14:27   ` [PATCH v1 7/7] serial: imx: refine local variables in rxint() Sergey Organov
2023-02-01 14:27     ` Sergey Organov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230201142700.4346-7-sorganov@gmail.com \
    --to=sorganov@gmail.com \
    --cc=festevam@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=jirislaby@kernel.org \
    --cc=johan@kernel.org \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-serial@vger.kernel.org \
    --cc=richard.genoud@gmail.com \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=sherry.sun@nxp.com \
    --cc=stefan.wahren@i2se.com \
    --cc=tharvey@gateworks.com \
    --cc=tomasz.mon@camlingroup.com \
    --cc=u.kleine-koenig@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.