GPIO(4)

NAME
gpiobus - GPIO bus system

SYNOPSIS
To compile these devices into your kernel and use the device hints, place the following lines in your kernel configuration file:

device gpiobus
device gpioiic
device gpio
device gpioc
device gpioled

Additional device entries for the ARM architecure include:

device a10_gpio
device bcm_gpio
device imx51_gpio
device lpcgpio
device mv_gpio
device ti_gpio
device gpio_avila
device gpio_cambria
device zy7_gpio
device pxagpio

Additional device entries for the MIPS architecure include:

device ar71xxx_gpio
device octeon_gpio
device rt305_gpio

Additional device entries for the POWERPC architecure include:

device wiigpio
device macgpio

DESCRIPTION
The gpiobus system provides a simple interface to the bit banging style GPIO bus found on embedded architectures.

The acronym GPIO means “General-Purpose Input/Output.”

The BUS physically consists of multiple pins that can be configured for input/output, IRQ delivery, SDA/SCL iicbus use, etc. On most embedded architechtures (mips/arm), discovery of the bus and configuration of the pins is done via device.hints(5) in the platform's kernel config(5) file.

Assignment of gpioiic(4) bus variables is done via:

hint.gpioiic.%d.at
    Normally just gpiobus0.

hint.gpioiic.%d.pins
    This is a bitmask of the pins on the gpio board that are to be used for SCLOCK and SDATA from the IIC bus. To configure pin 0 and 7, use the bitmask of 10000001 and convert it to a hexadecimal value of 0x0081. Should only ever have two bits set in mask.

hint.gpioiic.%d.scl
    Indicates which bit in the hint.gpioiic.%d.pins should be used as the SCLOCK source.

hint.gpioiic.%d.sda
    Indicates which bit in the hint.gpioiic.%d.pins should be used as the SDATA source.

The following are only provided by the ar71xx_gpio driver.

hint.gpio.%d.pinmask
    This is a bitmask of pins on the gpio board that we would like to expose for use to the host o/s. To expose pin 0, 4 and 7, use the bitmask of 10010001 converted to the hexadecimal value 0x0091.

hint.gpio.%d.pinon
    This is a bitmask of pins on the gpio board that will be set to ON at host start. To set pin 2, 5 and 13 to be set ON at boot, use the bitmask of 10000000010010 converted to the hexadecimal value 0x2012.

hint.gpio.function_set

hint.gpio.function_clear
    These are a bitmask of pins that will remap a pin to handle a specific function (USB, UART TX/RX, etc) in the Atheros function registers. This is mainly used to set/clear functions that we need when they are setup or not setup by uBoot.

These values are configureable from the gpioled(4) interface and help create led(4) compatible devices in /dev/led/<name>.

hint.gpioled.%d.at
    Normally assigned to gpiobus0.

hint.gpioled.%d.name
    Arbitrary name of device in /dev/led/ to create for led(4) interfaces.

hint.gpioled.%d.pins
    Which pin on the GPIO interface to map to this instance.

Simply put, each pin of the GPIO interface is connected to an input/output of some device in a system.

SEE ALSO
iicbus(4), gpioctl(8)

HISTORY
The gpiobus manual page first appeared in FreeBSD 10.0.

AUTHORS
This manual page was written by Sean Bruno <sbruno@FreeBSD.org>.