bionic (4) pbio.4freebsd.gz

Provided by: freebsd-manpages_11.1-3_all bug

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 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 <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.