]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
add superio driver
authorAndriy Gapon <avg@FreeBSD.org>
Mon, 1 Jul 2019 17:05:41 +0000 (17:05 +0000)
committerAndriy Gapon <avg@FreeBSD.org>
Mon, 1 Jul 2019 17:05:41 +0000 (17:05 +0000)
commite3722b788eaa629d536a524e5b3fb7dc1082dbf3
tree67c2d9f3999ce0c97714bd717b005cb15622b494
parent02226256082badea2d76ff0b467c9cce3da47531
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.

I am planning to convert nctgpio and wbwd to superio bus very soon.
Also, I am working on itwd driver (watchdog in ITE SuperIO-s).
Additionally, there is ithwm driver based on the reverted sensors
import, but I am not sure how to integrate it given that we still lack
any sensors interface.

Discussed with: imp, jhb
MFC after: 7 weeks
Differential Revision: https://reviews.freebsd.org/D8175
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/i386/conf/NOTES
sys/modules/Makefile
sys/modules/superio/Makefile [new file with mode: 0644]