From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: "Gabriel L. Somlo" <gsomlo@gmail.com>
Cc: LKML <linux-kernel@vger.kernel.org>,
linux-serial <linux-serial@vger.kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Jiri Slaby <jirislaby@kernel.org>,
kgugala@antmicro.com, mholenko@antmicro.com, joel@jms.id.au,
david.abdurachmanov@gmail.com, florent@enjoy-digital.fr,
geert@linux-m68k.org
Subject: Re: [PATCH v3 13/14] serial: liteuart: add IRQ support for the TX path
Date: Tue, 15 Nov 2022 19:30:09 +0200 (EET) [thread overview]
Message-ID: <281fcd2-157e-c9ce-a0e5-b077ed43887a@linux.intel.com> (raw)
In-Reply-To: <Y3PI0gP0vnmYTmZK@errol.ini.cmu.edu>
[-- Attachment #1: Type: text/plain, Size: 2481 bytes --]
On Tue, 15 Nov 2022, Gabriel L. Somlo wrote:
> On Tue, Nov 15, 2022 at 06:14:50PM +0200, Ilpo Järvinen wrote:
> > On Sat, 12 Nov 2022, Gabriel Somlo wrote:
> >
> > > Modify the TX path to operate in an IRQ-compatible way, while
> > > maintaining support for polling mode via the poll timer.
> > >
> > > Signed-off-by: Gabriel Somlo <gsomlo@gmail.com>
> > > ---
> > > drivers/tty/serial/liteuart.c | 67 ++++++++++++++++++++++++-----------
> > > 1 file changed, 47 insertions(+), 20 deletions(-)
> > >
> > > diff --git a/drivers/tty/serial/liteuart.c b/drivers/tty/serial/liteuart.c
> > > index e30adb30277f..307c27398e30 100644
> > > --- a/drivers/tty/serial/liteuart.c
> > > +++ b/drivers/tty/serial/liteuart.c
> > > + if (port->irq) {
> > > + u8 irq_mask = litex_read8(port->membase + OFF_EV_ENABLE);
> > > + litex_write8(port->membase + OFF_EV_ENABLE, irq_mask & ~EV_TX);
> >
> > If you put irq_mask into liteuart_port you wouldn't need to read it
> > back here?
>
> So, instead of `bool poll_tx_started` I should just keep a copy of the
> irq_mask there, and take `&port->lock` whenever I need to *both* update
> the mask *and* write it out to the actual device register?
I was mostly thinking of storing EV_RX there but then it could be derived
from port->irq that is checked by all paths already.
> > > + if (unlikely(port->x_char)) {
> > > + litex_write8(port->membase + OFF_RXTX, port->x_char);
> > > + port->x_char = 0;
> > > + port->icount.tx++;
> > > + return;
> > > + }
> > > +
> > > + while (!litex_read8(port->membase + OFF_TXFULL)) {
> > > + if (xmit->head == xmit->tail)
> >
> > There exists a helper for this condition.
>
> Is that in the released linus tree, or still only in tty-next?
uart_circ_empty() has been around for ages.
> > > + if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
> > > + uart_write_wakeup(port);
> > > +
> > > + if (uart_circ_empty(xmit))
> > > + liteuart_stop_tx(port);
> > > +}
> >
> > You might want to check if you can generate this whole function with
> > Jiri's tx helpers (IIRC, they're only in tty-next tree currently).
>
> Looks like I should switch to tty-next for this whole series, which
> makes sense, since it's a tty I'm working on :)
>
> I'll rebase on top of that before I send out v4, hopefully later this
> afternoon.
Ok.
As I now looked it up, Jiri's tx helpers is
8275b48b278096edc1e3ea5aa9cf946a10022f79 and you'll find some example
conversions in the changes following it.
--
i.
next prev parent reply other threads:[~2022-11-15 17:30 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-12 21:21 [PATCH v3 00/14] serial: liteuart: add IRQ support Gabriel Somlo
2022-11-12 21:21 ` [PATCH v3 01/14] serial: liteuart: use KBUILD_MODNAME as driver name Gabriel Somlo
2022-11-12 21:21 ` [PATCH v3 02/14] serial: liteuart: use bit number macros Gabriel Somlo
2022-11-15 15:33 ` Ilpo Järvinen
2022-11-15 15:51 ` Gabriel L. Somlo
2022-11-12 21:21 ` [PATCH v3 03/14] serial: liteuart: remove unused uart_ops stubs Gabriel Somlo
2022-11-15 15:37 ` Ilpo Järvinen
2022-11-12 21:21 ` [PATCH v3 04/14] serial: liteuart: don't set unused port fields Gabriel Somlo
2022-11-12 21:21 ` [PATCH v3 05/14] serial: liteuart: minor style fix in liteuart_init() Gabriel Somlo
2022-11-15 15:40 ` Ilpo Järvinen
2022-11-12 21:21 ` [PATCH v3 06/14] serial: liteuart: move tty_flip_buffer_push() out of rx loop Gabriel Somlo
2022-11-15 15:38 ` Ilpo Järvinen
2022-11-12 21:21 ` [PATCH v3 07/14] serial: liteuart: rx loop should only ack rx events Gabriel Somlo
2022-11-12 21:21 ` [PATCH v3 08/14] serial: liteuart: simplify passing of uart_insert_char() flag Gabriel Somlo
2022-11-15 15:43 ` Ilpo Järvinen
2022-11-12 21:21 ` [PATCH v3 09/14] serial: liteuart: fix rx loop variable types Gabriel Somlo
2022-11-15 15:46 ` Ilpo Järvinen
2022-11-12 21:21 ` [PATCH v3 10/14] serial: liteuart: separate rx loop from poll timer Gabriel Somlo
2022-11-15 15:44 ` Ilpo Järvinen
2022-11-12 21:21 ` [PATCH v3 11/14] serial: liteuart: move function definitions Gabriel Somlo
2022-11-15 15:48 ` Ilpo Järvinen
2022-11-12 21:21 ` [PATCH v3 12/14] serial: liteuart: add IRQ support for the RX path Gabriel Somlo
2022-11-15 16:00 ` Ilpo Järvinen
2022-11-15 16:14 ` Gabriel L. Somlo
2022-11-15 16:21 ` Ilpo Järvinen
2022-11-15 16:26 ` Gabriel L. Somlo
2022-11-12 21:21 ` [PATCH v3 13/14] serial: liteuart: add IRQ support for the TX path Gabriel Somlo
2022-11-13 12:06 ` Gabriel L. Somlo
2022-11-15 16:14 ` Ilpo Järvinen
2022-11-15 17:13 ` Gabriel L. Somlo
2022-11-15 17:30 ` Ilpo Järvinen [this message]
2022-11-15 18:21 ` Gabriel L. Somlo
2022-11-16 0:16 ` Gabriel L. Somlo
2022-11-16 11:26 ` Ilpo Järvinen
2022-11-12 21:21 ` [PATCH v3 14/14] serial: liteuart: move polling putchar() function Gabriel Somlo
2022-11-15 16:16 ` Ilpo Järvinen
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=281fcd2-157e-c9ce-a0e5-b077ed43887a@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=david.abdurachmanov@gmail.com \
--cc=florent@enjoy-digital.fr \
--cc=geert@linux-m68k.org \
--cc=gregkh@linuxfoundation.org \
--cc=gsomlo@gmail.com \
--cc=jirislaby@kernel.org \
--cc=joel@jms.id.au \
--cc=kgugala@antmicro.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=mholenko@antmicro.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.