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
Copyright © 2010-2025 Platon Technologies, s.r.o.           Home | Man pages | tLDP | Documents | Utilities | About
Design by styleshout