]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFC r349580,r351740,r353432,r353433,r354079,r354080: add superio driver
authorAndriy Gapon <avg@FreeBSD.org>
Mon, 4 Nov 2019 09:49:58 +0000 (09:49 +0000)
committerAndriy Gapon <avg@FreeBSD.org>
Mon, 4 Nov 2019 09:49:58 +0000 (09:49 +0000)
commit914b4006a44cd0315b1190e2fca6fde761a50ab2
tree9449bef1b4c9318a0c5d7b4e3dd607c47edbcde5
parentb314d13faf0b52708750c498c1ef3802b6886765
MFC r349580,r351740,r353432,r353433,r354079,r354080: add superio driver

The goal of this driver is consolidate information about SuperIO chips
and to provide for peaceful coexistence of drivers that need to access
SuperIO configuration registers.

While SuperIO chips can host various functions most of them are
discoverable and accessible without any knowledge of the SuperIO.
Examples are: keyboard and mouse controllers, UARTs, floppy disk
controllers.  SuperIO-s also provide non-standard functions such as
GPIO, watchdog timers and hardware monitoring.  Such functions do
require drivers with a knowledge of a specific SuperIO.

At this time the driver supports a number of ITE and Nuvoton (fka
Winbond) SuperIO chips.
There is a single driver for all devices.  So, I have not done the usual
split between the hardware driver and the bus functionality.  Although,
superio does act as a bus for devices that represent known non-standard
functions of a SuperIO chip.  The bus provides enumeration of child
devices based on the hardcoded knowledge of such functions.  The
knowledge as extracted from datasheets and other drivers.
As there is a single driver, I have not defined a kobj interface for it.
So, its interface is currently made of simple functions.
I think that we can the flexibility (and complications) when we actually
need it.
13 files changed:
share/man/man4/Makefile
share/man/man4/superio.4 [new file with mode: 0644]
share/man/man9/Makefile
share/man/man9/superio.9 [new file with mode: 0644]
sys/amd64/conf/NOTES
sys/conf/files.amd64
sys/conf/files.i386
sys/dev/superio/superio.c [new file with mode: 0644]
sys/dev/superio/superio.h [new file with mode: 0644]
sys/dev/superio/superio_io.h [new file with mode: 0644]
sys/i386/conf/NOTES
sys/modules/Makefile
sys/modules/superio/Makefile [new file with mode: 0644]