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 de - signed 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 8255Abased 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 de
- vice driver provides four character devices that correspond to the periph
- eral'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 cir - cuitry.
- A set of ioctl(2) requests allow polled input and paced out
- put to be
efficiently performed at the driver level without expensive - user/kernel
context switching. The driver can perform I/O in three dif - ferent ways:
- Basic The read or write operation returns imme
- diately 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 dif
- fer 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 sets the driver for differential in
- put if the
integer is non-zero. The input pace - speed determines
the periodic interval the driver will use - to examine
the port for a changed value. - PBIO_GETDIFF accepts a pointer to an integer as the
- third argument,
- and sets the integer to the last set val
- ue for differential 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 val
- ue 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 val
- ue 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. - BSD January 14, 2005