.\" This manpage has been automatically generated by docbook2man
.\" from a DocBook document. This tool can be found at:
.\"
.\" Please send any bug reports, improvements, comments, patches,
.\" etc. to Steve Cheng .
.TH "PARPORT_REGISTER_DEVICE" "9" "17 July 2003" "" ""
.SH NAME
parport_register_device \- register a device on a parallel port
.SH SYNOPSIS
.sp
\fB
.sp
struct pardevice * parport_register_device (struct parport * \fIport\fB, const char * \fIname\fB, int (*\fIpf\fB)
void *, void (*\fIkf\fB)
void *, void (*\fIirq_func\fB)
int, void *, struct pt_regs *, int \fIflags\fB, void * \fIhandle\fB);
\fR
.SH "ARGUMENTS"
.TP
\fB\fIport\fB\fR
port to which the device is attached
.TP
\fB\fIname\fB\fR
a name to refer to the device
.TP
\fB\fIpf\fB\fR
preemption callback
.TP
\fB\fIkf\fB\fR
kick callback (wake-up)
.TP
\fB\fIirq_func\fB\fR
interrupt handler
.TP
\fB\fIflags\fB\fR
registration flags
.TP
\fB\fIhandle\fB\fR
data for callback functions
.SH "DESCRIPTION"
.PP
This function, called by parallel port device drivers,
declares that a device is connected to a port, and tells the
system all it needs to know.
.PP
The \fIname\fR is allocated by the caller and must not be
deallocated until the caller calls \fIparport_unregister_device\fR
for that device.
.PP
The preemption callback function, \fIpf\fR, is called when this
device driver has claimed access to the port but another
device driver wants to use it. It is given \fIhandle\fR as its
parameter, and should return zero if it is willing for the
system to release the port to another driver on its behalf.
If it wants to keep control of the port it should return
non-zero, and no action will be taken. It is good manners for
the driver to try to release the port at the earliest
opportunity after its preemption callback rejects a preemption
attempt. Note that if a preemption callback is happy for
preemption to go ahead, there is no need to release the port;
it is done automatically. This function may not block, as it
may be called from interrupt context. If the device driver
does not support preemption, \fIpf\fR can be NULL.
.PP
The wake-up (``kick'') callback function, \fIkf\fR, is called when
the port is available to be claimed for exclusive access; that
is, \fBparport_claim\fR is guaranteed to succeed when called from
inside the wake-up callback function. If the driver wants to
claim the port it should do so; otherwise, it need not take
any action. This function may not block, as it may be called
from interrupt context. If the device driver does not want to
be explicitly invited to claim the port in this way, \fIkf\fR can
be NULL.
.PP
The interrupt handler, \fIirq_func\fR, is called when an interrupt
arrives from the parallel port. Note that if a device driver
wants to use interrupts it should use \fBparport_enable_irq\fR,
and can also check the irq member of the parport structure
representing the port.
.PP
The parallel port (lowlevel) driver is the one that has called
\fBrequest_irq\fR and whose interrupt handler is called first.
This handler does whatever needs to be done to the hardware to
acknowledge the interrupt (for PC-style ports there is nothing
special to be done). It then tells the IEEE 1284 code about
the interrupt, which may involve reacting to an IEEE 1284
event depending on the current IEEE 1284 phase. After this,
it calls \fIirq_func\fR. Needless to say, \fIirq_func\fR will be called
from interrupt context, and may not block.
.PP
The PARPORT_DEV_EXCL flag is for preventing port sharing, and
so should only be used when sharing the port with other device
drivers is impossible and would lead to incorrect behaviour.
Use it sparingly! Normally, \fIflags\fR will be zero.
.PP
This function returns a pointer to a structure that represents
the device on the port, or NULL if there is not enough memory
to allocate space for that structure.
.SH "ABOUT THIS DOCUMENT"
.PP
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.1 or any later version published by the Free Software
Foundation; with no Invariant Sections, with no Front-Cover Texts,
and with no Back-Cover Texts. A copy of the license is included
in the section entitled "GNU Free Documentation License".
.PP
If you have comments on the formatting of this manpage, then please contact
Michael Still (mikal@stillhq.com).
.PP
This documentation was generated with kernel version 2.5.72.