All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Lukas Wunner <lukas@wunner.de>
Cc: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>,
	Roosen Henri <Henri.Roosen@ginzinger.com>,
	linux-serial@vger.kernel.org,
	Ilpo Jarvinen <ilpo.jarvinen@linux.intel.com>,
	Jiri Slaby <jirislaby@kernel.org>,
	Lino Sanfilippo <LinoSanfilippo@gmx.de>,
	David Laight <David.Laight@aculab.com>,
	Maarten Brock <m.brock@vanmierlo.com>,
	Jan Kiszka <jan.kiszka@siemens.com>,
	Su Bao Cheng <baocheng.su@siemens.com>,
	Chao Zeng <chao.zeng@siemens.com>,
	Peter Hung <hpeter+linux_kernel@gmail.com>,
	Daniel Golle <daniel@makrotopia.org>,
	"Codrin.Ciubotariu@microchip.com"
	<Codrin.Ciubotariu@microchip.com>,
	Sherry Sun <sherry.sun@nxp.com>,
	Serge Semin <Sergey.Semin@baikalelectronics.ru>,
	Ricardo Ribalda <ribalda@kernel.org>,
	Dario Binacchi <dariobin@libero.it>,
	Bich Hemon <bich.hemon@st.com>, Marek Vasut <marex@denx.de>,
	Vicente Bergas <vicencb@gmail.com>
Subject: Re: [PATCH v2] serial: Deassert Transmit Enable on probe in driver-specific way
Date: Thu, 22 Sep 2022 16:43:51 +0200	[thread overview]
Message-ID: <Yyx0p4d5vcjt2XNB@kroah.com> (raw)
In-Reply-To: <e688f63bc28827b0e8c9d8e2319e688aee412d24.1663733425.git.lukas@wunner.de>

On Wed, Sep 21, 2022 at 06:39:33AM +0200, Lukas Wunner wrote:
> When a UART port is newly registered, uart_configure_port() seeks to
> deassert RS485 Transmit Enable by setting the RTS bit in port->mctrl.
> However a number of UART drivers interpret a set RTS bit as *assertion*
> instead of deassertion:  Affected drivers include those using
> serial8250_em485_config() (except 8250_bcm2835aux.c) and some using
> mctrl_gpio (e.g. imx.c).
> 
> Since the interpretation of the RTS bit is driver-specific, it is not
> suitable as a means to centrally deassert Transmit Enable in the serial
> core.  Instead, the serial core must call on drivers to deassert it in
> their driver-specific way.  One way to achieve that is to call
> ->rs485_config().  It implicitly deasserts Transmit Enable.
> 
> So amend uart_configure_port() and uart_resume_port() to invoke
> uart_rs485_config().  That allows removing calls to uart_rs485_config()
> from drivers' ->probe() hooks and declaring the function static.
> 
> Skip any invocation of ->set_mctrl() if RS485 is enabled.  RS485 has no
> hardware flow control, so the modem control lines are irrelevant and
> need not be touched.  When leaving RS485 mode, reset the modem control
> lines to the state stored in port->mctrl.  That way, UARTs which are
> muxed between RS485 and RS232 transceivers drive the lines correctly
> when switched to RS232.  (serial8250_do_startup() historically raises
> the OUT1 modem signal because otherwise interrupts are not signaled on
> ancient PC UARTs, but I believe that no longer applies to modern,
> RS485-capable UARTs and is thus safe to be skipped.)
> 
> imx.c modifies port->mctrl whenever Transmit Enable is asserted and
> deasserted.  Stop it from doing that so port->mctrl reflects the RS232
> line state.
> 
> 8250_omap.c deasserts Transmit Enable on ->runtime_resume() by calling
> ->set_mctrl().  Because that is now a no-op in RS485 mode, amend the
> function to call serial8250_em485_stop_tx().
> 
> fsl_lpuart.c retrieves and applies the RS485 device tree properties
> after registering the UART port.  Because applying now happens on
> registration in uart_configure_port(), move retrieval of the properties
> ahead of uart_add_one_port().
> 
> Fixes: d3b3404df318 ("serial: Fix incorrect rs485 polarity on uart open")
> Reported-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
> Tested-by: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
> Link: https://lore.kernel.org/all/20220329085050.311408-1-matthias.schiffer@ew.tq-group.com/
> Reported-by: Roosen Henri <Henri.Roosen@ginzinger.com>
> Link: https://lore.kernel.org/all/8f538a8903795f22f9acc94a9a31b03c9c4ccacb.camel@ginzinger.com/
> Signed-off-by: Lukas Wunner <lukas@wunner.de>
> Cc: stable@vger.kernel.org # v4.14+
> ---
>  v1 -> v2:
>  Deassert RTS in serial8250_em485_init() only if no transmission is
>  currently ongoing (Ilpo)
> 
>  Based on v6.0-rc3 + this dependency:
>  https://lore.kernel.org/linux-serial/72fb646c1b0b11c989850c55f52f9ff343d1b2fa.1662884345.git.lukas@wunner.de/

This message never made it to lore.kernel.org, so I can't seem to apply
it using `b4`.

Can you resend it so that it does make it to the public archives?

thanks,

greg k-h

       reply	other threads:[~2022-09-22 14:43 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <e688f63bc28827b0e8c9d8e2319e688aee412d24.1663733425.git.lukas@wunner.de>
2022-09-22 14:43 ` Greg Kroah-Hartman [this message]
2022-09-22 15:43   ` [PATCH v2] serial: Deassert Transmit Enable on probe in driver-specific way Lukas Wunner
2022-09-22 16:06     ` Greg Kroah-Hartman
2022-09-22 16:30       ` Lukas Wunner
2022-10-07 11:34         ` Matthias Schiffer
2022-10-07 12:02           ` Lukas Wunner

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=Yyx0p4d5vcjt2XNB@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=Codrin.Ciubotariu@microchip.com \
    --cc=David.Laight@aculab.com \
    --cc=Henri.Roosen@ginzinger.com \
    --cc=LinoSanfilippo@gmx.de \
    --cc=Sergey.Semin@baikalelectronics.ru \
    --cc=baocheng.su@siemens.com \
    --cc=bich.hemon@st.com \
    --cc=chao.zeng@siemens.com \
    --cc=daniel@makrotopia.org \
    --cc=dariobin@libero.it \
    --cc=hpeter+linux_kernel@gmail.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=jan.kiszka@siemens.com \
    --cc=jirislaby@kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=lukas@wunner.de \
    --cc=m.brock@vanmierlo.com \
    --cc=marex@denx.de \
    --cc=matthias.schiffer@ew.tq-group.com \
    --cc=ribalda@kernel.org \
    --cc=sherry.sun@nxp.com \
    --cc=vicencb@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 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.