lkml.org 
[lkml]   [2022]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v6 00/14] serial: liteuart: add IRQ support
    Date
    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

    \
     
     \ /
      Last update: 2022-11-23 14:26    [W:4.218 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site