~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/Documentation/parport-lowlevel.txt

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 PARPORT interface documentation
  2 -------------------------------
  3 
  4 Time-stamp: <2000-02-24 13:30:20 twaugh>
  5 
  6 Described here are the following functions:
  7 
  8 Global functions:
  9   parport_register_driver
 10   parport_unregister_driver
 11   parport_enumerate
 12   parport_register_device
 13   parport_unregister_device
 14   parport_claim
 15   parport_claim_or_block
 16   parport_release
 17   parport_yield
 18   parport_yield_blocking
 19   parport_wait_peripheral
 20   parport_poll_peripheral
 21   parport_wait_event
 22   parport_negotiate
 23   parport_read
 24   parport_write
 25   parport_open
 26   parport_close
 27   parport_device_id
 28   parport_device_num
 29   parport_device_coords
 30   parport_find_class
 31   parport_find_device
 32   parport_set_timeout
 33 
 34 Port functions (can be overridden by low-level drivers):
 35   SPP:
 36     port->ops->read_data
 37     port->ops->write_data
 38     port->ops->read_status
 39     port->ops->read_control
 40     port->ops->write_control
 41     port->ops->frob_control
 42     port->ops->enable_irq
 43     port->ops->disable_irq
 44     port->ops->data_forward
 45     port->ops->data_reverse
 46 
 47   EPP:
 48     port->ops->epp_write_data
 49     port->ops->epp_read_data
 50     port->ops->epp_write_addr
 51     port->ops->epp_read_addr
 52 
 53   ECP:
 54     port->ops->ecp_write_data
 55     port->ops->ecp_read_data
 56     port->ops->ecp_write_addr
 57 
 58   Other:
 59     port->ops->nibble_read_data
 60     port->ops->byte_read_data
 61     port->ops->compat_write_data
 62 
 63 The parport subsystem comprises 'parport' (the core port-sharing
 64 code), and a variety of low-level drivers that actually do the port
 65 accesses.  Each low-level driver handles a particular style of port
 66 (PC, Amiga, and so on).
 67 
 68 The parport interface to the device driver author can be broken down
 69 into global functions and port functions.
 70 
 71 The global functions are mostly for communicating between the device
 72 driver and the parport subsystem: acquiring a list of available ports,
 73 claiming a port for exclusive use, and so on.  They also include
 74 'generic' functions for doing standard things that will work on any
 75 IEEE 1284-capable architecture.
 76 
 77 The port functions are provided by the low-level drivers, although the
 78 core parport module provides generic 'defaults' for some routines.
 79 The port functions can be split into three groups: SPP, EPP, and ECP.
 80 
 81 SPP (Standard Parallel Port) functions modify so-called 'SPP'
 82 registers: data, status, and control.  The hardware may not actually
 83 have registers exactly like that, but the PC does and this interface is
 84 modelled after common PC implementations.  Other low-level drivers may
 85 be able to emulate most of the functionality.
 86 
 87 EPP (Enhanced Parallel Port) functions are provided for reading and
 88 writing in IEEE 1284 EPP mode, and ECP (Extended Capabilities Port)
 89 functions are used for IEEE 1284 ECP mode. (What about BECP? Does
 90 anyone care?)
 91 
 92 Hardware assistance for EPP and/or ECP transfers may or may not be
 93 available, and if it is available it may or may not be used.  If
 94 hardware is not used, the transfer will be software-driven.  In order
 95 to cope with peripherals that only tenuously support IEEE 1284, a
 96 low-level driver specific function is provided, for altering 'fudge
 97 factors'.
 98 
 99 GLOBAL FUNCTIONS
