aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/IR/rc-map.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/IR/rc-map.c')
-rw-r--r--drivers/media/IR/rc-map.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/drivers/media/IR/rc-map.c b/drivers/media/IR/rc-map.c
index 02c72f086fe0..2f6201ce1898 100644
--- a/drivers/media/IR/rc-map.c
+++ b/drivers/media/IR/rc-map.c
@@ -26,12 +26,14 @@ static struct rc_keymap *seek_rc_map(const char *name)
26 26
27 spin_lock(&rc_map_lock); 27 spin_lock(&rc_map_lock);
28 list_for_each_entry(map, &rc_map_list, list) { 28 list_for_each_entry(map, &rc_map_list, list) {
29 if (!strcmp(name, map->map.name)) 29 if (!strcmp(name, map->map.name)) {
30 break; 30 spin_unlock(&rc_map_lock);
31 return map;
32 }
31 } 33 }
32 spin_unlock(&rc_map_lock); 34 spin_unlock(&rc_map_lock);
33 35
34 return map; 36 return NULL;
35} 37}
36 38
37struct ir_scancode_table *get_rc_map(const char *name) 39struct ir_scancode_table *get_rc_map(const char *name)
@@ -43,15 +45,22 @@ struct ir_scancode_table *get_rc_map(const char *name)
43 map = seek_rc_map(name); 45 map = seek_rc_map(name);
44#ifdef MODULE 46#ifdef MODULE
45 if (!map) { 47 if (!map) {
46 rc = request_module("name"); 48 rc = request_module(name);
47 if (rc < 0) 49 if (rc < 0) {
50 printk(KERN_ERR "Couldn't load IR keymap %s\n", name);
48 return NULL; 51 return NULL;
52 }
53 msleep(20); /* Give some time for IR to register */
49 54
50 map = seek_rc_map(name); 55 map = seek_rc_map(name);
51 } 56 }
52#endif 57#endif
53 if (!map) 58 if (!map) {
59 printk(KERN_ERR "IR keymap %s not found\n", name);
54 return NULL; 60 return NULL;
61 }
62
63 printk(KERN_INFO "Registered IR keymap %s\n", map->map.name);
55 64
56 return &map->map; 65 return &map->map;
57} 66}
@@ -73,3 +82,9 @@ void ir_unregister_map(struct rc_keymap *map)
73 spin_unlock(&rc_map_lock); 82 spin_unlock(&rc_map_lock);
74} 83}
75EXPORT_SYMBOL_GPL(ir_unregister_map); 84EXPORT_SYMBOL_GPL(ir_unregister_map);
85
86void rc_map_init(void)
87{
88 spin_lock_init(&rc_map_lock);
89
90}