History log of /src/share/man/man4/gpio.4
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.39 24-Oct-2025 brad

A driver for the NXP SC16IS7xx family of UART chips. This family is
mostly a 16C450 with features from the 16C550, 16C650 and 16C750 and
makes use of src/sys/dev/ic/com.c for much of the heavy lifting.

A BIG difference is that the chip family is attached via a I2C or SPI
bus and is in no way, shape or form, attached to the computer via a
computer bus.

Since spin locks are not allowed to be held while calling to the I2C
or SPI framework com.c grew a new hw feature flag where it could be
run at something other than a hard IP level and doesn't hold spin lock
(for very long). In particular, IPL_SOFTSERIAL. This method is
enabled via a hw feature flag and should not effect any other use of
com.c. Other changes with this new method of use include the use of
workqueues and such.

A further feature added to com.c was the abilty to take advantage of
the MCR prescaler that is present in the SC16IS7xx family and likely
present in the 16C650. This prescaler is tried if the baud rate
requested can not be met with the frequency oscillator that the chip is
built with.

The chip family does not use any particular frequency oscillator for
the baud rate generator. In order to deal with this the frequency can
be set via sysctl, a kernel option or with a FDT overlay if that is
supported.

Most of the features of the chip family are supported including the
gpio pins via gpiobus(4) that are present with some of the family
members.

The chip can attach via I2C or SPI and can make sure of FDT if that is
present in the system.

This chip family has been around for quite some time and there are a
number of breakout boards on Amazon. It is also reasonably priced and
you can roll your own board if you can perform simple SMD soldering as
very few additional components are required.


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
# 1.38 16-Dec-2024 brad

Mention umcpmio(4)


Revision tags: netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base
# 1.37 10-Dec-2021 andvar

branches: 1.37.4;
s/unaccessible/inaccessible/


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.36 04-May-2021 christos

Fix incorrect structure name (Rocky Hotas)


Revision tags: phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406
# 1.35 13-Feb-2020 sevan

grammar


Revision tags: phil-wifi-20191119
# 1.34 02-Nov-2019 tnn

expand section on GPIOREAD


Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.33 19-May-2018 thorpej