100 ----------------
101 
102 parport_register_driver - register a device driver with parport
103 -----------------------
104 
105 SYNOPSIS
106 
107 #include <linux/parport.h>
108 
109 struct parport_driver {
110         const char *name;
111         void (*attach) (struct parport *);
112         void (*detach) (struct parport *);
113         struct parport_driver *next;
114 };
115 int parport_register_driver (struct parport_driver *driver);
116 
117 DESCRIPTION
118 
119 In order to be notified about parallel ports when they are detected,
120 parport_register_driver should be called.  Your driver will
121 immediately be notified of all ports that have already been detected,
122 and of each new port as low-level drivers are loaded.
123 
124 A 'struct parport_driver' contains the textual name of your driver,
125 a pointer to a function to handle new ports, and a pointer to a
126 function to handle ports going away due to a low-level driver
127 unloading.  Ports will only be detached if they are not being used
128 (i.e. there are no devices registered on them).
129 
130 The visible parts of the 'struct parport *' argument given to
131 attach/detach are:
132 
133 struct parport
134 {
135         struct parport *next; /* next parport in list */
136         const char *name;     /* port's name */
137         unsigned int modes;   /* bitfield of hardware modes */
138         struct parport_device_info probe_info;
139                               /* IEEE1284 info */
140         int number;           /* parport index */
141         struct parport_operations *ops;
142         ...
143 };
144 
145 There are other members of the structure, but they should not be
146 touched.
147 
148 The 'modes' member summarises the capabilities of the underlying
149 hardware.  It consists of flags which may be bitwise-ored together:
150 
151   PARPORT_MODE_PCSPP            IBM PC registers are available,
152                                 i.e. functions that act on data,
153                                 control and status registers are
154                                 probably writing directly to the
155                                 hardware.
156   PARPORT_MODE_TRISTATE         The data drivers may be turned off.
157                                 This allows the data lines to be used
158                                 for reverse (peripheral to host)
159                                 transfers.
160   PARPORT_MODE_COMPAT           The hardware can assist with
161                                 compatibility-mode (printer)
162                                 transfers, i.e. compat_write_block.
163   PARPORT_MODE_EPP              The hardware can assist with EPP
164                                 transfers.
165   PARPORT_MODE_ECP              The hardware can assist with ECP
166                                 transfers.
167   PARPORT_MODE_DMA              The hardware can use DMA, so you might
168                                 want to pass ISA DMA-able memory
169                                 (i.e. memory allocated using the
170                                 GFP_DMA flag with kmalloc) to the
171                                 low-level driver in order to take
172                                 advantage of it.
173 
174 There may be other flags in 'modes' as well.
175 
176 The contents of 'modes' is advisory only.  For example, if the
177 hardware is capable of DMA, and PARPORT_MODE_DMA is in 'modes', it
178 doesn't necessarily mean that DMA will always be used when possible.
179 Similarly, hardware that is capable of assisting ECP transfers won't
180 necessarily be used.
181 
182 RETURN VALUE
183 
184 Zero on success, otherwise an error code.
185 
186 ERRORS
187 
188 None. (Can it fail? Why return int?)
189 
190 EXAMPLE
191 
192 static void lp_attach (struct parport *port)
193 {
194         ...
195         private = kmalloc (...);
196         dev[count++] = parport_register_device (...);
197         ...
198 }
199 
200 static void lp_detach (struct parport *port)
201 {
202         ...
203 }
204 
205 static struct parport_driver lp_driver = {
206         "lp",
207         lp_attach,
208         lp_detach,
209         NULL /* always put NULL here */
210 };
211 
212 int lp_init (void)
213 {
214         ...
215         if (parport_register_driver (&lp_driver)) {
216                 /* Failed; nothing we can do. */
217                 return -EIO;
218         }
219         ...
220 }
221 
222 SEE ALSO
223 
224 parport_unregister_driver, parport_register_device, parport_enumerate
225 
226 parport_unregister_driver - tell parport to forget about this driver
227 -------------------------
228 
229 SYNOPSIS
230 
231 #include <linux/parport.h>
232 
233 struct parport_driver {
234         const char *name;
235         void (*attach) (struct parport *);
236         void (*detach) (struct parport *);
237         struct parport_driver *next;
238 };
239 void parport_unregister_driver (struct parport_driver *driver);
240 
241 DESCRIPTION
242 
243 This tells parport not to notify the device driver of new ports or of
244 ports going away.  Registered devices belonging to that driver are NOT
245 unregistered: parport_unregister_device must be used for each one.
246 
247 EXAMPLE
248 
249 void cleanup_module (void)
250 {
251         ...
252         /* Stop notifications. */
253         parport_unregister_driver (&lp_driver);
254 
255         /* Unregister devices. */
256         for (i = 0; i < NUM_DEVS; i++)
257                 parport_unregister_device (dev[i]);
258         ...
259 }
260 
261 SEE ALSO
262 
263 parport_register_driver, parport_enumerate
264 
265 parport_enumerate - retrieve a list of parallel ports (DEPRECATED)
266 -----------------
267 
268 SYNOPSIS
269 
270 #include <linux/parport.h>
271 
272 struct parport *parport_enumerate (void);
273 
274 DESCRIPTION
275 
276 Retrieve the first of a list of valid parallel ports for this machine.
277 Successive parallel ports can be found using the 'struct parport
278 *next' element of the 'struct parport *' that is returned.  If 'next'
279 is NULL, there are no more parallel ports in the list.  The number of
280 ports in the list will not exceed PARPORT_MAX.
281 
282 RETURN VALUE
283 
284 A 'struct parport *' describing a valid parallel port for the machine,
285 or NULL if there are none.
286 
287 ERRORS
288 
289 This function can return NULL to indicate that there are no parallel
290 ports to use.
291 
292 EXAMPLE
293 
294 int detect_device (void)
295 {
296         struct parport *port;
297 
298         for (port = parport_enumerate ();
299              port != NULL;
300              port = port->next) {
301                 /* Try to detect a device on the port... */
302                 ...
303              }
304         }
305 
306         ...
307 }
308 
309 NOTES
310 
311 parport_enumerate is deprecated; parport_register_driver should be
312 used instead.
313 
314 SEE ALSO
315 
316 parport_register_driver, parport_unregister_driver
317 
318 parport_register_device - register to use a port
319 -----------------------
320 
321 SYNOPSIS
322 
323 #include <linux/parport.h>
324 
325 typedef int (*preempt_func) (void *handle);
326 typedef void (*wakeup_func) (void *handle);
327 typedef int (*irq_func) (int irq, void *handle, struct pt_regs *);
328 
329 struct pardevice *parport_register_device(struct parport *port,
330                                           const char *name,
331                                           preempt_func preempt,
332                                           wakeup_func wakeup,
333                                           irq_func irq,
334                                           int flags,
335                                           void *handle);
336 
337 DESCRIPTION
338 
339 Use this function to register your device driver on a parallel port
340 ('port').  Once you have done that, you will be able to use
341 parport_claim and parport_release in order to use the port.
342 
343 This function will register three callbacks into your driver:
344 'preempt', 'wakeup' and 'irq'.  Each of these may be NULL in order to
345 indicate that you do not want a callback.
346 
347 When the 'preempt' function is called, it is because another driver
348 wishes to use the parallel port.  The 'preempt' function should return
349 non-zero if the parallel port cannot be released yet -- if zero is
350 returned, the port is lost to another driver and the port must be
351 re-claimed before use.
352 
353 The 'wakeup' function is called once another driver has released the
354 port and no other driver has yet claimed it.  You can claim the
355 parallel port from within the 'wakeup' function (in which case the
356 claim is guaranteed to succeed), or choose not to if you don't need it
357 now.
358 
359 If an interrupt occurs on the parallel port your driver has claimed,
360 the 'irq' function will be called. (Write something about shared
361 interrupts here.)
362 
363 The 'handle' is a pointer to driver-specific data, and is passed to
364 the callback functions.
365 
366 'flags' may be a bitwise combination of the following flags:
367 
368         Flag            Meaning
369   PARPORT_DEV_EXCL      The device cannot share the parallel port at all.
370                         Use this only when absolutely necessary.
371 
372 The typedefs are not actually defined -- they are only shown in order
373 to make the function prototype more readable.
374 
375 The visible parts of the returned 'struct pardevice' are:
376 
377 struct pardevice {
378         struct parport *port;   /* Associated port */
379         void *private;          /* Device driver's 'handle' */
380         ...
381 };
382 
383 RETURN VALUE
384 
385 A 'struct pardevice *': a handle to the registered parallel port
386 device that can be used for parport_claim, parport_release, etc.
387 
388 ERRORS
389 
390 A return value of NULL indicates that there was a problem registering
391 a device on that port.
392 
393 EXAMPLE
394 
395 static int preempt (void *handle)
396 {
397         if (busy_right_now)
398                 return 1;
399 
400         must_reclaim_port = 1;
401         return 0;
402 }
403 
404 static void wakeup (void *handle)
405 {
406         struct toaster *private = handle;
407         struct pardevice *dev = private->dev;
408         if (!dev) return; /* avoid races */
409 
410         if (want_port)
411                 parport_claim (dev);
412 }
413 
414 static int toaster_detect (struct toaster *private, struct parport *port)
415 {
416         private->dev = parport_register_device (port, "toaster", preempt,
417                                                 wakeup, NULL, 0,
418                                                 private);
419         if (!private->dev)
420                 /* Couldn't register with parport. */
421                 return -EIO;
422 
423         must_reclaim_port = 0;
424         busy_right_now = 1;
425         parport_claim_or_block (private->dev);
426         ...
427         /* Don't need the port while the toaster warms up. */
428         busy_right_now = 0;
429         ...
430         busy_right_now = 1;
431         if (must_reclaim_port) {
432                 parport_claim_or_block (private->dev);
433                 must_reclaim_port = 0;
434         }
435         ...
436 }
437 
438 SEE ALSO
439 
440 parport_unregister_device, parport_claim
441 
442 parport_unregister_device - finish using a port
443 -------------------------
444 
445 SYNPOPSIS
446 
447 #include <linux/parport.h>
448 
449 void parport_unregister_device (struct pardevice *dev);
450 
451 DESCRIPTION
452 
453 This function is the opposite of parport_register_device.  After using
454 parport_unregister_device, 'dev' is no longer a valid device handle.
455 
456 You should not unregister a device that is currently claimed, although
457 if you do it will be released automatically.
458 
459 EXAMPLE
460 
461         ...
462         kfree (dev->private); /* before we lose the pointer */
463         parport_unregister_device (dev);
464         ...
465 
466 SEE ALSO
467 
468 parport_unregister_driver
469 
470 parport_claim, parport_claim_or_block - claim the parallel port for a device
471 -------------------------------------
472 
473 SYNOPSIS
474 
475 #include <linux/parport.h>
476 
477 int parport_claim (struct pardevice *dev);
478 int parport_claim_or_block (struct pardevice *dev);
479 
480 DESCRIPTION
481 
482 These functions attempt to gain control of the parallel port on which
483 'dev' is registered.  'parport_claim' does not block, but
484 'parport_claim_or_block' may do. (Put something here about blocking
485 interruptibly or non-interruptibly.)
486 
487 You should not try to claim a port that you have already claimed.
488 
489 RETURN VALUE
490 
491 A return value of zero indicates that the port was successfully
492 claimed, and the caller now has possession of the parallel port.
493 
494 If 'parport_claim_or_block' blocks before returning successfully, the
495 return value is positive.
496 
497 ERRORS
498 
499   -EAGAIN  The port is unavailable at the moment, but another attempt
500            to claim it may succeed.
501 
502 SEE ALSO
503 
504 parport_release
505 
506 parport_release - release the parallel port
507 ---------------
508 
509 SYNOPSIS
510 
511 #include <linux/parport.h>
512 
513 void parport_release (struct pardevice *dev);
514 
515 DESCRIPTION
516 
517 Once a parallel port device has been claimed, it can be released using
518 'parport_release'.  It cannot fail, but you should not release a
519 device that you do not have possession of.
520 
521 EXAMPLE
522 
523 static size_t write (struct pardevice *dev, const void *buf,
524                      size_t len)
525 {
526         ...
527         written = dev->port->ops->write_ecp_data (dev->port, buf,
528                                                   len);
529         parport_release (dev);
530         ...
531 }
532 
533 
534 SEE ALSO
535 
536 change_mode, parport_claim, parport_claim_or_block, parport_yield
537 
538 parport_yield, parport_yield_blocking - temporarily release a parallel port
539 -------------------------------------
540 
541 SYNOPSIS
542 
543 #include <linux/parport.h>
544 
545 int parport_yield (struct pardevice *dev)
546 int parport_yield_blocking (struct pardevice *dev);
547 
548 DESCRIPTION
549 
550 When a driver has control of a parallel port, it may allow another
551 driver to temporarily 'borrow' it.  'parport_yield' does not block;
552 'parport_yield_blocking' may do.
553 
554 RETURN VALUE
555 
556 A return value of zero indicates that the caller still owns the port
557 and the call did not block.
558 
559 A positive return value from 'parport_yield_blocking' indicates that
560 the caller still owns the port and the call blocked.
561 
562 A return value of -EAGAIN indicates that the caller no longer owns the
563 port, and it must be re-claimed before use.
564 
565 ERRORS
566 
567   -EAGAIN  Ownership of the parallel port was given away.
568 
569 SEE ALSO
570 
571 parport_release
572 
573 parport_wait_peripheral - wait for status lines, up to 35ms
574 -----------------------
575 
576 SYNOPSIS
577 
578 #include <linux/parport.h>
579 
580 int parport_wait_peripheral (struct parport *port,
581                              unsigned char mask,
582                              unsigned char val);
583 
584 DESCRIPTION
585 
586 Wait for the status lines in mask to match the values in val.
587 
588 RETURN VALUE
589 
590  -EINTR  a signal is pending
591       0  the status lines in mask have values in val
592       1  timed out while waiting (35ms elapsed)
593 
594 SEE ALSO
595 
596 parport_poll_peripheral
597 
598 parport_poll_peripheral - wait for status lines, in usec
599 -----------------------
600 
601 SYNOPSIS
602 
603 #include <linux/parport.h>
604 
605 int parport_poll_peripheral (struct parport *port,
606                              unsigned char mask,
607                              unsigned char val,
608                              int usec);
609 
610 DESCRIPTION
611 
612 Wait for the status lines in mask to match the values in val.
613 
614 RETURN VALUE
615 
616  -EINTR  a signal is pending
617       0  the status lines in mask have values in val
618       1  timed out while waiting (usec microseconds have elapsed)
619 
620 SEE ALSO
621 
622 parport_wait_peripheral
623 
624 parport_wait_event - wait for an event on a port
625 ------------------
626 
627 SYNOPSIS
628 
629 #include <linux/parport.h>
630 
631 int parport_wait_event (struct parport *port, signed long timeout)
632 
633 DESCRIPTION
634 
635 Wait for an event (e.g. interrupt) on a port.  The timeout is in
636 jiffies.
637 
638 RETURN VALUE
639 
640       0  success
641      <0  error (exit as soon as possible)
642      >0  timed out
643 
644 parport_negotiate - perform IEEE 1284 negotiation
645 -----------------
646 
647 SYNOPSIS
648 
649 #include <linux/parport.h>
650 
651 int parport_negotiate (struct parport *, int mode);
652 
653 DESCRIPTION
654 
655 Perform IEEE 1284 negotiation.
656 
657 RETURN VALUE
658 
659      0  handshake OK; IEEE 1284 peripheral and mode available
660     -1  handshake failed; peripheral not compliant (or none present)
661      1  handshake OK; IEEE 1284 peripheral present but mode not
662         available
663 
664 SEE ALSO
665 
666 parport_read, parport_write
667 
668 parport_read - read data from device
669 ------------
670 
671 SYNOPSIS
672 
673 #include <linux/parport.h>
674 
675 ssize_t parport_read (struct parport *, void *buf, size_t len);
676 
677 DESCRIPTION
678 
679 Read data from device in current IEEE 1284 transfer mode.  This only
680 works for modes that support reverse data transfer.
681 
682 RETURN VALUE
683 
684 If negative, an error code; otherwise the number of bytes transferred.
685 
686 SEE ALSO
687 
688 parport_write, parport_negotiate
689 
690 parport_write - write data to device
691 -------------
692 
693 SYNOPSIS
694 
695 #include <linux/parport.h>
696 
697 ssize_t parport_write (struct parport *, const void *buf, size_t len);
698 
699 DESCRIPTION
700 
701 Write data to device in current IEEE 1284 transfer mode.  This only
702 works for modes that support forward data transfer.
703 
704 RETURN VALUE
705 
706 If negative, an error code; otherwise the number of bytes transferred.
707 
708 SEE ALSO
709 
710 parport_read, parport_negotiate
711 
712 parport_open - register device for particular device number
713 ------------
714 
715 SYNOPSIS
716 
717 #include <linux/parport.h>
718 
719 struct pardevice *parport_open (int devnum, const char *name,
720                                 int (*pf) (void *),
721                                 void (*kf) (void *),
722                                 void (*irqf) (int, void *,
723                                               struct pt_regs *),
724                                 int flags, void *handle);
725 
726 DESCRIPTION
727 
728 This is like parport_register_device but takes a device number instead
729 of a pointer to a struct parport.
730 
731 RETURN VALUE
732 
733 See parport_register_device.  If no device is associated with devnum,
734 NULL is returned.
735 
736 SEE ALSO
737 
738 parport_register_device, parport_device_num
739 
740 parport_close - unregister device for particular device number
741 -------------
742 
743 SYNOPSIS
744 
745 #include <linux/parport.h>
746 
747 void parport_close (struct pardevice *dev);
748 
749 DESCRIPTION
750 
751 This is the equivalent of parport_unregister_device for parport_open.
752 
753 SEE ALSO
754 
755 parport_unregister_device, parport_open
756 
757 parport_device_id - obtain IEEE 1284 Device ID
758 -----------------
759 
760 SYNOPSIS
761 
762 #include <linux/parport.h>
763 
764 ssize_t parport_device_id (int devnum, char *buffer, size_t len);
765 
766 DESCRIPTION
767 
768 Obtains the IEEE 1284 Device ID associated with a given device.
769 
770 RETURN VALUE
771 
772 If negative, an error code; otherwise, the number of bytes of buffer
773 that contain the device ID.  The format of the device ID is as
774 follows:
775 
776 [length][ID]
777 
778 The first two bytes indicate the inclusive length of the entire Device
779 ID, and are in big-endian order.  The ID is a sequence of pairs of the
780 form:
781 
782 key:value;
783 
784 NOTES
785 
786 Many devices have ill-formed IEEE 1284 Device IDs.
787 
788 SEE ALSO
789 
790 parport_find_class, parport_find_device, parport_device_num
791 
792 parport_device_num - convert device coordinates to device number
793 ------------------
794 
795 SYNOPSIS
796 
797 #include <linux/parport.h>
798 
799 int parport_device_num (int parport, int mux, int daisy);
800 
801 DESCRIPTION
802 
803 Convert between device coordinates (port, multiplexor, daisy chain
804 address) and device number (zero-based).
805 
806 RETURN VALUE
807 
808 Device number, or -1 if no device at given coordinates.
809 
810 SEE ALSO
811 
812 parport_device_coords, parport_open, parport_device_id
813 
814 parport_device_coords - convert device number to device coordinates
815 ------------------
816 
817 SYNOPSIS
818 
819 #include <linux/parport.h>
820 
821 int parport_device_coords (int devnum, int *parport, int *mux,
822                            int *daisy);
823 
824 DESCRIPTION
825 
826 Convert between device number (zero-based) and device coordinates
827 (port, multiplexor, daisy chain address).
828 
829 RETURN VALUE
830 
831 Zero on success, in which case the coordinates are (*parport, *mux,
832 *daisy).
833 
834 SEE ALSO
835 
836 parport_device_num, parport_open, parport_device_id
837 
838 parport_find_class - find a device by its class
839 ------------------
840 
841 SYNOPSIS
842 
843 #include <linux/parport.h>
844 
845 typedef enum {
846         PARPORT_CLASS_LEGACY = 0,       /* Non-IEEE1284 device */
847         PARPORT_CLASS_PRINTER,
848         PARPORT_CLASS_MODEM,
849         PARPORT_CLASS_NET,
850         PARPORT_CLASS_HDC,              /* Hard disk controller */
851         PARPORT_CLASS_PCMCIA,
852         PARPORT_CLASS_MEDIA,            /* Multimedia device */
853         PARPORT_CLASS_FDC,              /* Floppy disk controller */
854         PARPORT_CLASS_PORTS,
855         PARPORT_CLASS_SCANNER,
856         PARPORT_CLASS_DIGCAM,
857         PARPORT_CLASS_OTHER,            /* Anything else */
858         PARPORT_CLASS_UNSPEC,           /* No CLS field in ID */
859         PARPORT_CLASS_SCSIADAPTER
860 } parport_device_class;
861 
862 int parport_find_class (parport_device_class cls, int from);
863 
864 DESCRIPTION
865 
866 Find a device by class.  The search starts from device number from+1.
867 
868 RETURN VALUE
869 
870 The device number of the next device in that class, or -1 if no such
871 device exists.
872 
873 NOTES
874 
875 Example usage:
876 
877 int devnum = -1;
878 while ((devnum = parport_find_class (PARPORT_CLASS_DIGCAM, devnum)) != -1) {
879     struct pardevice *dev = parport_open (devnum, ...);
880     ...
881 }
882 
883 SEE ALSO
884 
885 parport_find_device, parport_open, parport_device_id
886 
887 parport_find_device - find a device by its class
888 ------------------
889 
890 SYNOPSIS
891 
892 #include <linux/parport.h>
893 
894 int parport_find_device (const char *mfg, const char *mdl, int from);
895 
896 DESCRIPTION
897 
898 Find a device by vendor and model.  The search starts from device
899 number from+1.
900 
901 RETURN VALUE
902 
903 The device number of the next device matching the specifications, or
904 -1 if no such device exists.
905 
906 NOTES
907 
908 Example usage:
909 
910 int devnum = -1;
911 while ((devnum = parport_find_device ("IOMEGA", "ZIP+", devnum)) != -1) {
912     struct pardevice *dev = parport_open (devnum, ...);
913     ...
914 }
915 
916 SEE ALSO
917 
918 parport_find_class, parport_open, parport_device_id
919 
920 parport_set_timeout - set the inactivity timeout
921 -------------------
922 
923 SYNOPSIS
924 
925 #include <linux/parport.h>
926 
927 long parport_set_timeout (struct pardevice *dev, long inactivity);
928 
929 DESCRIPTION
930 
931 Set the inactivity timeout, in jiffies, for a registered device.  The
932 previous timeout is returned.
933 
934 RETURN VALUE
935 
936 The previous timeout, in jiffies.
937 
938 NOTES
939 
940 Some of the port->ops functions for a parport may take time, owing to
941 delays at the peripheral.  After the peripheral has not responded for
942 'inactivity' jiffies, a timeout will occur and the blocking function
943 will return.
944 
945 A timeout of 0 jiffies is a special case: the function must do as much
946 as it can without blocking or leaving the hardware in an unknown
947 state.  If port operations are performed from within an interrupt
948 handler, for instance, a timeout of 0 jiffies should be used.
949 
950 Once set for a registered device, the timeout will remain at the set
951 value until set again.
952 
953 SEE ALSO
954 
955 port->ops->xxx_read/write_yyy
956 
957 PORT FUNCTIONS
958 --------------
959 
960 The functions in the port->ops structure (struct parport_operations)
961 are provided by the low-level driver responsible for that port.
962 
963 port->ops->read_data - read the data register
964 --------------------
965 
966 SYNOPSIS
967 
968 #include <linux/parport.h>
969 
970 struct parport_operations {
971         ...
972         unsigned char (*read_data) (struct parport *port);
973         ...
974 };
975 
976 DESCRIPTION
977 
978 If port->modes contains the PARPORT_MODE_TRISTATE flag and the
979 PARPORT_CONTROL_DIRECTION bit in the control register is set, this
980 returns the value on the data pins.  If port->modes contains the
981 PARPORT_MODE_TRISTATE flag and the PARPORT_CONTROL_DIRECTION bit is
982 not set, the return value _may_ be the last value written to the data
983 register.  Otherwise the return value is undefined.
984 
985 SEE ALSO
986 
987 write_data, read_status, write_control
988 
989 port->ops->write_data - write the data register
990 ---------------------
991 
992 SYNOPSIS
993 
994 #include <linux/parport.h>
995 
996 struct parport_operations {
997         ...
998         void (*write_data) (struct parport *port, unsigned char d);
999         ...
1000 };
1001 
1002 DESCRIPTION
1003 
1004 Writes to the data register.  May have side-effects (a STROBE pulse,
1005 for instance).
1006 
1007 SEE ALSO
1008 
1009 read_data, read_status, write_control
1010 
1011 port->ops->read_status - read the status register
1012 ----------------------
1013 
1014 SYNOPSIS
1015 
1016 #include <linux/parport.h>
1017 
1018 struct parport_operations {
1019         ...
1020         unsigned char (*read_status) (struct parport *port);
1021         ...
1022 };
1023 
1024 DESCRIPTION
1025 
1026 Reads from the status register.  This is a bitmask:
1027 
1028 - PARPORT_STATUS_ERROR (printer fault, "nFault")
1029 - PARPORT_STATUS_SELECT (on-line, "Select")
1030 - PARPORT_STATUS_PAPEROUT (no paper, "PError")
1031 - PARPORT_STATUS_ACK (handshake, "nAck")
1032 - PARPORT_STATUS_BUSY (busy, "Busy")
1033 
1034 There may be other bits set.
1035 
1036 SEE ALSO
1037 
1038 read_data, write_data, write_control
1039 
1040 port->ops->read_control - read the control register
1041 -----------------------
1042 
1043 SYNOPSIS
1044 
1045 #include <linux/parport.h>
1046 
1047 struct parport_operations {
1048         ...
1049         unsigned char (*read_control) (struct parport *port);
1050         ...
1051 };
1052 
1053 DESCRIPTION
1054 
1055 Returns the last value written to the control register (either from
1056 write_control or frob_control).  No port access is performed.
1057 
1058 SEE ALSO
1059 
1060 read_data, write_data, read_status, write_control
1061 
1062 port->ops->write_control - write the control register
1063 ------------------------
1064 
1065 SYNOPSIS
1066 
1067 #include <linux/parport.h>
1068 
1069 struct parport_operations {
1070         ...
1071         void (*write_status) (struct parport *port, unsigned char s);
1072         ...
1073 };
1074 
1075 DESCRIPTION
1076 
1077 Writes to the control register. This is a bitmask:
1078                           _______
1079 - PARPORT_CONTROL_STROBE (nStrobe)
1080                           _______
1081 - PARPORT_CONTROL_AUTOFD (nAutoFd)
1082                         _____
1083 - PARPORT_CONTROL_INIT (nInit)
1084                           _________
1085 - PARPORT_CONTROL_SELECT (nSelectIn)
1086 
1087 SEE ALSO
1088 
1089 read_data, write_data, read_status, frob_control
1090 
1091 port->ops->frob_control - write control register bits
1092 -----------------------
1093 
1094 SYNOPSIS
1095 
1096 #include <linux/parport.h>
1097 
1098 struct parport_operations {
1099         ...
1100         void (*frob_control) (struct parport *port,
1101                               unsigned char mask,
1102                               unsigned char val);
1103         ...
1104 };
1105 
1106 DESCRIPTION
1107 
1108 This is equivalent to reading from the control register, masking out
1109 the bits in mask, exclusive-or'ing with the bits in val, and writing
1110 the result to the control register.
1111 
1112 As some ports don't allow reads from the control port, a software copy
1113 of its contents is maintained, so frob_control is in fact only one
1114 port access.
1115 
1116 SEE ALSO
1117 
1118 read_data, write_data, read_status, write_control
1119 
1120 port->ops->enable_irq - enable interrupt generation
1121 ---------------------
1122 
1123 SYNOPSIS
1124 
1125 #include <linux/parport.h>
1126 
1127 struct parport_operations {
1128         ...
1129         void (*enable_irq) (struct parport *port);
1130         ...
1131 };
1132 
1133 DESCRIPTION
1134 
1135 The parallel port hardware is instructed to generate interrupts at
1136 appropriate moments, although those moments are
1137 architecture-specific.  For the PC architecture, interrupts are
1138 commonly generated on the rising edge of nAck.
1139 
1140 SEE ALSO
1141 
1142 disable_irq
1143 
1144 port->ops->disable_irq - disable interrupt generation
1145 ----------------------
1146 
1147 SYNOPSIS
1148 
1149 #include <linux/parport.h>
1150 
1151 struct parport_operations {
1152         ...
1153         void (*disable_irq) (struct parport *port);
1154         ...
1155 };
1156 
1157 DESCRIPTION
1158 
1159 The parallel port hardware is instructed not to generate interrupts.
1160 The interrupt itself is not masked.
1161 
1162 SEE ALSO
1163 
1164 enable_irq
1165 
1166 port->ops->data_forward - enable data drivers
1167 -----------------------
1168 
1169 SYNOPSIS
1170 
1171 #include <linux/parport.h>
1172 
1173 struct parport_operations {
1174         ...
1175         void (*data_forward) (struct parport *port);
1176         ...
1177 };
1178 
1179 DESCRIPTION
1180 
1181 Enables the data line drivers, for 8-bit host-to-peripheral
1182 communications.
1183 
1184 SEE ALSO
1185 
1186 data_reverse
1187 
1188 port->ops->data_reverse - tristate the buffer
1189 -----------------------
1190 
1191 SYNOPSIS
1192 
1193 #include <linux/parport.h>
1194 
1195 struct parport_operations {
1196         ...
1197         void (*data_reverse) (struct parport *port);
1198         ...
1199 };
1200 
1201 DESCRIPTION
1202 
1203 Places the data bus in a high impedance state, if port->modes has the
1204 PARPORT_MODE_TRISTATE bit set.
1205 
1206 SEE ALSO
1207 
1208 data_forward
1209 
1210 port->ops->epp_write_data - write EPP data
1211 -------------------------
1212 
1213 SYNOPSIS
1214 
1215 #include <linux/parport.h>
1216 
1217 struct parport_operations {
1218         ...
1219         size_t (*epp_write_data) (struct parport *port, const void *buf,
1220                                   size_t len, int flags);
1221         ...
1222 };
1223 
1224 DESCRIPTION
1225 
1226 Writes data in EPP mode, and returns the number of bytes written.
1227 
1228 The 'flags' parameter may be one or more of the following,
1229 bitwise-or'ed together:
1230 
1231 PARPORT_EPP_FAST        Use fast transfers. Some chips provide 16-bit and
1232                         32-bit registers.  However, if a transfer
1233                         times out, the return value may be unreliable.
1234 
1235 SEE ALSO
1236 
1237 epp_read_data, epp_write_addr, epp_read_addr
1238 
1239 port->ops->epp_read_data - read EPP data
1240 ------------------------
1241 
1242 SYNOPSIS
1243 
1244 #include <linux/parport.h>
1245 
1246 struct parport_operations {
1247         ...
1248         size_t (*epp_read_data) (struct parport *port, void *buf,
1249                                  size_t len, int flags);
1250         ...
1251 };
1252 
1253 DESCRIPTION
1254 
1255 Reads data in EPP mode, and returns the number of bytes read.
1256 
1257 The 'flags' parameter may be one or more of the following,
1258 bitwise-or'ed together:
1259 
1260 PARPORT_EPP_FAST        Use fast transfers. Some chips provide 16-bit and
1261                         32-bit registers.  However, if a transfer
1262                         times out, the return value may be unreliable.
1263 
1264 SEE ALSO
1265 
1266 epp_write_data, epp_write_addr, epp_read_addr
1267 
1268 port->ops->epp_write_addr - write EPP address
1269 -------------------------
1270 
1271 SYNOPSIS
1272 
1273 #include <linux/parport.h>
1274 
1275 struct parport_operations {
1276         ...
1277         size_t (*epp_write_addr) (struct parport *port,
1278                                   const void *buf, size_t len, int flags);
1279         ...
1280 };
1281 
1282 DESCRIPTION
1283 
1284 Writes EPP addresses (8 bits each), and returns the number written.
1285 
1286 The 'flags' parameter may be one or more of the following,
1287 bitwise-or'ed together:
1288 
1289 PARPORT_EPP_FAST        Use fast transfers. Some chips provide 16-bit and
1290                         32-bit registers.  However, if a transfer
1291                         times out, the return value may be unreliable.
1292 
1293 (Does PARPORT_EPP_FAST make sense for this function?)
1294 
1295 SEE ALSO
1296 
1297 epp_write_data, epp_read_data, epp_read_addr
1298 
1299 port->ops->epp_read_addr - read EPP address
1300 ------------------------
1301 
1302 SYNOPSIS
1303 
1304 #include <linux/parport.h>
1305 
1306 struct parport_operations {
1307         ...
1308         size_t (*epp_read_addr) (struct parport *port, void *buf,
1309                                  size_t len, int flags);
1310         ...
1311 };
1312 
1313 DESCRIPTION
1314 
1315 Reads EPP addresses (8 bits each), and returns the number read.
1316 
1317 The 'flags' parameter may be one or more of the following,
1318 bitwise-or'ed together:
1319 
1320 PARPORT_EPP_FAST        Use fast transfers. Some chips provide 16-bit and
1321                         32-bit registers.  However, if a transfer
1322                         times out, the return value may be unreliable.
1323 
1324 (Does PARPORT_EPP_FAST make sense for this function?)
1325 
1326 SEE ALSO
1327 
1328 epp_write_data, epp_read_data, epp_write_addr
1329 
1330 port->ops->ecp_write_data - write a block of ECP data
1331 -------------------------
1332 
1333 SYNOPSIS
1334 
1335 #include <linux/parport.h>
1336 
1337 struct parport_operations {
1338         ...
1339         size_t (*ecp_write_data) (struct parport *port,
1340                                   const void *buf, size_t len, int flags);
1341         ...
1342 };
1343 
1344 DESCRIPTION
1345 
1346 Writes a block of ECP data.  The 'flags' parameter is ignored.
1347 
1348 RETURN VALUE
1349 
1350 The number of bytes written.
1351 
1352 SEE ALSO
1353 
1354 ecp_read_data, ecp_write_addr
1355 
1356 port->ops->ecp_read_data - read a block of ECP data
1357 ------------------------
1358 
1359 SYNOPSIS
1360 
1361 #include <linux/parport.h>
1362 
1363 struct parport_operations {
1364         ...
1365         size_t (*ecp_read_data) (struct parport *port,
1366                                  void *buf, size_t len, int flags);
1367         ...
1368 };
1369 
1370 DESCRIPTION
1371 
1372 Reads a block of ECP data.  The 'flags' parameter is ignored.
1373 
1374 RETURN VALUE
1375 
1376 The number of bytes read.  NB. There may be more unread data in a
1377 FIFO.  Is there a way of stunning the FIFO to prevent this?
1378 
1379 SEE ALSO
1380 
1381 ecp_write_block, ecp_write_addr
1382 
1383 port->ops->ecp_write_addr - write a block of ECP addresses
1384 -------------------------
1385 
1386 SYNOPSIS
1387 
1388 #include <linux/parport.h>
1389 
1390 struct parport_operations {
1391         ...
1392         size_t (*ecp_write_addr) (struct parport *port,
1393                                   const void *buf, size_t len, int flags);
1394         ...
1395 };
1396 
1397 DESCRIPTION
1398 
1399 Writes a block of ECP addresses.  The 'flags' parameter is ignored.
1400 
1401 RETURN VALUE
1402 
1403 The number of bytes written.
1404 
1405 NOTES
1406 
1407 This may use a FIFO, and if so shall not return until the FIFO is empty.
1408 
1409 SEE ALSO
1410 
1411 ecp_read_data, ecp_write_data
1412 
1413 port->ops->nibble_read_data - read a block of data in nibble mode
1414 ---------------------------
1415 
1416 SYNOPSIS
1417 
1418 #include <linux/parport.h>
1419 
1420 struct parport_operations {
1421         ...
1422         size_t (*nibble_read_data) (struct parport *port,
1423                                     void *buf, size_t len, int flags);
1424         ...
1425 };
1426 
1427 DESCRIPTION
1428 
1429 Reads a block of data in nibble mode.  The 'flags' parameter is ignored.
1430 
1431 RETURN VALUE
1432 
1433 The number of whole bytes read.
1434 
1435 SEE ALSO
1436 
1437 byte_read_data, compat_write_data
1438 
1439 port->ops->byte_read_data - read a block of data in byte mode
1440 -------------------------
1441 
1442 SYNOPSIS
1443 
1444 #include <linux/parport.h>
1445 
1446 struct parport_operations {
1447         ...
1448         size_t (*byte_read_data) (struct parport *port,
1449                                   void *buf, size_t len, int flags);
1450         ...
1451 };
1452 
1453 DESCRIPTION
1454 
1455 Reads a block of data in byte mode.  The 'flags' parameter is ignored.
1456 
1457 RETURN VALUE
1458 
1459 The number of bytes read.
1460 
1461 SEE ALSO
1462 
1463 nibble_read_data, compat_write_data
1464 
1465 port->ops->compat_write_data - write a block of data in compatibility mode
1466 ----------------------------
1467 
1468 SYNOPSIS
1469 
1470 #include <linux/parport.h>
1471 
1472 struct parport_operations {
1473         ...
1474         size_t (*compat_write_data) (struct parport *port,
1475                                      const void *buf, size_t len, int flags);
1476         ...
1477 };
1478 
1479 DESCRIPTION
1480 
1481 Writes a block of data in compatibility mode.  The 'flags' parameter
1482 is ignored.
1483 
1484 RETURN VALUE
1485 
1486 The number of bytes written.
1487 
1488 SEE ALSO
1489 
1490 nibble_read_data, byte_read_data

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.