diff options
Diffstat (limited to 'drivers/input/gameport')
-rw-r--r-- | drivers/input/gameport/emu10k1-gp.c | 2 | ||||
-rw-r--r-- | drivers/input/gameport/fm801-gp.c | 2 | ||||
-rw-r--r-- | drivers/input/gameport/gameport.c | 98 | ||||
-rw-r--r-- | drivers/input/gameport/ns558.c | 2 |
4 files changed, 43 insertions, 61 deletions
diff --git a/drivers/input/gameport/emu10k1-gp.c b/drivers/input/gameport/emu10k1-gp.c index b04930f7ea7d..7392992da424 100644 --- a/drivers/input/gameport/emu10k1-gp.c +++ b/drivers/input/gameport/emu10k1-gp.c | |||
@@ -46,7 +46,7 @@ struct emu { | |||
46 | int size; | 46 | int size; |
47 | }; | 47 | }; |
48 | 48 | ||
49 | static struct pci_device_id emu_tbl[] = { | 49 | static const struct pci_device_id emu_tbl[] = { |
50 | 50 | ||
51 | { 0x1102, 0x7002, PCI_ANY_ID, PCI_ANY_ID }, /* SB Live gameport */ | 51 | { 0x1102, 0x7002, PCI_ANY_ID, PCI_ANY_ID }, /* SB Live gameport */ |
52 | { 0x1102, 0x7003, PCI_ANY_ID, PCI_ANY_ID }, /* Audigy gameport */ | 52 | { 0x1102, 0x7003, PCI_ANY_ID, PCI_ANY_ID }, /* Audigy gameport */ |
diff --git a/drivers/input/gameport/fm801-gp.c b/drivers/input/gameport/fm801-gp.c index 8a1810f88b9e..14d3f3e208a2 100644 --- a/drivers/input/gameport/fm801-gp.c +++ b/drivers/input/gameport/fm801-gp.c | |||
@@ -140,7 +140,7 @@ static void __devexit fm801_gp_remove(struct pci_dev *pci) | |||
140 | } | 140 | } |
141 | } | 141 | } |
142 | 142 | ||
143 | static struct pci_device_id fm801_gp_id_table[] = { | 143 | static const struct pci_device_id fm801_gp_id_table[] = { |
144 | { PCI_VENDOR_ID_FORTEMEDIA, PCI_DEVICE_ID_FM801_GP, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, | 144 | { PCI_VENDOR_ID_FORTEMEDIA, PCI_DEVICE_ID_FM801_GP, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, |
145 | { 0 } | 145 | { 0 } |
146 | }; | 146 | }; |
diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c index ac11be08585e..7e18bcf05a66 100644 --- a/drivers/input/gameport/gameport.c +++ b/drivers/input/gameport/gameport.c | |||
@@ -11,6 +11,8 @@ | |||
11 | * the Free Software Foundation. | 11 | * the Free Software Foundation. |
12 | */ | 12 | */ |
13 | 13 | ||
14 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | ||
15 | |||
14 | #include <linux/stddef.h> | 16 | #include <linux/stddef.h> |
15 | #include <linux/module.h> | 17 | #include <linux/module.h> |
16 | #include <linux/ioport.h> | 18 | #include <linux/ioport.h> |
@@ -190,9 +192,8 @@ static int gameport_bind_driver(struct gameport *gameport, struct gameport_drive | |||
190 | 192 | ||
191 | error = device_bind_driver(&gameport->dev); | 193 | error = device_bind_driver(&gameport->dev); |
192 | if (error) { | 194 | if (error) { |
193 | printk(KERN_WARNING | 195 | dev_warn(&gameport->dev, |
194 | "gameport: device_bind_driver() failed " | 196 | "device_bind_driver() failed for %s (%s) and %s, error: %d\n", |
195 | "for %s (%s) and %s, error: %d\n", | ||
196 | gameport->phys, gameport->name, | 197 | gameport->phys, gameport->name, |
197 | drv->description, error); | 198 | drv->description, error); |
198 | drv->disconnect(gameport); | 199 | drv->disconnect(gameport); |
@@ -209,9 +210,9 @@ static void gameport_find_driver(struct gameport *gameport) | |||
209 | 210 | ||
210 | error = device_attach(&gameport->dev); | 211 | error = device_attach(&gameport->dev); |
211 | if (error < 0) | 212 | if (error < 0) |
212 | printk(KERN_WARNING | 213 | dev_warn(&gameport->dev, |
213 | "gameport: device_attach() failed for %s (%s), error: %d\n", | 214 | "device_attach() failed for %s (%s), error: %d\n", |
214 | gameport->phys, gameport->name, error); | 215 | gameport->phys, gameport->name, error); |
215 | } | 216 | } |
216 | 217 | ||
217 | 218 | ||
@@ -262,17 +263,14 @@ static int gameport_queue_event(void *object, struct module *owner, | |||
262 | 263 | ||
263 | event = kmalloc(sizeof(struct gameport_event), GFP_ATOMIC); | 264 | event = kmalloc(sizeof(struct gameport_event), GFP_ATOMIC); |
264 | if (!event) { | 265 | if (!event) { |
265 | printk(KERN_ERR | 266 | pr_err("Not enough memory to queue event %d\n", event_type); |
266 | "gameport: Not enough memory to queue event %d\n", | ||
267 | event_type); | ||
268 | retval = -ENOMEM; | 267 | retval = -ENOMEM; |
269 | goto out; | 268 | goto out; |
270 | } | 269 | } |
271 | 270 | ||
272 | if (!try_module_get(owner)) { | 271 | if (!try_module_get(owner)) { |
273 | printk(KERN_WARNING | 272 | pr_warning("Can't get module reference, dropping event %d\n", |
274 | "gameport: Can't get module reference, dropping event %d\n", | 273 | event_type); |
275 | event_type); | ||
276 | kfree(event); | 274 | kfree(event); |
277 | retval = -EINVAL; | 275 | retval = -EINVAL; |
278 | goto out; | 276 | goto out; |
@@ -298,14 +296,12 @@ static void gameport_free_event(struct gameport_event *event) | |||
298 | 296 | ||
299 | static void gameport_remove_duplicate_events(struct gameport_event *event) | 297 | static void gameport_remove_duplicate_events(struct gameport_event *event) |
300 | { | 298 | { |
301 | struct list_head *node, *next; | 299 | struct gameport_event *e, *next; |
302 | struct gameport_event *e; | ||
303 | unsigned long flags; | 300 | unsigned long flags; |
304 | 301 | ||
305 | spin_lock_irqsave(&gameport_event_lock, flags); | 302 | spin_lock_irqsave(&gameport_event_lock, flags); |
306 | 303 | ||
307 | list_for_each_safe(node, next, &gameport_event_list) { | 304 | list_for_each_entry_safe(e, next, &gameport_event_list, node) { |
308 | e = list_entry(node, struct gameport_event, node); | ||
309 | if (event->object == e->object) { | 305 | if (event->object == e->object) { |
310 | /* | 306 | /* |
311 | * If this event is of different type we should not | 307 | * If this event is of different type we should not |
@@ -315,7 +311,7 @@ static void gameport_remove_duplicate_events(struct gameport_event *event) | |||
315 | if (event->type != e->type) | 311 | if (event->type != e->type) |
316 | break; | 312 | break; |
317 | 313 | ||
318 | list_del_init(node); | 314 | list_del_init(&e->node); |
319 | gameport_free_event(e); | 315 | gameport_free_event(e); |
320 | } | 316 | } |
321 | } | 317 | } |
@@ -325,23 +321,18 @@ static void gameport_remove_duplicate_events(struct gameport_event *event) | |||
325 | 321 | ||
326 | static struct gameport_event *gameport_get_event(void) | 322 | static struct gameport_event *gameport_get_event(void) |
327 | { | 323 | { |
328 | struct gameport_event *event; | 324 | struct gameport_event *event = NULL; |
329 | struct list_head *node; | ||
330 | unsigned long flags; | 325 | unsigned long flags; |
331 | 326 | ||
332 | spin_lock_irqsave(&gameport_event_lock, flags); | 327 | spin_lock_irqsave(&gameport_event_lock, flags); |
333 | 328 | ||
334 | if (list_empty(&gameport_event_list)) { | 329 | if (!list_empty(&gameport_event_list)) { |
335 | spin_unlock_irqrestore(&gameport_event_lock, flags); | 330 | event = list_first_entry(&gameport_event_list, |
336 | return NULL; | 331 | struct gameport_event, node); |
332 | list_del_init(&event->node); | ||
337 | } | 333 | } |
338 | 334 | ||
339 | node = gameport_event_list.next; | ||
340 | event = list_entry(node, struct gameport_event, node); | ||
341 | list_del_init(node); | ||
342 | |||
343 | spin_unlock_irqrestore(&gameport_event_lock, flags); | 335 | spin_unlock_irqrestore(&gameport_event_lock, flags); |
344 | |||
345 | return event; | 336 | return event; |
346 | } | 337 | } |
347 | 338 | ||
@@ -360,16 +351,14 @@ static void gameport_handle_event(void) | |||
360 | if ((event = gameport_get_event())) { | 351 | if ((event = gameport_get_event())) { |
361 | 352 | ||
362 | switch (event->type) { | 353 | switch (event->type) { |
363 | case GAMEPORT_REGISTER_PORT: | ||
364 | gameport_add_port(event->object); | ||
365 | break; | ||
366 | 354 | ||
367 | case GAMEPORT_ATTACH_DRIVER: | 355 | case GAMEPORT_REGISTER_PORT: |
368 | gameport_attach_driver(event->object); | 356 | gameport_add_port(event->object); |
369 | break; | 357 | break; |
370 | 358 | ||
371 | default: | 359 | case GAMEPORT_ATTACH_DRIVER: |
372 | break; | 360 | gameport_attach_driver(event->object); |
361 | break; | ||
373 | } | 362 | } |
374 | 363 | ||
375 | gameport_remove_duplicate_events(event); | 364 | gameport_remove_duplicate_events(event); |
@@ -385,16 +374,14 @@ static void gameport_handle_event(void) | |||
385 | */ | 374 | */ |
386 | static void gameport_remove_pending_events(void *object) | 375 | static void gameport_remove_pending_events(void *object) |
387 | { | 376 | { |
388 | struct list_head *node, *next; | 377 | struct gameport_event *event, *next; |
389 | struct gameport_event *event; | ||
390 | unsigned long flags; | 378 | unsigned long flags; |
391 | 379 | ||
392 | spin_lock_irqsave(&gameport_event_lock, flags); | 380 | spin_lock_irqsave(&gameport_event_lock, flags); |
393 | 381 | ||
394 | list_for_each_safe(node, next, &gameport_event_list) { | 382 | list_for_each_entry_safe(event, next, &gameport_event_list, node) { |
395 | event = list_entry(node, struct gameport_event, node); | ||
396 | if (event->object == object) { | 383 | if (event->object == object) { |
397 | list_del_init(node); | 384 | list_del_init(&event->node); |
398 | gameport_free_event(event); | 385 | gameport_free_event(event); |
399 | } | 386 | } |
400 | } | 387 | } |
@@ -441,7 +428,6 @@ static int gameport_thread(void *nothing) | |||
441 | kthread_should_stop() || !list_empty(&gameport_event_list)); | 428 | kthread_should_stop() || !list_empty(&gameport_event_list)); |
442 | } while (!kthread_should_stop()); | 429 | } while (!kthread_should_stop()); |
443 | 430 | ||
444 | printk(KERN_DEBUG "gameport: kgameportd exiting\n"); | ||
445 | return 0; | 431 | return 0; |
446 | } | 432 | } |
447 | 433 | ||
@@ -453,6 +439,7 @@ static int gameport_thread(void *nothing) | |||
453 | static ssize_t gameport_show_description(struct device *dev, struct device_attribute *attr, char *buf) | 439 | static ssize_t gameport_show_description(struct device *dev, struct device_attribute *attr, char *buf) |
454 | { | 440 | { |
455 | struct gameport *gameport = to_gameport_port(dev); | 441 | struct gameport *gameport = to_gameport_port(dev); |
442 | |||
456 | return sprintf(buf, "%s\n", gameport->name); | 443 | return sprintf(buf, "%s\n", gameport->name); |
457 | } | 444 | } |
458 | 445 | ||
@@ -521,7 +508,8 @@ static void gameport_init_port(struct gameport *gameport) | |||
521 | 508 | ||
522 | mutex_init(&gameport->drv_mutex); | 509 | mutex_init(&gameport->drv_mutex); |
523 | device_initialize(&gameport->dev); | 510 | device_initialize(&gameport->dev); |
524 | dev_set_name(&gameport->dev, "gameport%lu", (unsigned long)atomic_inc_return(&gameport_no) - 1); | 511 | dev_set_name(&gameport->dev, "gameport%lu", |
512 | (unsigned long)atomic_inc_return(&gameport_no) - 1); | ||
525 | gameport->dev.bus = &gameport_bus; | 513 | gameport->dev.bus = &gameport_bus; |
526 | gameport->dev.release = gameport_release_port; | 514 | gameport->dev.release = gameport_release_port; |
527 | if (gameport->parent) | 515 | if (gameport->parent) |
@@ -550,19 +538,17 @@ static void gameport_add_port(struct gameport *gameport) | |||
550 | list_add_tail(&gameport->node, &gameport_list); | 538 | list_add_tail(&gameport->node, &gameport_list); |
551 | 539 | ||
552 | if (gameport->io) | 540 | if (gameport->io) |
553 | printk(KERN_INFO "gameport: %s is %s, io %#x, speed %dkHz\n", | 541 | dev_info(&gameport->dev, "%s is %s, io %#x, speed %dkHz\n", |
554 | gameport->name, gameport->phys, gameport->io, gameport->speed); | 542 | gameport->name, gameport->phys, gameport->io, gameport->speed); |
555 | else | 543 | else |
556 | printk(KERN_INFO "gameport: %s is %s, speed %dkHz\n", | 544 | dev_info(&gameport->dev, "%s is %s, speed %dkHz\n", |
557 | gameport->name, gameport->phys, gameport->speed); | 545 | gameport->name, gameport->phys, gameport->speed); |
558 | 546 | ||
559 | error = device_add(&gameport->dev); | 547 | error = device_add(&gameport->dev); |
560 | if (error) | 548 | if (error) |
561 | printk(KERN_ERR | 549 | dev_err(&gameport->dev, |
562 | "gameport: device_add() failed for %s (%s), error: %d\n", | 550 | "device_add() failed for %s (%s), error: %d\n", |
563 | gameport->phys, gameport->name, error); | 551 | gameport->phys, gameport->name, error); |
564 | else | ||
565 | gameport->registered = 1; | ||
566 | } | 552 | } |
567 | 553 | ||
568 | /* | 554 | /* |
@@ -584,10 +570,8 @@ static void gameport_destroy_port(struct gameport *gameport) | |||
584 | gameport->parent = NULL; | 570 | gameport->parent = NULL; |
585 | } | 571 | } |
586 | 572 | ||
587 | if (gameport->registered) { | 573 | if (device_is_registered(&gameport->dev)) |
588 | device_del(&gameport->dev); | 574 | device_del(&gameport->dev); |
589 | gameport->registered = 0; | ||
590 | } | ||
591 | 575 | ||
592 | list_del_init(&gameport->node); | 576 | list_del_init(&gameport->node); |
593 | 577 | ||
@@ -705,8 +689,7 @@ static void gameport_attach_driver(struct gameport_driver *drv) | |||
705 | 689 | ||
706 | error = driver_attach(&drv->driver); | 690 | error = driver_attach(&drv->driver); |
707 | if (error) | 691 | if (error) |
708 | printk(KERN_ERR | 692 | pr_err("driver_attach() failed for %s, error: %d\n", |
709 | "gameport: driver_attach() failed for %s, error: %d\n", | ||
710 | drv->driver.name, error); | 693 | drv->driver.name, error); |
711 | } | 694 | } |
712 | 695 | ||
@@ -727,8 +710,7 @@ int __gameport_register_driver(struct gameport_driver *drv, struct module *owner | |||
727 | 710 | ||
728 | error = driver_register(&drv->driver); | 711 | error = driver_register(&drv->driver); |
729 | if (error) { | 712 | if (error) { |
730 | printk(KERN_ERR | 713 | pr_err("driver_register() failed for %s, error: %d\n", |
731 | "gameport: driver_register() failed for %s, error: %d\n", | ||
732 | drv->driver.name, error); | 714 | drv->driver.name, error); |
733 | return error; | 715 | return error; |
734 | } | 716 | } |
@@ -828,7 +810,7 @@ static int __init gameport_init(void) | |||
828 | 810 | ||
829 | error = bus_register(&gameport_bus); | 811 | error = bus_register(&gameport_bus); |
830 | if (error) { | 812 | if (error) { |
831 | printk(KERN_ERR "gameport: failed to register gameport bus, error: %d\n", error); | 813 | pr_err("failed to register gameport bus, error: %d\n", error); |
832 | return error; | 814 | return error; |
833 | } | 815 | } |
834 | 816 | ||
@@ -836,7 +818,7 @@ static int __init gameport_init(void) | |||
836 | if (IS_ERR(gameport_task)) { | 818 | if (IS_ERR(gameport_task)) { |
837 | bus_unregister(&gameport_bus); | 819 | bus_unregister(&gameport_bus); |
838 | error = PTR_ERR(gameport_task); | 820 | error = PTR_ERR(gameport_task); |
839 | printk(KERN_ERR "gameport: Failed to start kgameportd, error: %d\n", error); | 821 | pr_err("Failed to start kgameportd, error: %d\n", error); |
840 | return error; | 822 | return error; |
841 | } | 823 | } |
842 | 824 | ||
diff --git a/drivers/input/gameport/ns558.c b/drivers/input/gameport/ns558.c index db556b71ddda..7c217848613e 100644 --- a/drivers/input/gameport/ns558.c +++ b/drivers/input/gameport/ns558.c | |||
@@ -166,7 +166,7 @@ static int ns558_isa_probe(int io) | |||
166 | 166 | ||
167 | #ifdef CONFIG_PNP | 167 | #ifdef CONFIG_PNP |
168 | 168 | ||
169 | static struct pnp_device_id pnp_devids[] = { | 169 | static const struct pnp_device_id pnp_devids[] = { |
170 | { .id = "@P@0001", .driver_data = 0 }, /* ALS 100 */ | 170 | { .id = "@P@0001", .driver_data = 0 }, /* ALS 100 */ |
171 | { .id = "@P@0020", .driver_data = 0 }, /* ALS 200 */ | 171 | { .id = "@P@0020", .driver_data = 0 }, /* ALS 200 */ |
172 | { .id = "@P@1001", .driver_data = 0 }, /* ALS 100+ */ | 172 | { .id = "@P@1001", .driver_data = 0 }, /* ALS 100+ */ |