elansc —
AMD Elan SC520 System Controller driver
elansc* at mainbus? bus ?
gpio* at elansc?
pci* at elansc?
elanpar* at elansc?
elanpex* at elansc?
The elansc driver supports the system controller of the
  AMD Elan SC520 microcontroller. The SC520 consists of an AMD Am5x86 processor
  core, integrated PCI host controller, and several standard on-chip devices,
  such as NS16550-compatible UARTs, real-time clock, and timers.
The Elan SC520 also provides several special on-chip devices. The
    following are supported by the elansc driver:
  - Watchdog timer. The watchdog timer may be configured for a 1 second, 2
      second, 4 second, 8 second, 16 second, or 32 second expiration
    period.
- PCI exceptions reporting. The SC520 microcontroller can report exceptions
      that occur as it acts as both a PCI bus master and a bus target. See
      i386/elanpex(4).
- RAM write-protection. The SC520 microcontroller can designate
      write-protected regions of RAM using the Programmable Address Regions
      registers. See
      i386/elanpar(4).
- Programmable Input/Output. The SC520 microcontroller supports 32
      programmable I/O signals (PIOs) that can be used on the system board to
      monitor signals or control devices that are not handled by the other
      functions in the SC520 microcontroller. These signals can be programmed to
      be inputs or to be driven “high” or “low” as
      outputs. Pins can be accessed through the
      gpio(4) framework. The
      gpioctl(8) program
      allows easy manipulation of pins from userland.
- PCI host-bridge optimization. elansctakes
      advantage of a suspend/resume cycle to tune the PCI host-bridge for higher
      performance.
Theelansc device first appeared in
  NetBSD 2.0. PIO function support was added in
  OpenBSD 3.6, and subsequently ported to
  NetBSD 4.0. Support for PCI exceptions reporting and
  for RAM write-protection first appeared in NetBSD 5.0.
The elansc driver was written by Jason
  R. Thorpe
  <thorpej@NetBSD.org>.
  Jasper Wallace provided the work-around for a hardware
  bug related to the watchdog timer in some steppings of the SC520 CPU. Support
  for the PIO function was added to OpenBSD 3.6 by
  Alexander Yurchenko
  <grange@openbsd.org>
  and was ported to NetBSD by Jeff
  Rizzo
  <riz@NetBSD.org>.
  David Young
  <dyoung@NetBSD.org>
  added support for PCI exceptions reporting and for RAM write-protection using
  the Programmable Address Regions.