Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
PPI(4)			    Kernel Interfaces Manual			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 applications	to ma-
       nipulate	 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 uint8_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  follow-
	       ing defines correspond to bits in this register.	 Setting 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 register.

       PPIGECR,	PPISECR
	       Get and set the contents	of the ECP control register.

       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;
	       uint8_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  mul-
       tiple operations	together.

       The headers required for	user applications are not installed as part of
       the standard system.

FreeBSD	13.2			January	2, 1998				PPI(4)

NAME | SYNOPSIS | DESCRIPTION | PROGRAMMING INTERFACE | EXAMPLES | BUGS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ppi&manpath=FreeBSD+14.0-RELEASE+and+Ports>

home | help