[PARISC] Update parisc specific input code from parisc tree
Update drivers to new input layer changes. Signed-off-by: Helge Deller <deller@parisc-linux.org> Signed-off-by: Matthew Wilcox <willy@parisc-linux.org> Reorder code in gscps2_interrupt() and only enable ports when opened. This fixes issues with hangs booting an SMP kernel on my C360. Previously serio_interrupt() could be called before the lock in struct serio was initialised. Signed-off-by: Richard Hirst <rhirst@parisc-linux.org> Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
This commit is contained in:

committed by
Kyle McMartin

parent
ae8c75c1c4
commit
6ab0f5cd36
@@ -211,9 +211,6 @@ static void gscps2_reset(struct gscps2port *ps2port)
|
||||
writeb(0xff, addr+GSC_RESET);
|
||||
gscps2_flush(ps2port);
|
||||
spin_unlock_irqrestore(&ps2port->lock, flags);
|
||||
|
||||
/* enable it */
|
||||
gscps2_enable(ps2port, ENABLE);
|
||||
}
|
||||
|
||||
static LIST_HEAD(ps2port_list);
|
||||
@@ -307,6 +304,9 @@ static int gscps2_open(struct serio *port)
|
||||
|
||||
gscps2_reset(ps2port);
|
||||
|
||||
/* enable it */
|
||||
gscps2_enable(ps2port, ENABLE);
|
||||
|
||||
gscps2_interrupt(0, NULL, NULL);
|
||||
|
||||
return 0;
|
||||
@@ -370,8 +370,6 @@ static int __init gscps2_probe(struct parisc_device *dev)
|
||||
serio->port_data = ps2port;
|
||||
serio->dev.parent = &dev->dev;
|
||||
|
||||
list_add_tail(&ps2port->node, &ps2port_list);
|
||||
|
||||
ret = -EBUSY;
|
||||
if (request_irq(dev->irq, gscps2_interrupt, SA_SHIRQ, ps2port->port->name, ps2port))
|
||||
goto fail_miserably;
|
||||
@@ -396,15 +394,16 @@ static int __init gscps2_probe(struct parisc_device *dev)
|
||||
|
||||
serio_register_port(ps2port->port);
|
||||
|
||||
list_add_tail(&ps2port->node, &ps2port_list);
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
free_irq(dev->irq, ps2port);
|
||||
|
||||
fail_miserably:
|
||||
list_del(&ps2port->node);
|
||||
iounmap(ps2port->addr);
|
||||
release_mem_region(dev->hpa, GSC_STATUS + 4);
|
||||
release_mem_region(dev->hpa.start, GSC_STATUS + 4);
|
||||
|
||||
fail_nomem:
|
||||
kfree(ps2port);
|
||||
|
Reference in New Issue
Block a user