All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/15] serial: add new I/O type for SPI and I2C bus devices
@ 2026-04-28 17:53 Hugo Villeneuve
  2026-04-28 17:53 ` [PATCH v2 01/15] serial: 8250_hub6: add hub6_match_port() Hugo Villeneuve
                   ` (14 more replies)
  0 siblings, 15 replies; 31+ messages in thread
From: Hugo Villeneuve @ 2026-04-28 17:53 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Jiri Slaby
  Cc: hugo, ilpo.jarvinen, linux-kernel, linux-serial, Hugo Villeneuve

Hello,
this patch series add a new I/O type for serial devices on a SPI/I2C bus,
and a few related cleanups/improvements.

These changes are based on a suggestion [1] made by Ilpo Järvinen during
past sc16is7xx driver patches review.

The first patches make use of uart_iotype_*() functions to simplify and
cleanup the UART report functions.

This cleanup sets the stage to avoid displaying irrelevant MMIO or legacy
I/O information for serial devices on I2C or SPI busses when we add the new
UPIO_BUS type.

The patch "serial: uniformize serial port I/O infos display" is more of an
RFC as an attempt to uniformize the display of I/O informations. If deemed
usefull/appropriate, it can be reworked and integrasted with previous
patches.

Tested on a imx6 board with two SC16is752 using SPI mode, and a dummy
device-tree entry for a MAX3100:
  dmesg -t | grep "base_baud"
    2020000.serial: ttymxc0 at MMIO 0x2020000 (irq = 197, base_baud = 5000000) is a IMX
    21e8000.serial: ttymxc1 at MMIO 0x21e8000 (irq = 198, base_baud = 5000000) is a IMX
    spi1.0: ttySC0 (irq = 165, base_baud = 1500000) is a SC16IS752
    spi1.0: ttySC1 (irq = 165, base_baud = 1500000) is a SC16IS752
    spi3.0: ttySC2 (irq = 37, base_baud = 1500000) is a SC16IS752
    spi3.0: ttySC3 (irq = 37, base_baud = 1500000) is a SC16IS752
    spi3.1: ttyMAX0 (irq = 0, base_baud = 0) is a MAX3100
Note that before these patches, max3100 silently failed in uart_configure_port()
because membase/iobase/mapbase were zero.

For max310x and SC16is7xx in i2c mode, tested only that driver is properly
registered by using i2c-stub.

Also tested on a custom board with a Renesas RZ/G2L cpu (sh-sci driver) to
confirm there is no regression (also with earlycon):
  dmesg -t | grep "MMIO"
    earlycon: scif0 at MMIO 0x000000001004b800 (options '115200n8')
    1004b800.serial: ttySC0 at MMIO 0x000000001004b800 (irq = 35, base_baud = 0) is a scif
    1004bc00.serial: ttySC1 at MMIO 0x000000001004bc00 (irq = 40, base_baud = 0) is a scif

Maybe some of the patches could be merged together, but for now I decided
to keep them separate to help the review process.

Thank you.

[1] https://lore.kernel.org/lkml/2936e18f-44ea-faed-9fa0-2ddefe7c3194@linux.intel.com/raw

Link: [v1] https://lore.kernel.org/all/20260423-tty-upio-v1-0-baf82d3b86d1@dimonoff.com/

Changes for v2:
- Replace snprintf with scnprintf (Ilpo)
- Fix alignment of : to ? (Ilpo)
- Move hub6 match port to 8250_hub6.c (Ilpo)
- earlycon: use uart_iotype_*()
- 8250_rsa: use uart_iotype_*()
- 8250_port: use uart_iotype_*() in serial_port_out_sync()
- simplified uart_line_info() even more and remove intermediate mmio
  variable
- Split and rename patch serial: core: prevent irrelevant I/O infos display
  for UPIO_BUS to serial: core: use uart_iotype_*() to simplify
  uart_report_port() and moved before UPIO_BUS patch.
- Add a new patch to implement a function to uniformize the display
  of I/O infos for uart_report_port(), uart_line_info() and
  earlycon_print_info(). If accepted could be better integrated/merged with
  the next series submission. If not, can simply be dropped.
- Add patch for uart_regiowidth_to_iotype()

