linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v6 00/14] serial: liteuart: add IRQ support
@ 2022-11-23 13:04 Gabriel Somlo
  2022-11-23 13:04 ` [PATCH v6 01/14] serial: liteuart: use KBUILD_MODNAME as driver name Gabriel Somlo
                   ` (14 more replies)
  0 siblings, 15 replies; 16+ messages in thread
From: Gabriel Somlo @ 2022-11-23 13:04 UTC (permalink / raw)
  To: linux-kernel
  Cc: linux-serial, gregkh, jirislaby, kgugala, mholenko, joel,
	david.abdurachmanov, florent, geert, ilpo.jarvinen

Add IRQ support to the LiteX LiteUART serial interface

Changes from v5:
  - picked up r/b Geert Uytterhoeven on select subset of commits
  - 09/14 ("clean up rx loop variables"):
    - eliminate `status` variable altogether as its value is known
      and constant inside the loop;
    - switch `ch` to `u8`, to match the call *producing* it
      (`litex_read8()`) instead of those consuming its value.
  - 12/14 ("add IRQ support for the RX path"):
    - s/dev_err()/dev_warn()/ when falling back to polling in
      `liteuart_startup()`
    - use `spin_[lock_irqsave|unlock_irqrestore]()` in the interrupt
      handler, since the same code may also be called in "serving_softirq"
      context when using a poll timer instead of interrupts

> Changes from v4:
>   - picked up r/b Ilpo Järvinen on 12/14 and 13/14
>   - 12/14 ("add IRQ support for the RX path"): using dev_err() instead
>     of combining pr_err() and pr_fmt(); also, remove superfluous comment
>
> Changes from v3:
>   - picked up r/b Ilpo Järvinen on select subset of commits
>   - rebased entire series on top of tty-next tree
>   - 2/14 ("use bit number macros"): explicitly include <linux/bits.h>
>   - 3/14 ("remove unused uart_ops stubs"): don't add gratuitous comment
>     removed later on in the series
>   - 12/14 ("add IRQ support for the RX path"): add shadow irq register
>     to support polling mode and avoid reading hardware mmio irq register
>     to learn which irq flags are enabled
>     - this also simplifies both liteuart_interrupt() and liteuart_startup()
>   - 13/14 ("add IRQ support for the TX path"):
>     - removed superfluous curly braces from liteuart_interrupt()
>     - simplified [start|stop]_tx() by using shadow irq register from 12/14
>     - simplified liteuart_tx_chars() by rebasing on top of tty-next tree
>
> Changes from v2:
>   - further split out "separate RX loop from poll timer" into
>     dedicated patches highlighting additional changes explicitly:
>       - factoring out tty_flip_buffer_push() (6/14)
>       - ack only RX events in RX loop (7/14)
>       - pass constant flag to uart_insert_char() directly (8/14)
>       - fix variable types in rx loop (9/14)
>       - separating RX loop from poll timer (10/14)
>   - added patch (11/14) to move function definitions to a more
>     convenient location, making subsequent changes easier to read
>     in diff patch form.
>   - fixes and clarifications for RX path IRQ support patch (now 12/14):
>       - only return IRQ_HANDLED for RX events
>       - use pr_fmt() to improve style of irq setup error message
>       - remove unnecessary locking from around single-register access
>   - modify TX path to support both IRQ-mode and polling (13/14)
>   - move polling-only liteuart_putchar() behind same conditional
>     (CONFIG_SERIAL_LITEUART_CONSOLE) as the rest of the code that's
>     still using it.
>
> Changes from v1:
>   - split minor cosmetic changes out into individual patches
>     (1/3 became 1..5/7)
>   - patches 6/7 and 7/7 unchanged (used to be 2/3 and 3/3)

Gabriel Somlo (14):
  serial: liteuart: use KBUILD_MODNAME as driver name
  serial: liteuart: use bit number macros
  serial: liteuart: remove unused uart_ops stubs
  serial: liteuart: don't set unused port fields
  serial: liteuart: minor style fix in liteuart_init()
  serial: liteuart: move tty_flip_buffer_push() out of rx loop
  serial: liteuart: rx loop should only ack rx events
  serial: liteuart: simplify passing of uart_insert_char() flag
  serial: liteuart: clean up rx loop variables
  serial: liteuart: separate rx loop from poll timer
  serial: liteuart: move function definitions
  serial: liteuart: add IRQ support for the RX path
  serial: liteuart: add IRQ support for the TX path
  serial: liteuart: move polling putchar() function

 drivers/tty/serial/liteuart.c | 217 +++++++++++++++++++++-------------
 1 file changed, 132 insertions(+), 85 deletions(-)

-- 
2.38.1


^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2022-11-24  7:22 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-23 13:04 [PATCH v6 00/14] serial: liteuart: add IRQ support Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 01/14] serial: liteuart: use KBUILD_MODNAME as driver name Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 02/14] serial: liteuart: use bit number macros Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 03/14] serial: liteuart: remove unused uart_ops stubs Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 04/14] serial: liteuart: don't set unused port fields Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 05/14] serial: liteuart: minor style fix in liteuart_init() Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 06/14] serial: liteuart: move tty_flip_buffer_push() out of rx loop Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 07/14] serial: liteuart: rx loop should only ack rx events Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 08/14] serial: liteuart: simplify passing of uart_insert_char() flag Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 09/14] serial: liteuart: clean up rx loop variables Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 10/14] serial: liteuart: separate rx loop from poll timer Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 11/14] serial: liteuart: move function definitions Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 12/14] serial: liteuart: add IRQ support for the RX path Gabriel Somlo
2022-11-23 13:04 ` [PATCH v6 13/14] serial: liteuart: add IRQ support for the TX path Gabriel Somlo
2022-11-23 13:05 ` [PATCH v6 14/14] serial: liteuart: move polling putchar() function Gabriel Somlo
2022-11-24  7:02 ` [PATCH v6 00/14] serial: liteuart: add IRQ support Jiri Slaby

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).