Provided by: freebsd-manpages_12.2-1_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.

Debian                                          January 14, 2005                                         PBIO(4)