The Linux 2.4 Parallel Port Subsystem

Tim Waugh

      twaugh@redhat.com
     


Table of Contents
1. Design goals
The problems
The solutions
2. Standard transfer modes
3. Structure
Sharing core
Parports and their overrides
IEEE 1284 transfer modes
Pardevices and parport_drivers
The IEEE 1284.3 API
4. Device driver's view
5. Port drivers
6. The printer driver
7. User-level device drivers
Introduction to ppdev
User-level or kernel-level driver?
Programming interface
Starting and stopping: open and close
Control: ioctl
Transferring data: read and write
Waiting for events: poll and select
Examples
A. API reference
parport_device_num — convert device coordinates
parport_device_coords — convert canonical device number
parport_find_device — find a specific device
parport_find_class — find a device in a specified class
parport_register_driver — register a parallel port device driver
parport_unregister_driver — deregister a parallel port device driver
parport_register_device — register a device on a parallel port
parport_unregister_device — deregister a device on a parallel port
parport_open — find a device by canonical device number
parport_close — close a device opened with parport_open()
parport_claim — claim access to a parallel port device
parport_claim_or_block — claim access to a parallel port device
parport_release — give up access to a parallel port device
parport_yield — relinquish a parallel port temporarily
parport_yield_blocking — relinquish a parallel port temporarily
parport_negotiate — negotiate an IEEE 1284 mode
parport_write — write a block of data to a parallel port
parport_read — read a block of data from a parallel port
parport_set_timeout — set the inactivity timeout for a device
B. The Linux 2.2 Parallel Port Subsystem