ppi(4)
NAME
ppi - user-space interface to ppbus parallel 'geek' port
SYNOPSIS
device ppi Minor numbering: unit numbers correspond directly to ppbus numbers. #include <dev/ppbus/ppi.h> #include <dev/ppbus/ppbconf.h>
DESCRIPTION
- The ppi driver provides a convenient means for user applica
- tions to
manipulate the state of the parallel port, enabling easy - low-speed I/O
operations without the security problems inherent with the - use of the
/dev/io interface.
PROGRAMMING INTERFACE
- All I/O on the ppi interface is performed using ioctl()
- calls. Each command takes a single u_int8_t argument, transferring one byte
- of data.
The following commands are available: - PPIGDATA, PPISDATA
- Get and set the contents of the data register.
- PPIGSTATUS, PPISSTATUS
- Get and set the contents of the status register.
- PPIGCTRL, PPISCTRL
- Get and set the contents of the control register.
- The following
defines correspond to bits in this register. Set - ting a bit in
the control register drives the corresponding output - low.
STROBE
AUTOFEED
nINIT
SELECTIN
PCD - PPIGEPP, PPISEPP
- Get and set the contents of the EPP control regis
- ter.
- PPIGECR, PPISECR
- Get and set the contents of the ECP control regis
- ter.
- PPIGFIFO, PPISFIFO
- Read and write the ECP FIFO (8-bit operations only).
EXAMPLES
- To present the value 0x5a to the data port, drive STROBE low
- and then
high again, the following code fragment can be used:
int fd;
u_int8_t val;- val = 0x5a;
ioctl(fd, PPISDATA, &val);
ioctl(fd, PPIGCTRL, &val);
val |= STROBE;
ioctl(fd, PPISCTRL, &val);
val &= ~STROBE;
ioctl(fd, PPISCTRL, &val);
BUGS
The inverse sense of signals is confusing.
- The ioctl() interface is slow, and there is no way (yet) to
- chain multiple operations together.
- The headers required for user applications are not installed
- as part of
the standard system. - BSD January 2, 1998