Package: src:linux Version: 6.1.107-1 Severity: wishlist Tags: patch
Dear MaintainerPlease consider adding a backport patch to support SystemBase Multi I/O PCI cards in the Debian kernel.
The upstream patch was authored by Michael Walle and adds the necessary PCI IDs and configurations for the 8250 serial driver. This is a backport of the following upstream commit/patch:https://lore.kernel.org/all/[email protected]/
I have generated the unified diff from the backported commit and attached it to this email.
It applies cleanly to the Debian kernel patch series. -- Thank you! Jochen Baltes
From 59a7768d266bf8951d16b0dbda3e45f11a577632 Mon Sep 17 00:00:00 2001 From: Jochen Baltes <[email protected]> Date: Fri, 25 Sep 2026 10:16:36 +0200 Subject: [PATCH] tty: serial: 8250: Add SystemBase Multi I/O cards [Backport] Add support for the SystemBas Multi I/O serial cards, which are "compatible" with standard 16550A controllers, except that they need to have their inerrupts enabled in a proprietary way. Backport of Michael Walle's patch to add support for SystemBase Multi I/O cards. Signed-off-by: Jochen Baltes <[email protected]> --- drivers/tty/serial/8250/8250_pci.c | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c index b34cacd..e4801e2 100644 --- a/drivers/tty/serial/8250/8250_pci.c +++ b/drivers/tty/serial/8250/8250_pci.c @@ -100,6 +100,8 @@ #define PCI_DEVICE_ID_ADDIDATA_CPCI7420_NG 0x7025 #define PCI_DEVICE_ID_ADDIDATA_CPCI7300_NG 0x7026 +#define PCI_VENDOR_ID_SYSTEMBASE 0x14a1 + /* Unknown vendors/cards - this should not be in linux/pci_ids.h */ #define PCI_SUBDEVICE_ID_UNKNOWN_0x1584 0x1584 #define PCI_SUBDEVICE_ID_UNKNOWN_0x1588 0x1588 @@ -2096,6 +2098,30 @@ pci_moxa_setup(struct serial_private *priv, return setup_port(priv, port, bar, offset, 0); } +#define SB_OPTR_IMR0 0x0c /* Interrupt mask register, p0 to p7 */ +static int pci_systembase_init(struct pci_dev *dev) +{ + resource_size_t iobase; + + iobase = pci_resource_start(dev, 1); + + /* This will support up to 8 ports */ + outb(0xff, iobase + SB_OPTR_IMR0); + + return 0; +} + +static void pci_systembase_exit(struct pci_dev *dev) +{ + resource_size_t iobase; + + if (!IS_ENABLED(CONFIG_HAS_IOPORT)) + return; + + iobase = pci_resource_start(dev, 0); + outb(0x00, iobase + SB_OPTR_IMR0); +} + /* * Master list of serial port init/setup/exit quirks. * This does not describe the general nature of the port. @@ -2444,6 +2470,16 @@ static struct pci_serial_quirk pci_serial_quirks[] = { .init = pci_siig_init, .setup = pci_siig_setup, }, + /* Systembase */ + { + .vendor = PCI_VENDOR_ID_SYSTEMBASE, + .device = 0x0008, + .subvendor = PCI_ANY_ID, + .subdevice = PCI_ANY_ID, + .init = pci_systembase_init, + .setup = pci_default_setup, + .exit = pci_systembase_exit, + }, /* * Titan cards */ @@ -6132,6 +6168,9 @@ static const struct pci_device_id serial_pci_tbl[] = { PCI_ANY_ID, PCI_ANY_ID, 0, 0, pbn_b0_1_115200 }, + /* Systembase Multi I/O cards */ + { PCI_VDEVICE(SYSTEMBASE, 0x0008), pbn_b0_8_115200 }, + /* Fintek PCI serial cards */ { PCI_DEVICE(0x1c29, 0x1104), .driver_data = pbn_fintek_4 }, { PCI_DEVICE(0x1c29, 0x1108), .driver_data = pbn_fintek_8 }, -- 2.47.3

