<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML ><HEAD ><TITLE >The Linux 2.4 Parallel Port Subsystem</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="NEXT" TITLE="Design goals" HREF="c17.html"></HEAD ><BODY CLASS="BOOK" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="BOOK" ><A NAME="PARPORTGUIDE" ></A ><DIV CLASS="TITLEPAGE" ><H1 CLASS="TITLE" ><A NAME="AEN2" ></A >The Linux 2.4 Parallel Port Subsystem</H1 ><H3 CLASS="AUTHOR" ><A NAME="AEN5" ></A >Tim Waugh</H3 ><DIV CLASS="AFFILIATION" ><DIV CLASS="ADDRESS" ><P CLASS="ADDRESS" > <TT CLASS="EMAIL" ><<A HREF="mailto:twaugh@redhat.com" >twaugh@redhat.com</A >></TT ><br> </P ></DIV ></DIV ><P CLASS="COPYRIGHT" ><A HREF="ln14.html" >Copyright</A > © 1999-2000 Tim Waugh</P ><HR></DIV ><DIV CLASS="TOC" ><DL ><DT ><B >Table of Contents</B ></DT ><DT ><A HREF="c17.html" >Design goals</A ></DT ><DD ><DL ><DT ><A HREF="c17.html#AEN19" >The problems</A ></DT ><DT ><A HREF="x36.html" >The solutions</A ></DT ></DL ></DD ><DT ><A HREF="c56.html" >Standard transfer modes</A ></DT ><DT ><A HREF="c65.html" >Structure</A ></DT ><DD ><DL ><DT ><A HREF="c65.html#AEN72" >Sharing core</A ></DT ><DT ><A HREF="x78.html" >Parports and their overrides</A ></DT ><DT ><A HREF="x88.html" >IEEE 1284 transfer modes</A ></DT ><DT ><A HREF="x96.html" >Pardevices and parport_drivers</A ></DT ><DT ><A HREF="x123.html" >The IEEE 1284.3 API</A ></DT ></DL ></DD ><DT ><A HREF="c192.html" >Device driver's view</A ></DT ><DT ><A HREF="c419.html" >Port drivers</A ></DT ><DT ><A HREF="c452.html" >The printer driver</A ></DT ><DT ><A HREF="c587.html" >User-level device drivers</A ></DT ><DD ><DL ><DT ><A HREF="c587.html#AEN589" >Introduction to ppdev</A ></DT ><DT ><A HREF="x619.html" >User-level or kernel-level driver?</A ></DT ><DT ><A HREF="x623.html" >Programming interface</A ></DT ><DD ><DL ><DT ><A HREF="x623.html#AEN634" >Starting and stopping: <TT CLASS="FUNCTION" >open</TT > and <TT CLASS="FUNCTION" >close</TT ></A ></DT ><DT ><A HREF="x623.html#AEN642" >Control: <TT CLASS="FUNCTION" >ioctl</TT ></A ></DT ><DT ><A HREF="x623.html#AEN893" >Transferring data: <TT CLASS="FUNCTION" >read</TT > and <TT CLASS="FUNCTION" >write</TT ></A ></DT ><DT ><A HREF="x623.html#AEN902" >Waiting for events: <TT CLASS="FUNCTION" >poll</TT > and <TT CLASS="FUNCTION" >select</TT ></A ></DT ></DL ></DD ><DT ><A HREF="x916.html" >Examples</A ></DT ></DL ></DD ><DT ><A HREF="a950.html" >Linux parallel port driver API reference</A ></DT ><DD ><DL ><DT ><A HREF="r952.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_device_num</SPAN ></SPAN ></A > -- convert device coordinates </DT ><DT ><A HREF="r992.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_device_coords</SPAN ></SPAN ></A > -- convert canonical device number </DT ><DT ><A HREF="r1048.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_find_device</SPAN ></SPAN ></A > -- find a specific device </DT ><DT ><A HREF="r1097.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_find_class</SPAN ></SPAN ></A > -- find a device in a specified class </DT ><DT ><A HREF="r1138.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_register_driver</SPAN ></SPAN ></A > -- register a parallel port device driver </DT ><DT ><A HREF="r1177.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_unregister_driver</SPAN ></SPAN ></A > -- deregister a parallel port device driver </DT ><DT ><A HREF="r1215.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_get_port</SPAN ></SPAN ></A > -- increment a port's reference count </DT ><DT ><A HREF="r1242.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_put_port</SPAN ></SPAN ></A > -- decrement a port's reference count </DT ><DT ><A HREF="r1269.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_find_number</SPAN ></SPAN ></A > -- find a parallel port by number </DT ><DT ><A HREF="r1300.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_find_base</SPAN ></SPAN ></A > -- find a parallel port by base address </DT ><DT ><A HREF="r1331.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_register_device</SPAN ></SPAN ></A > -- register a device on a parallel port </DT ><DT ><A HREF="r1428.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_unregister_device</SPAN ></SPAN ></A > -- deregister a device on a parallel port </DT ><DT ><A HREF="r1455.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_open</SPAN ></SPAN ></A > -- find a device by canonical device number </DT ><DT ><A HREF="r1533.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_close</SPAN ></SPAN ></A > -- close a device opened with <TT CLASS="FUNCTION" >parport_open</TT > </DT ><DT ><A HREF="r1563.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_claim</SPAN ></SPAN ></A > -- claim access to a parallel port device </DT ><DT ><A HREF="r1590.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_claim_or_block</SPAN ></SPAN ></A > -- claim access to a parallel port device </DT ><DT ><A HREF="r1617.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_release</SPAN ></SPAN ></A > -- give up access to a parallel port device </DT ><DT ><A HREF="r1643.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_yield</SPAN ></SPAN ></A > -- relinquish a parallel port temporarily </DT ><DT ><A HREF="r1675.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_yield_blocking</SPAN ></SPAN ></A > -- relinquish a parallel port temporarily </DT ><DT ><A HREF="r1703.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_negotiate</SPAN ></SPAN ></A > -- negotiate an IEEE 1284 mode </DT ><DT ><A HREF="r1739.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_write</SPAN ></SPAN ></A > -- write a block of data to a parallel port </DT ><DT ><A HREF="r1786.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_read</SPAN ></SPAN ></A > -- read a block of data from a parallel port </DT ><DT ><A HREF="r1833.html" ><SPAN CLASS="phrase" ><SPAN CLASS="PHRASE" >parport_set_timeout</SPAN ></SPAN ></A > -- set the inactivity timeout for a device </DT ></DL ></DD ><DT ><A HREF="a1871.html" >The Linux 2.2 Parallel Port Subsystem</A ></DT ><DT ><A HREF="a1909.html" >GNU Free Documentation License</A ></DT ></DL ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" > </TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="c17.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" > </TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Design goals</TD ></TR ></TABLE ></DIV ></BODY ></HTML >