---
Hugo Villeneuve (15):
      serial: 8250_hub6: add hub6_match_port()
      serial: core: add uart_iotype_mmio/legacy_io helper functions
      serial: core: use uart_iotype_*() to simplify uart_match_port()
      serial: core: use uart_iotype_*() to simplify uart_line_info()
      serial: core: replace snprintf with more robust scnprintf
      serial: core: fix indentation/alignment
      serial: core: use uart_iotype_*() to simplify uart_report_port()
      serial: earlycon: use uart_iotype_*() to simplify code
      serial: 8250: use uart_iotype_*() to simplify code
      serial: 8250_rsa: use uart_iotype_*() to simplify code
      serial: core: add new I/O type for SPI and I2C bus devices
      serial: sc16is7xx: use new UPIO_BUS as iotype
      serial: max310x: use new UPIO_BUS as iotype
      serial: max3100: use new UPIO_BUS as iotype
      serial: uniformize serial port I/O infos display

 drivers/tty/serial/8250/8250.h      |   7 ++
 drivers/tty/serial/8250/8250_hub6.c |   6 ++
 drivers/tty/serial/8250/8250_port.c |  43 ++---------
 drivers/tty/serial/8250/8250_rsa.c  |  40 +++++------
 drivers/tty/serial/earlycon.c       |  17 ++---
 drivers/tty/serial/max3100.c        |   1 +
 drivers/tty/serial/max310x.c        |   9 +--
 drivers/tty/serial/sc16is7xx.c      |   9 +--
 drivers/tty/serial/serial_core.c    | 137 ++++++++++++++++++++++--------------
 include/linux/serial_core.h         |   6 ++
 include/uapi/linux/serial.h         |   1 +
 11 files changed, 137 insertions(+), 139 deletions(-)
---
base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731
change-id: 20260428-tty-upio-93a350a4d69a

Best regards,
-- 
Hugo Villeneuve <hvilleneuve@dimonoff.com>


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

end of thread, other threads:[~2026-05-04 16:01 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-28 17:53 [PATCH v2 00/15] serial: add new I/O type for SPI and I2C bus devices Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 01/15] serial: 8250_hub6: add hub6_match_port() Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 02/15] serial: core: add uart_iotype_mmio/legacy_io helper functions Hugo Villeneuve
2026-04-30 15:08   ` Andy Shevchenko
2026-04-30 15:30     ` Hugo Villeneuve
2026-05-01 11:48       ` Andy Shevchenko
2026-05-02 23:25     ` Maciej W. Rozycki
2026-05-04  8:48       ` Andy Shevchenko
2026-05-04 11:44         ` Maciej W. Rozycki
2026-05-04 14:30           ` Andy Shevchenko
2026-05-04 15:20             ` Maciej W. Rozycki
2026-05-04 15:59               ` Andy Shevchenko
2026-04-28 17:53 ` [PATCH v2 03/15] serial: core: use uart_iotype_*() to simplify uart_match_port() Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 04/15] serial: core: use uart_iotype_*() to simplify uart_line_info() Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 05/15] serial: core: replace snprintf with more robust scnprintf Hugo Villeneuve
2026-04-30 15:07   ` Andy Shevchenko
2026-05-04 15:27     ` Hugo Villeneuve
2026-05-04 15:59       ` Andy Shevchenko
2026-04-28 17:53 ` [PATCH v2 06/15] serial: core: fix indentation/alignment Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 07/15] serial: core: use uart_iotype_*() to simplify uart_report_port() Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 08/15] serial: earlycon: use uart_iotype_*() to simplify code Hugo Villeneuve
2026-04-30 15:03   ` Andy Shevchenko
2026-05-04 15:40     ` Hugo Villeneuve
2026-05-04 16:01       ` Andy Shevchenko
2026-04-28 17:53 ` [PATCH v2 09/15] serial: 8250: " Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 10/15] serial: 8250_rsa: " Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 11/15] serial: core: add new I/O type for SPI and I2C bus devices Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 12/15] serial: sc16is7xx: use new UPIO_BUS as iotype Hugo Villeneuve
2026-04-28 17:53 ` [PATCH v2 13/15] serial: max310x: " Hugo Villeneuve
2026-04-28 17:54 ` [PATCH v2 14/15] serial: max3100: " Hugo Villeneuve
2026-04-28 17:54 ` [PATCH v2 15/15] serial: uniformize serial port I/O infos display Hugo Villeneuve

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.