linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 12/14] serial: liteuart: add IRQ support for the RX path
Date: Tue, 15 Nov 2022 18:21:00 +0200 (EET)	[thread overview]
Message-ID: <7b5042be-8061-d4f4-43b5-75a5ad6dbcb0@linux.intel.com> (raw)
In-Reply-To: <Y3O7AKVuY3/n6I5K@errol.ini.cmu.edu>

[-- Attachment #1: Type: text/plain, Size: 3159 bytes --]

On Tue, 15 Nov 2022, Gabriel L. Somlo wrote:

> On Tue, Nov 15, 2022 at 06:00:11PM +0200, Ilpo Järvinen wrote:
> > On Sat, 12 Nov 2022, Gabriel Somlo wrote:
> > 
> > > Add support for IRQ-driven RX. Support for the TX path will be added
> > > in a separate commit.
> > > 
> > > Signed-off-by: Gabriel Somlo <gsomlo@gmail.com>
> > > ---
> > >  drivers/tty/serial/liteuart.c | 61 +++++++++++++++++++++++++++++++----
> > >  1 file changed, 54 insertions(+), 7 deletions(-)
> > > 
> > > diff --git a/drivers/tty/serial/liteuart.c b/drivers/tty/serial/liteuart.c
> > > index cf1ce597b45e..e30adb30277f 100644
> > > --- a/drivers/tty/serial/liteuart.c
> > > +++ b/drivers/tty/serial/liteuart.c
> > > @@ -6,6 +6,7 @@
> > >   */
> > >  
> > >  #include <linux/console.h>
> > > +#include <linux/interrupt.h>
> > >  #include <linux/litex.h>
> > >  #include <linux/module.h>
> > >  #include <linux/of.h>
> > > @@ -130,13 +131,29 @@ static void liteuart_rx_chars(struct uart_port *port)
> > >  	tty_flip_buffer_push(&port->state->port);
> > >  }
> > >  
> > > +static irqreturn_t liteuart_interrupt(int irq, void *data)
> > > +{
> > > +	struct liteuart_port *uart = data;
> > > +	struct uart_port *port = &uart->port;
> > > +	u8 isr = litex_read8(port->membase + OFF_EV_PENDING);
> > > +
> > > +	/* for now, only rx path triggers interrupts */
> > 
> > Please don't add comment like this at all when your series removes it in a 
> > later patch.
> 
> OK, I will remove it in v4.
> 
> > > +	isr &= EV_RX;
> > > +
> > > +	spin_lock(&port->lock);
> > > +	if (isr & EV_RX)
> > > +		liteuart_rx_chars(port);
> > > +	spin_unlock(&port->lock);
> > > +
> > > +	return IRQ_RETVAL(isr);
> > > +}
> > > +
> > >  static void liteuart_timer(struct timer_list *t)
> > >  {
> > >  	struct liteuart_port *uart = from_timer(uart, t, timer);
> > >  	struct uart_port *port = &uart->port;
> > >  
> > > -	liteuart_rx_chars(port);
> > > -
> > > +	liteuart_interrupt(0, port);
> > >  	mod_timer(&uart->timer, jiffies + uart_poll_timeout(port));
> > >  }
> > >  
> > > @@ -162,19 +179,42 @@ static unsigned int liteuart_get_mctrl(struct uart_port *port)
> > >  static int liteuart_startup(struct uart_port *port)
> > >  {
> > >  	struct liteuart_port *uart = to_liteuart_port(port);
> > > +	int ret;
> > > +	u8 irq_mask = 0;
> > >  
> > > -	/* disable events */
> > > -	litex_write8(port->membase + OFF_EV_ENABLE, 0);
> > > +	if (port->irq) {
> > > +		ret = request_irq(port->irq, liteuart_interrupt, 0,
> > > +				  KBUILD_MODNAME, uart);
> > > +		if (ret == 0) {
> > > +			/* only enable rx interrupts at this time */
> > 
> > This comment seems pretty useless. Your code says very much the same.
> 
> The comment was meant to let the reader know that the code is doing it
> *intentionally* (rather than forgetting to enable tx irqs by mistake).
> But I'm OK with removing this comment in v4 as well if you think
> that's an overly paranoid and redundant thing to do... :)

I see. Reading the other comment first caused me to misinterpret this one 
to mean that only RX interrupts are implemented.

Maybe if you change "at this time" to "at startup" it would make it more 
obvious.

-- 
 i.

  reply	other threads:[~2022-11-15 16:21 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 [this message]
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
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=7b5042be-8061-d4f4-43b5-75a5ad6dbcb0@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 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).