All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Simon Gassner" <simon.gassner@noxsystems.com>
Cc: linux-serial@vger.kernel.org
Subject: Re: [PATCH] serial: tegra: don't clear the Tx FIFO on an Rx-only reset
Date: Thu, 01 Oct 2026 06:27:10 +0000	[thread overview]
Message-ID: <20261001062710.CB7DF1F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20261001060539.32659-1-simon.gassner@noxsystems.com>

> tegra_uart_fifo_reset() applies the Tegra30 workaround for
> "cannot clear the Tx FIFO while FIFO mode is enabled"
> unconditionally: it leaves FIFO mode, writes the requested FCR
> clear bits, and re-enters FIFO mode. Leaving FIFO mode empties
> both FIFOs, so an Rx-only reset discards queued Tx data as well.
> 
> The break handler in tegra_uart_decode_rx_error() calls it with
> UART_FCR_CLEAR_RCVR only. On a half-duplex RS485 board whose Rx
> line is pulled low while the transceiver drives the bus, every
> transmission raises a spurious break, and all but the first
> character of the frame is lost.
> 
> Only take the FIFO-mode path when the caller actually asked for
> CLEAR_XMIT. Likewise only wait for TEMT in that case: with the Tx
> FIFO deliberately left intact, that loop would otherwise spin for
> a full frame time in hard IRQ context with the port lock held.
> 
> Tested on a Colibri T30 (Tegra30) with Rx DMA:
> 
>  - Break during transmission: the reset still fires from
>    tegra_uart_decode_rx_error(), and the complete frame now
>    reaches the peer. Before this change only the character in
>    the shift register was sent.
>  - Internal loopback with a generated break: the Rx FIFO is
>    correctly cleared by the plain FCR write, and subsequent
>    receive works with no frame, parity or overrun errors.
> 
> Fixes: e9ea096dd225 ("serial: tegra: add serial driver")
> Cc: stable@vger.kernel.org
> Signed-off-by: Simon Gassner <simon.gassner@noxsystems.com>

Sashiko has reviewed this patch and found no issues. It looks great!

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20261001060539.32659-1-simon.gassner@noxsystems.com?part=1


      reply	other threads:[~2026-10-01  6:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-01  6:05 [PATCH] serial: tegra: don't clear the Tx FIFO on an Rx-only reset Simon Gassner
2026-10-01  6:27 ` sashiko-bot [this message]

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=20261001062710.CB7DF1F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=simon.gassner@noxsystems.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 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.