summaryrefslogtreecommitdiffstats
path: root/drivers/misc/parport_share.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/misc/parport_share.c')
-rw-r--r--drivers/misc/parport_share.c35
1 files changed, 21 insertions, 14 deletions
diff --git a/drivers/misc/parport_share.c b/drivers/misc/parport_share.c
index 55b64e856..256cbcee6 100644
--- a/drivers/misc/parport_share.c
+++ b/drivers/misc/parport_share.c
@@ -1,4 +1,4 @@
-/* $Id: parport_share.c,v 1.1 1997/07/25 01:53:19 ralf Exp $
+/* $Id: parport_share.c,v 1.1 1997/07/29 03:59:13 ralf Exp $
* Parallel-port resource manager code.
*
* Authors: David Campbell <campbell@tirian.che.curtin.edu.au>
@@ -88,6 +88,23 @@ struct parport *parport_register_port(unsigned long base, int irq, int dma,
return tmp;
}
+void parport_unregister_port(struct parport *port)
+{
+ struct parport *p;
+ kfree(port->name);
+ if (portlist == port) {
+ portlist = port->next;
+ } else {
+ for (p = portlist; (p != NULL) && (p->next != port);
+ p=p->next);
+ if (p) {
+ if ((p->next = port->next) == NULL)
+ portlist_tail = p;
+ }
+ }
+ kfree(port);
+}
+
void parport_quiesce(struct parport *port)
{
if (port->devices) {
@@ -106,7 +123,7 @@ void parport_quiesce(struct parport *port)
}
struct pardevice *parport_register_device(struct parport *port, const char *name,
- int (*pf)(void *), int (*kf)(void *),
+ int (*pf)(void *), void (*kf)(void *),
void (*irq_func)(int, void *, struct pt_regs *),
int flags, void *handle)
{
@@ -223,7 +240,6 @@ int parport_claim(struct pardevice *dev)
pd1 = dev->port->cad;
if (dev->port->cad) {
if (dev->port->cad->preempt) {
- /* Now try to preempt */
if (dev->port->cad->preempt(dev->port->cad->private))
return -EAGAIN;
dev->port->ops->save_state(dev->port, dev->state);
@@ -301,19 +317,10 @@ void parport_release(struct pardevice *dev)
}
/* Now give the lurker a chance.
- * There should be a wakeup callback because we checked for it
+ * There must be a wakeup callback because we checked for it
* at registration.
*/
if (dev->port->lurker && (dev->port->lurker != dev)) {
- if (dev->port->lurker->wakeup) {
- dev->port->lurker->wakeup(dev->port->lurker->private);
- }
-#ifdef PARPORT_PARANOID
- else { /* can't happen */
- printk(KERN_DEBUG
- "%s (%s): lurker's wakeup callback went away!\n",
- dev->port->name, dev->name);
- }
-#endif
+ dev->port->lurker->wakeup(dev->port->lurker->private);
}
}