diff options
Diffstat (limited to 'drivers/input/serio/gscps2.c')
| -rw-r--r-- | drivers/input/serio/gscps2.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/drivers/input/serio/gscps2.c b/drivers/input/serio/gscps2.c index 897e4c12b642..a7b0de0f92b2 100644 --- a/drivers/input/serio/gscps2.c +++ b/drivers/input/serio/gscps2.c | |||
| @@ -211,9 +211,6 @@ static void gscps2_reset(struct gscps2port *ps2port) | |||
| 211 | writeb(0xff, addr+GSC_RESET); | 211 | writeb(0xff, addr+GSC_RESET); |
| 212 | gscps2_flush(ps2port); | 212 | gscps2_flush(ps2port); |
| 213 | spin_unlock_irqrestore(&ps2port->lock, flags); | 213 | spin_unlock_irqrestore(&ps2port->lock, flags); |
| 214 | |||
| 215 | /* enable it */ | ||
| 216 | gscps2_enable(ps2port, ENABLE); | ||
| 217 | } | 214 | } |
| 218 | 215 | ||
| 219 | static LIST_HEAD(ps2port_list); | 216 | static LIST_HEAD(ps2port_list); |
| @@ -307,6 +304,9 @@ static int gscps2_open(struct serio *port) | |||
| 307 | 304 | ||
| 308 | gscps2_reset(ps2port); | 305 | gscps2_reset(ps2port); |
| 309 | 306 | ||
| 307 | /* enable it */ | ||
| 308 | gscps2_enable(ps2port, ENABLE); | ||
| 309 | |||
| 310 | gscps2_interrupt(0, NULL, NULL); | 310 | gscps2_interrupt(0, NULL, NULL); |
| 311 | 311 | ||
| 312 | return 0; | 312 | return 0; |
| @@ -331,7 +331,7 @@ static int __init gscps2_probe(struct parisc_device *dev) | |||
| 331 | { | 331 | { |
| 332 | struct gscps2port *ps2port; | 332 | struct gscps2port *ps2port; |
| 333 | struct serio *serio; | 333 | struct serio *serio; |
| 334 | unsigned long hpa = dev->hpa; | 334 | unsigned long hpa = dev->hpa.start; |
| 335 | int ret; | 335 | int ret; |
| 336 | 336 | ||
| 337 | if (!dev->irq) | 337 | if (!dev->irq) |
| @@ -370,8 +370,6 @@ static int __init gscps2_probe(struct parisc_device *dev) | |||
| 370 | serio->port_data = ps2port; | 370 | serio->port_data = ps2port; |
| 371 | serio->dev.parent = &dev->dev; | 371 | serio->dev.parent = &dev->dev; |
| 372 | 372 | ||
| 373 | list_add_tail(&ps2port->node, &ps2port_list); | ||
| 374 | |||
| 375 | ret = -EBUSY; | 373 | ret = -EBUSY; |
| 376 | if (request_irq(dev->irq, gscps2_interrupt, SA_SHIRQ, ps2port->port->name, ps2port)) | 374 | if (request_irq(dev->irq, gscps2_interrupt, SA_SHIRQ, ps2port->port->name, ps2port)) |
| 377 | goto fail_miserably; | 375 | goto fail_miserably; |
| @@ -396,15 +394,16 @@ static int __init gscps2_probe(struct parisc_device *dev) | |||
| 396 | 394 | ||
| 397 | serio_register_port(ps2port->port); | 395 | serio_register_port(ps2port->port); |
| 398 | 396 | ||
| 397 | list_add_tail(&ps2port->node, &ps2port_list); | ||
| 398 | |||
| 399 | return 0; | 399 | return 0; |
| 400 | 400 | ||
| 401 | fail: | 401 | fail: |
| 402 | free_irq(dev->irq, ps2port); | 402 | free_irq(dev->irq, ps2port); |
| 403 | 403 | ||
| 404 | fail_miserably: | 404 | fail_miserably: |
| 405 | list_del(&ps2port->node); | ||
| 406 | iounmap(ps2port->addr); | 405 | iounmap(ps2port->addr); |
| 407 | release_mem_region(dev->hpa, GSC_STATUS + 4); | 406 | release_mem_region(dev->hpa.start, GSC_STATUS + 4); |
| 408 | 407 | ||
| 409 | fail_nomem: | 408 | fail_nomem: |
| 410 | kfree(ps2port); | 409 | kfree(ps2port); |
| @@ -444,7 +443,7 @@ static struct parisc_device_id gscps2_device_tbl[] = { | |||
| 444 | }; | 443 | }; |
| 445 | 444 | ||
| 446 | static struct parisc_driver parisc_ps2_driver = { | 445 | static struct parisc_driver parisc_ps2_driver = { |
| 447 | .name = "GSC PS2", | 446 | .name = "gsc_ps2", |
| 448 | .id_table = gscps2_device_tbl, | 447 | .id_table = gscps2_device_tbl, |
| 449 | .probe = gscps2_probe, | 448 | .probe = gscps2_probe, |
| 450 | .remove = gscps2_remove, | 449 | .remove = gscps2_remove, |
