FreeBSD manual
download PDF document: pbio.4.pdf
PBIO(4) FreeBSD Kernel Interfaces Manual (i386) PBIO(4)
NAME
pbio - 8255 parallel peripheral interface basic I/O driver
SYNOPSIS
device pbio
In /boot/device.hints:
hint.pbio.0.at="isa"
hint.pbio.0.port="0x360"
#include <dev/pbio/pbioio.h>
DESCRIPTION
The pbio driver supports direct access to the Intel 8255A programmable
peripheral interface (PPI) chip running in mode 0 (simple I/O). Such an
interface provides 24 digital I/O lines. The driver is designed for
performing I/O under program control using peripherals such as the
Advantech PCL-724 card, which emulates the Intel 8255A PPI in mode 0.
Other 8255A-based peripherals such as the BMC Messsysteme PIO24II card
have also been reported to work.
The PPI provides two 8-bit ports (port A and port B) and two 4-bit ports
(port C upper, port C lower). Each port can be individually programmed
for input and (latched) output, and appears at a different offset of the
device's base I/O address.
A separate register allows the configuration of ports for input or
output. The device is so simple, that reliably probing for it when input
data arrives at its terminals is impossible; therefore the kernel
configuration has to specify the device's base address. The device
driver provides four character devices that correspond to the
peripheral's I/O ports. Opening a device for read or write automatically
configures the corresponding hardware port for input or output. At boot
time all ports are set configured for input to avoid damaging external
circuitry.
A set of ioctl(2) requests allow polled input and paced output to be
efficiently performed at the driver level without expensive user/kernel
context switching. The driver can perform I/O in three different ways:
Basic The read or write operation returns immediately after
reading or writing the data to the port at bus speed.
Paced Data is transferred from or to the port at intervals
specified by a separate ioctl(2) call.
Differential (Input only.) Only port values that differ from the
previous port value are returned.
The pacing interval is specified in Hz unit increments. Setting a pace
of n seconds will result in no more than one value being read or written
every n seconds. Single byte read/write operations will take at least n
seconds to complete.
The following ioctl(2) calls are supported:
PBIO_SETDIFF accepts a pointer to an integer as the third argument, and
input.
PBIO_SETIPACE accepts a pointer to an integer as the third argument, and
sets the driver's input pacing speed to the value of that
integer.
PBIO_GETIPACE accepts a pointer to an integer as the third argument, and
sets the integer to the last set value for the input pace.
PBIO_SETOPACE accepts a pointer to an integer as the third argument, and
sets the driver's output pacing speed to the value of that
integer.
PBIO_GETOPACE accepts a pointer to an integer as the third argument, and
sets the integer to the last set value for the output
pace.
FILES
/dev/pbio0a Port A (8 bit I/O).
/dev/pbio0b Port B (8 bit I/O).
/dev/pbio0ch Port C upper (4 bit I/O).
/dev/pbio0cl Port C lower (4 bit I/O).
SEE ALSO
Diomidis Spinellis, "The information furnace: Consolidated home control",
Personal and Ubiquitous Computing, 1, 7, 53-69, 2003.
HISTORY
The pbio device was first used under FreeBSD 4.1.
AUTHORS
Diomidis D. Spinellis <dds@aueb.gr>
BUGS
One of the PCL-724 card's inputs can optionally be wired to generate an
interrupt. This feature is not supported.
FreeBSD 14.0-RELEASE-p11 January 14, 2005 FreeBSD 14.0-RELEASE-p11