SUPERIO(4)

πŸ’– SUPERIO πŸ’–

okay bestie, this is superio, section 4 of the Kernel Interfaces Manual, and she is that girl. a Super I/O controller + bus driver, fr fr. let's get into it πŸ¦‹


✨ NAME ✨

superio β€” Super I/O controller and bus driver πŸ‘‘


🌸 SYNOPSIS 🌸

so to get this driver compiled into your kernel, you drop this line in your kernel configuration file:

device superio

OR, if you'd rather load her as a module at boot time (which, honestly, slay), you put this in loader.conf(5):

superio_load="YES"

πŸ’… DESCRIPTION πŸ’…

okay so picture this: Super I/O is an I/O controller that literally combines a bunch of low-bandwidth devices that otherwise have absolutely nothing to do with each other. it's giving ✨friend group of total strangers✨. a typical Super I/O can contain stuff like:

  • a floppy disk controller
  • a parallel port
  • a serial port
  • a PS/2 mouse and keyboard controller
  • a hardware monitoring controller
  • a watchdog timer
  • a controller for general purpose input-output

the superio driver provides support for devices chillin' inside the Super I/O controller that can only be accessed or discovered through the controller's interface. iykyk.

now, some of these Super I/O devices have standardized interfaces. those ones either use well-known legacy resources, or they get advertised via ACPI, or honestly both. and they can be configured either using ISA bus hints or auto-configured by acpi(4). and the superio driver? not designed to interact with that kind of device, no cap. those babies get handled by their own respective drivers without any knowledge of the Super I/O specifics whatsoever. for instance, fdc(4) provides access to the floppy disk controller. periodt. πŸ’β€β™€οΈ

but THEN there are other Super I/O devices that don't have any standardized interface at all. drivers for those can be written using the facilities of the superio driver. so like, main character energy for driver authors 🫢

the driver itself attaches to the ISA bus, because all supported controllers are accessed via LPC I/O ports.

and here's the unusual part, bestie β€” the superio driver is doing double duty 😭 she's both a controller driver for a variety of Super I/O controllers and a bus driver for supported devices inside those controllers. not me being two things at once, iconic honestly.


πŸŽ€ HARDWARE πŸŽ€

the superio driver supports a multitude of Super I/O controllers produced by:

  • Nuvoton β€” formerly known as Winbond
  • ITE... ok wait let me redo that: ITE πŸ’–

πŸ‘€ SEE ALSO πŸ‘€


πŸ“œ HISTORY πŸ“œ

the superio driver was written by Andriy Gapon <avg@FreeBSD.org>. king behavior, we love to see it πŸ‘‘


that's the whole page, bestie!! she's from the Debian crew and this version is dated October 11, 2019, and of course the title up top is SUPERIO(4). go forth and configure responsibly πŸ’œπŸ¦‹βœ¨

πŸ“¦ where this page comes from