branches: 1.33.2;
Overhaul of GPIO interrupt support (that wasn't even used by anything).
- Remove the old, not-expressive-enough interrupt flags, and replace them
with a new set of interrupt-specific flags that can express a wide
variety of interrupt configurations (pos, neg, and double-edge, high
and low level).
- Remove old, unused gpio_pin_ctl_intr() and gpio_pin_irqen(), and
replace them with gpio_intr_establish(), gpio_intr_disestablish(),
and gpio_intr_str(). Corresponding fields in the gpio_chipset_tag
are also added for back-end controllers, which now handle the actual
dispatch of GPIO interrupts in order to properly support level-triggered
interrupts as well as interoperate properly with FDT-registered
interrupts.

Piggy-back on the 8.99.18 version bump.

Inspired by initial work from Brad Spencer.
PR kern/51676


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.32 20-Feb-2018 wiz

branches: 1.32.2;
Whitespace improvements. Remove unnecessary Tn.


# 1.31 20-Feb-2018 pgoyette

Update to include wbsio as a possible parent for a gpio device.

XXX Should we really list all the possible parents? Or should we replace
XXX this entire list with a single entry for "gpio* at gpiobus?"


Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.30 06-Dec-2015 wiz

Bump date for previous.


# 1.29 06-Dec-2015 mlelstv

document new pin configuration flags


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 tls-maxphys-base
# 1.28 18-Mar-2014 riastradh

Merge riastradh-drm2 to HEAD.


Revision tags: riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1
# 1.27 20-Jul-2013 wiz

Use Mt for email addresses.


Revision tags: riastradh-drm2-base
# 1.26 10-Jun-2013 wiz

branches: 1.26.2;
Bump date for previous.


# 1.25 10-Jun-2013 kardel

adjust soekrisgpio driver to NetBSD


Revision tags: agc-symver-base yamt-pagecache-base8
# 1.24 16-Dec-2012 mbalmer

Mention ptcd(4) in the synopsis.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base
# 1.23 13-Nov-2011 mbalmer

branches: 1.23.2; 1.23.6;
Bring up to reality.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.22 06-Oct-2011 wiz

branches: 1.22.2;
Sort SEE ALSO.


# 1.21 03-Oct-2011 mbalmer

Remove the GPIODETACH gpio(4) ioctl (it is still available in COMPAT_50) and
the 'detach' command line option from gpioctl(8). Drivers that are
attached to gpio pins can be detached using the drvctl(8) command.


# 1.20 02-Oct-2011 mbalmer

Add a ga_flags field to the gpio_attach structure to hand driver
specific flags to drivers being attached at gpio pins. gpioiic(4)
uses this to reverse the SDA/SCL signal order. gpioctl(8) accepts
the flag values as optional argument to the attach command.
While here, make sure we retain backwards compatability and wrap compat
code in #ifdef COMPAT_50/#endif.


# 1.19 28-Aug-2011 mbalmer

Add a new ioctl, GPIOPULSE to gpio(4) to allow for pulsing a pin.
If a pin can pulse in hardware, that will be used, else it will
be pulsed in software. There is no way yet to set the pulse frequency
for pins that pulse in hardware. While here, make the code mpsafe and
allow more than one thread in the driver (access to ioctl is serialized).


Revision tags: cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 uebayasi-xip-base2 uebayasi-xip-base1
# 1.18 22-Mar-2010 joerg

branches: 1.18.2;
Use .In instead of .Aq Pa for header files.


Revision tags: matt-premerge-20091211
# 1.17 27-Sep-2009 wiz

Bump date for today's changes.


# 1.16 27-Sep-2009 jakllsch

gpio(4) support for Intel ICH southbridges.

Tested on Intel SS4200-E (ICH7), and Acorp 6A815EPD (ICH2) motherboards,
on amd64 and i386 ports respectively.

It should be noted that the majority of boards with ICH chips do not
expose the GPIO pins for off-board use. For instance, aside from the
three exposed-on-a-header pins on the 6A815EPD, another pin is also
used to control write protect on the FWH. The SS4200 exposes the GPIO
on a header that connects to the 10 LEDs on the front panel, as well
as a tact switch on the back panel.


# 1.15 25-Sep-2009 mbalmer

Jonatha Kollasch has a GPIO device that can pulse the output lines.
Support it wuth the GPIO_PIN_PULSE attribute and the 'pulse' paramater
to gpioctl. Discussed with Jonathan.


# 1.14 23-Aug-2009 wiz

Reword slightly so I can understand it more easily.


# 1.13 23-Aug-2009 mbalmer

Mention that defining the GPIO layout is subject to kauth(9) auhtorization.
Suggested by Elad Efrat.


# 1.12 01-Aug-2009 mbalmer

Sprinkle a few .Pps.


# 1.11 01-Aug-2009 mbalmer

Sort SYNOPSIS, add gpio* at gpiosim?.


# 1.10 25-Jul-2009 wiz

Reword for better HTML output.


# 1.9 25-Jul-2009 mbalmer

Document recent gpio(4) changes and introduce a new config file for GPIO.
Integrate with the startup scripts in /etc/rc.d. Introduce new variable
"gpio" for /etc/rc.conf.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.8 27-Feb-2009 kenh

Improved support for GPIO support on the EP93xx ARM processors.
Specifically:

Support disabling specific pins on specific ports.
Modification of TS7200 kernel config file for GPIO support.
Documentatin for the current and improved GPIO interface (epgpio).


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.7 29-Apr-2008 cegger

branches: 1.7.4; 1.7.6;
gpio(4): Extend with open/close to request/release the ppbus(4) on open/close.
ppbus(4): Extend to attach on gpiobus.
From Hans Rosenfeld from tech-kern:
http://mail-index.netbsd.org/tech-kern/2008/04/28/msg001168.html
Hint: Hans sent me this diff which differs in the one from tech-kern in:
- 2-clause license
- sprinkled some consts


Revision tags: yamt-pf42-baseX yamt-pf42-base keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase hpcarm-cleanup-base
# 1.6 09-Jan-2008 xtraeme

branches: 1.6.4; 1.6.6;
Mention GPIO_PIN_PULLDOWN, GPIO_PIN_INVIN and GPIO_PIN_INVOUT; from OpenBSD.


# 1.5 09-Jan-2008 xtraeme

<wizd> bump date!


# 1.4 09-Jan-2008 xtraeme

Mention gcscpcib(4), reorder entries, just mention gpioctl(8) and
not all drivers again.


Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-4-base chap-midi-nbase chap-midi-base
# 1.3 05-Jan-2006 bouyer

branches: 1.3.12;
Note that gpio can attach to elansc, and xref elansc(4). Bump date.


# 1.2 27-Sep-2005 wiz

Use .In. Mention NetBSD import. Use .Nx.


# 1.1 27-Sep-2005 jmcneill

Add man page for gpio framework (from OpenBSD)


# 1.39 24-Oct-2025 brad

A driver for the NXP SC16IS7xx family of UART chips. This family is
mostly a 16C450 with features from the 16C550, 16C650 and 16C750 and
makes use of src/sys/dev/ic/com.c for much of the heavy lifting.

A BIG difference is that the chip family is attached via a I2C or SPI
bus and is in no way, shape or form, attached to the computer via a
computer bus.

Since spin locks are not allowed to be held while calling to the I2C
or SPI framework com.c grew a new hw feature flag where it could be
run at something other than a hard IP level and doesn't hold spin lock
(for very long). In particular, IPL_SOFTSERIAL. This method is
enabled via a hw feature flag and should not effect any other use of
com.c. Other changes with this new method of use include the use of
workqueues and such.

A further feature added to com.c was the abilty to take advantage of
the MCR prescaler that is present in the SC16IS7xx family and likely
present in the 16C650. This prescaler is tried if the baud rate
requested can not be met with the frequency oscillator that the chip is
built with.

The chip family does not use any particular frequency oscillator for
the baud rate generator. In order to deal with this the frequency can
be set via sysctl, a kernel option or with a FDT overlay if that is
supported.

Most of the features of the chip family are supported including the
gpio pins via gpiobus(4) that are present with some of the family
members.

The chip can attach via I2C or SPI and can make sure of FDT if that is
present in the system.

This chip family has been around for quite some time and there are a
number of breakout boards on Amazon. It is also reasonably priced and
you can roll your own board if you can perform simple SMD soldering as
very few additional components are required.


Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base
# 1.38 16-Dec-2024 brad

Mention umcpmio(4)


Revision tags: netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 netbsd-10-0-RC1 netbsd-10-base
# 1.37 10-Dec-2021 andvar

branches: 1.37.4;
s/unaccessible/inaccessible/


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.36 04-May-2021 christos

Fix incorrect structure name (Rocky Hotas)


Revision tags: phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406
# 1.35 13-Feb-2020 sevan

grammar


Revision tags: phil-wifi-20191119
# 1.34 02-Nov-2019 tnn

expand section on GPIOREAD


Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 netbsd-9-base phil-wifi-20190609 pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.33 19-May-2018 thorpej

branches: 1.33.2;
Overhaul of GPIO interrupt support (that wasn't even used by anything).
- Remove the old, not-expressive-enough interrupt flags, and replace them
with a new set of interrupt-specific flags that can express a wide
variety of interrupt configurations (pos, neg, and double-edge, high
and low level).
- Remove old, unused gpio_pin_ctl_intr() and gpio_pin_irqen(), and
replace them with gpio_intr_establish(), gpio_intr_disestablish(),
and gpio_intr_str(). Corresponding fields in the gpio_chipset_tag
are also added for back-end controllers, which now handle the actual
dispatch of GPIO interrupts in order to properly support level-triggered
interrupts as well as interoperate properly with FDT-registered
interrupts.

Piggy-back on the 8.99.18 version bump.

Inspired by initial work from Brad Spencer.
PR kern/51676


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
# 1.32 20-Feb-2018 wiz

branches: 1.32.2;
Whitespace improvements. Remove unnecessary Tn.


# 1.31 20-Feb-2018 pgoyette

Update to include wbsio as a possible parent for a gpio device.

XXX Should we really list all the possible parents? Or should we replace
XXX this entire list with a single entry for "gpio* at gpiobus?"


Revision tags: netbsd-8-3-RELEASE netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.30 06-Dec-2015 wiz

Bump date for previous.


# 1.29 06-Dec-2015 mlelstv

document new pin configuration flags


Revision tags: netbsd-7-2-RELEASE netbsd-7-1-2-RELEASE netbsd-7-1-1-RELEASE netbsd-7-1-RELEASE netbsd-7-1-RC2 netbsd-7-nhusb-base-20170116 netbsd-7-1-RC1 netbsd-7-0-2-RELEASE netbsd-7-nhusb-base netbsd-7-0-1-RELEASE netbsd-7-0-RELEASE netbsd-7-0-RC3 netbsd-7-0-RC2 netbsd-7-0-RC1 netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base riastradh-xf86-video-intel-2-7-1-pre-2-21-15 tls-maxphys-base
# 1.28 18-Mar-2014 riastradh

Merge riastradh-drm2 to HEAD.


Revision tags: riastradh-drm2-base3 riastradh-drm2-base2 riastradh-drm2-base1
# 1.27 20-Jul-2013 wiz

Use Mt for email addresses.


Revision tags: riastradh-drm2-base
# 1.26 10-Jun-2013 wiz

branches: 1.26.2;
Bump date for previous.


# 1.25 10-Jun-2013 kardel

adjust soekrisgpio driver to NetBSD


Revision tags: agc-symver-base yamt-pagecache-base8
# 1.24 16-Dec-2012 mbalmer

Mention ptcd(4) in the synopsis.


Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE yamt-pagecache-base7 matt-nb6-plus-nbase yamt-pagecache-base6 netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 yamt-pagecache-base5 yamt-pagecache-base4 netbsd-6-base
# 1.23 13-Nov-2011 mbalmer

branches: 1.23.2; 1.23.6;
Bring up to reality.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.22 06-Oct-2011 wiz

branches: 1.22.2;
Sort SEE ALSO.


# 1.21 03-Oct-2011 mbalmer

Remove the GPIODETACH gpio(4) ioctl (it is still available in COMPAT_50) and
the 'detach' command line option from gpioctl(8). Drivers that are
attached to gpio pins can be detached using the drvctl(8) command.


# 1.20 02-Oct-2011 mbalmer

Add a ga_flags field to the gpio_attach structure to hand driver
specific flags to drivers being attached at gpio pins. gpioiic(4)
uses this to reverse the SDA/SCL signal order. gpioctl(8) accepts
the flag values as optional argument to the attach command.
While here, make sure we retain backwards compatability and wrap compat
code in #ifdef COMPAT_50/#endif.


# 1.19 28-Aug-2011 mbalmer

Add a new ioctl, GPIOPULSE to gpio(4) to allow for pulsing a pin.
If a pin can pulse in hardware, that will be used, else it will
be pulsed in software. There is no way yet to set the pulse frequency
for pins that pulse in hardware. While here, make the code mpsafe and
allow more than one thread in the driver (access to ioctl is serialized).


Revision tags: cherry-xenmp-base uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 uebayasi-xip-base2 uebayasi-xip-base1
# 1.18 22-Mar-2010 joerg

branches: 1.18.2;
Use .In instead of .Aq Pa for header files.


Revision tags: matt-premerge-20091211
# 1.17 27-Sep-2009 wiz

Bump date for today's changes.


# 1.16 27-Sep-2009 jakllsch

gpio(4) support for Intel ICH southbridges.

Tested on Intel SS4200-E (ICH7), and Acorp 6A815EPD (ICH2) motherboards,
on amd64 and i386 ports respectively.

It should be noted that the majority of boards with ICH chips do not
expose the GPIO pins for off-board use. For instance, aside from the
three exposed-on-a-header pins on the 6A815EPD, another pin is also
used to control write protect on the FWH. The SS4200 exposes the GPIO
on a header that connects to the 10 LEDs on the front panel, as well
as a tact switch on the back panel.


# 1.15 25-Sep-2009 mbalmer

Jonatha Kollasch has a GPIO device that can pulse the output lines.
Support it wuth the GPIO_PIN_PULSE attribute and the 'pulse' paramater
to gpioctl. Discussed with Jonathan.


# 1.14 23-Aug-2009 wiz

Reword slightly so I can understand it more easily.


# 1.13 23-Aug-2009 mbalmer

Mention that defining the GPIO layout is subject to kauth(9) auhtorization.
Suggested by Elad Efrat.


# 1.12 01-Aug-2009 mbalmer

Sprinkle a few .Pps.


# 1.11 01-Aug-2009 mbalmer

Sort SYNOPSIS, add gpio* at gpiosim?.


# 1.10 25-Jul-2009 wiz

Reword for better HTML output.


# 1.9 25-Jul-2009 mbalmer

Document recent gpio(4) changes and introduce a new config file for GPIO.
Integrate with the startup scripts in /etc/rc.d. Introduce new variable
"gpio" for /etc/rc.conf.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.8 27-Feb-2009 kenh

Improved support for GPIO support on the EP93xx ARM processors.
Specifically:

Support disabling specific pins on specific ports.
Modification of TS7200 kernel config file for GPIO support.
Documentatin for the current and improved GPIO interface (epgpio).


Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 netbsd-5-0-1-RELEASE netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 netbsd-5-0-RC2 netbsd-5-0-RC1 netbsd-5-base matt-mips64-base2 wrstuden-revivesa-base-3 wrstuden-revivesa-base-2 wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 wrstuden-revivesa-base mjf-devfs2-base
# 1.7 29-Apr-2008 cegger

branches: 1.7.4; 1.7.6;
gpio(4): Extend with open/close to request/release the ppbus(4) on open/close.
ppbus(4): Extend to attach on gpiobus.
From Hans Rosenfeld from tech-kern:
http://mail-index.netbsd.org/tech-kern/2008/04/28/msg001168.html
Hint: Hans sent me this diff which differs in the one from tech-kern in:
- 2-clause license
- sprinkled some consts


Revision tags: yamt-pf42-baseX yamt-pf42-base keiichi-mipv6-nbase keiichi-mipv6-base matt-armv6-nbase hpcarm-cleanup-base
# 1.6 09-Jan-2008 xtraeme

branches: 1.6.4; 1.6.6;
Mention GPIO_PIN_PULLDOWN, GPIO_PIN_INVIN and GPIO_PIN_INVOUT; from OpenBSD.


# 1.5 09-Jan-2008 xtraeme

<wizd> bump date!


# 1.4 09-Jan-2008 xtraeme

Mention gcscpcib(4), reorder entries, just mention gpioctl(8) and
not all drivers again.


Revision tags: netbsd-4-0-1-RELEASE wrstuden-fixsa-newbase matt-armv6-prevmlocking wrstuden-fixsa-base-1 netbsd-4-0-RELEASE cube-autoconf-base netbsd-4-0-RC5 netbsd-4-0-RC4 netbsd-4-0-RC3 netbsd-4-0-RC2 netbsd-4-0-RC1 matt-armv6-base matt-mips64-base wrstuden-fixsa-base abandoned-netbsd-4-base netbsd-4-base chap-midi-nbase chap-midi-base
# 1.3 05-Jan-2006 bouyer

branches: 1.3.12;
Note that gpio can attach to elansc, and xref elansc(4). Bump date.


# 1.2 27-Sep-2005 wiz

Use .In. Mention NetBSD import. Use .Nx.


# 1.1 27-Sep-2005 jmcneill

Add man page for gpio framework (from OpenBSD)