linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Falco Hyfing <hyfinglists@gmail.com>
To: linux-omap@vger.kernel.org, linux-serial@vger.kernel.org
Cc: Marek Vasut <marex@denx.de>,
	giulio.benetti@benettiengineering.com, aford173@gmail.com,
	andrej.skvortzov@gmail.com, sr@denx.de, rafael.gago@gmail.com,
	avistel@gmail.com, matwey.kornilov@gmail.com,
	yegorslists@gmail.com
Subject: Minimal patch against TI AM335x UART swallowing the first byte using the 8250_omap driver in RS485 mode
Date: Fri, 8 Nov 2019 15:41:38 +0100	[thread overview]
Message-ID: <249e4532-e7a6-a1f3-499f-8a2beef82f41@gmail.com> (raw)

I stumbled upon this unresolved issue where the TI AM335x UART is 
sporadically swallowing the first byte using the 8250_omap driver in 
RS485 mode.

Previous discussions of the issue ended on Christmas Eve last year. For 
reference:
https://marc.info/?w=2&r=1&s=fix+clearing+fifos+rs485+mode+again&q=t

As our company plans to move our serial device servers' firmware to an 
upstream kernel version we need a solution for this problem.

I appended a small patch that seems to resolve the issue for our products.

I would like to kindly ask whether you could test this patch with 
various serial hardware that would be affected by this driver.

Kind regards,

     Falco Hyfing
     Software Engineer at VisionSystems GmbH


diff --git a/drivers/tty/serial/8250/8250_port.c 
b/drivers/tty/serial/8250/8250_port.c
index 8407166610ce..25dd44d5f6ff 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -1405,7 +1405,8 @@ static void __do_stop_tx_rs485(struct 
uart_8250_port *p)
          * Enable previously disabled RX interrupts.
          */
         if (!(p->port.rs485.flags & SER_RS485_RX_DURING_TX)) {
-               serial8250_clear_and_reinit_fifos(p);
+               serial_port_out(&p->port, UART_FCR, p->fcr |
+                               UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT);

                 p->ier |= UART_IER_RLSI | UART_IER_RDI;
                 serial_port_out(&p->port, UART_IER, p->ier);


             reply	other threads:[~2019-11-08 14:41 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-08 14:41 Falco Hyfing [this message]
2019-11-08 15:45 ` Minimal patch against TI AM335x UART swallowing the first byte using the 8250_omap driver in RS485 mode Marek Vasut

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=249e4532-e7a6-a1f3-499f-8a2beef82f41@gmail.com \
    --to=hyfinglists@gmail.com \
    --cc=aford173@gmail.com \
    --cc=andrej.skvortzov@gmail.com \
    --cc=avistel@gmail.com \
    --cc=giulio.benetti@benettiengineering.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=marex@denx.de \
    --cc=matwey.kornilov@gmail.com \
    --cc=rafael.gago@gmail.com \
    --cc=sr@denx.de \
    --cc=yegorslists@gmail.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).