signal. For example, when controlling light intensity, the light may be dimmed by reducing the GPIO duty cycle. Some linear processes require a linear control voltage. In such cases, it may be feasible to connect a GPIO, which is operated as a PWM output, to an RC filter to create a simple, low cost digital-to-analog converter. Implementation GPIO interfaces vary widely. In some cases, they are simple—a group of pins that can switch as a group to either input or output. In others, each pin can be set up to accept or source different logic voltages, with configurable drive strengths and pull ups/downs. Input and output voltages are usually, but not always, limited to the supply voltage of the device with the GPIOs, and may be damaged by greater voltages. A GPIO pin's state may be exposed to the software developer through one of a number of different interfaces, such as a memory-mapped I/O peripheral, or through dedicated IO port instructions. Some GPIOs have 5 V tolerant inputs: even when the device has a low supply voltage (such as 2 V), the device can accept 5 V without damage. A GPIO port is a group of GPIO pins (often 8 pins, but it may be less) arranged in a group and controlled as a group. GPIO abilities may include: GPIO pins can be configured to be input or output GPIO pins can be enabled/disabled Input values are readable (usually high or low) Output values are writable/readable Input values can often be used as IRQs (usually for wakeup events) See also Programmed input/output SGPIO Special input/output References External links GPIO framework for FreeBSD FreeBSD gpio(3) API manual FreeBSD gpioctl(8) manual FreeBSD gpio(4) manual ALSA Development List Linux Kernel Doc on GPIO LinuxTV GPIO Pins Info Computer buses Integrated circuits