| |
 |
 |
|
|
|
|
|
|
pbio
PBIO(4) FreeBSD/i386 Kernel Interfaces Manual 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 per-
forming 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 out-
put. The device is so simple, that reliably probing for it when input
data arrives at its terminals is impossible; therefore the kernel config-
uration has to specify the device's base address. The device driver pro-
vides 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 read-
ing or writing the data to the port at bus speed.
Paced Data is transferred from or to the port at intervals speci-
fied by a separate ioctl(2) call.
Differential (Input only.) Only port values that differ from the previ-
ous 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 input 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 value 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 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 <ddsATaueb.gr>
BUGS
One of the PCL-724 card's inputs can optionally be wired to generate an
interrupt. This feature is not supported.
FreeBSD 6.2 January 14, 2005 FreeBSD 6.2
|
|
Copyright ©2006 TheBestISP.com |
|
|
|
 |
|