Page MenuHomeFreeBSD

puc(4): Add support for Systembase SB16C1054, SB16C1058.
AcceptedPublic

Authored by jashank_rulingia.com.au on Aug 25 2025, 2:26 PM.
Tags
None
Referenced Files
Unknown Object (File)
Sun, Oct 12, 9:14 AM
Unknown Object (File)
Sun, Oct 12, 9:14 AM
Unknown Object (File)
Sat, Oct 11, 10:28 PM
Unknown Object (File)
Wed, Oct 8, 2:30 PM
Unknown Object (File)
Tue, Oct 7, 1:18 AM
Unknown Object (File)
Sep 9 2025, 7:34 PM
Unknown Object (File)
Sep 4 2025, 8:23 PM
Unknown Object (File)
Aug 31 2025, 3:12 PM
Subscribers

Details

Reviewers
imp
Summary

The Systembase SB16C1054 and SB16C1058 are PCI quad- and octal-UART complexes, based on multiple Systembase SB16C1050 cores, which (so far as I can tell) are nearly entirely compatible with the NS8250 family (except for the "enable interrupts" bit in the other BAR).

pciconf(8) says, with this patch, without pci_vendors data::

root@korra:~ # pciconf -l -B -b -c -e -v -V puc0
puc0@pci0:7:4:0:	class=0x070002 rev=0xb0 hdr=0x00 vendor=0x14a1 device=0x0008 subvendor=0x14a1 subdevice=0x0008
    vendor     = 'Systembase Co Ltd'
    class      = simple comms
    subclass   = UART
    bar   [10] = type I/O Port, range 32, base 0xc040, size 64, enabled
    bar   [14] = type I/O Port, range 32, base 0xc000, size 64, enabled
    cap 01[40] = powerspec 3  supports D0 D3  current D0

The SB16C105x family are one of two families of PCIe UART complexes on cards by StarTech.com, such as the PEX4S1050 and PEX8S1050. (Other StarTech.com serial offerings use the ASIX AX99100 or ASIX MCS990x.)

A survey of support for these devices elsewhere:

  • NetBSD 6.0+ support these devices via puc(4), added in src/sys/dev/pci/puc.c r1.32, src/sys/dev/pci/pucdata.c r1.75
  • OpenBSD does *not* support these devices.
  • Linux does *not* support these devices, either.
  • ... and, whilst Systembase *do* publish a (GPLv2'ed) driver for Linux, it seems to reimplement an entire 8250-alike UART driver from scratch (and I don't know why), so I ignored it.

(Derived from the NetBSD driver, but not via any particularly clear derivation.)

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped