diff options
-rw-r--r-- | drivers/media/IR/Makefile | 2 | ||||
-rw-r--r-- | drivers/media/IR/ir-sysfs.c | 4 | ||||
-rw-r--r-- | drivers/media/IR/rc-map.c | 27 | ||||
-rw-r--r-- | drivers/media/dvb/dm1105/dm1105.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb/ttpci/budget-ci.c | 10 | ||||
-rw-r--r-- | drivers/media/video/bt8xx/bttv-input.c | 28 | ||||
-rw-r--r-- | drivers/media/video/cx18/cx18-i2c.c | 2 | ||||
-rw-r--r-- | drivers/media/video/cx23885/cx23885-input.c | 6 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-input.c | 42 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 34 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx-input.c | 6 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx.h | 2 | ||||
-rw-r--r-- | drivers/media/video/ir-kbd-i2c.c | 22 | ||||
-rw-r--r-- | drivers/media/video/ivtv/ivtv-i2c.c | 6 | ||||
-rw-r--r-- | drivers/media/video/saa7134/saa7134-input.c | 81 | ||||
-rw-r--r-- | include/media/ir-core.h | 21 | ||||
-rw-r--r-- | include/media/ir-kbd-i2c.h | 4 | ||||
-rw-r--r-- | include/media/rc-map.h | 81 |
18 files changed, 247 insertions, 135 deletions
diff --git a/drivers/media/IR/Makefile b/drivers/media/IR/Makefile index 3a4f590d0bbb..3d8dd306df46 100644 --- a/drivers/media/IR/Makefile +++ b/drivers/media/IR/Makefile | |||
@@ -1,6 +1,8 @@ | |||
1 | ir-common-objs := ir-functions.o ir-keymaps.o | 1 | ir-common-objs := ir-functions.o ir-keymaps.o |
2 | ir-core-objs := ir-keytable.o ir-sysfs.o ir-raw-event.o rc-map.o | 2 | ir-core-objs := ir-keytable.o ir-sysfs.o ir-raw-event.o rc-map.o |
3 | 3 | ||
4 | obj-y += keymaps/ | ||
5 | |||
4 | obj-$(CONFIG_IR_CORE) += ir-core.o | 6 | obj-$(CONFIG_IR_CORE) += ir-core.o |
5 | obj-$(CONFIG_VIDEO_IR) += ir-common.o | 7 | obj-$(CONFIG_VIDEO_IR) += ir-common.o |
6 | obj-$(CONFIG_IR_NEC_DECODER) += ir-nec-decoder.o | 8 | obj-$(CONFIG_IR_NEC_DECODER) += ir-nec-decoder.o |
diff --git a/drivers/media/IR/ir-sysfs.c b/drivers/media/IR/ir-sysfs.c index 36dfe51aad92..58ecca2003a4 100644 --- a/drivers/media/IR/ir-sysfs.c +++ b/drivers/media/IR/ir-sysfs.c | |||
@@ -251,8 +251,10 @@ static int __init ir_core_init(void) | |||
251 | return rc; | 251 | return rc; |
252 | } | 252 | } |
253 | 253 | ||
254 | /* Initialize/load the decoders that will be used */ | 254 | /* Initialize/load the decoders/keymap code that will be used */ |
255 | ir_raw_init(); | 255 | ir_raw_init(); |
256 | rc_map_init(); | ||
257 | |||
256 | 258 | ||
257 | return 0; | 259 | return 0; |
258 | } | 260 | } |
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 | ||
37 | struct ir_scancode_table *get_rc_map(const char *name) | 39 | struct 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 | } |
75 | EXPORT_SYMBOL_GPL(ir_unregister_map); | 84 | EXPORT_SYMBOL_GPL(ir_unregister_map); |
85 | |||
86 | void rc_map_init(void) | ||
87 | { | ||
88 | spin_lock_init(&rc_map_lock); | ||
89 | |||
90 | } | ||
diff --git a/drivers/media/dvb/dm1105/dm1105.c b/drivers/media/dvb/dm1105/dm1105.c index 416c29bf78d9..9d389bdaca41 100644 --- a/drivers/media/dvb/dm1105/dm1105.c +++ b/drivers/media/dvb/dm1105/dm1105.c | |||
@@ -596,7 +596,7 @@ static irqreturn_t dm1105_irq(int irq, void *dev_id) | |||
596 | int __devinit dm1105_ir_init(struct dm1105_dev *dm1105) | 596 | int __devinit dm1105_ir_init(struct dm1105_dev *dm1105) |
597 | { | 597 | { |
598 | struct input_dev *input_dev; | 598 | struct input_dev *input_dev; |
599 | struct ir_scancode_table *ir_codes = &IR_KEYTABLE(dm1105_nec); | 599 | char *ir_codes = NULL; |
600 | u64 ir_type = IR_TYPE_OTHER; | 600 | u64 ir_type = IR_TYPE_OTHER; |
601 | int err = -ENOMEM; | 601 | int err = -ENOMEM; |
602 | 602 | ||
@@ -630,7 +630,7 @@ int __devinit dm1105_ir_init(struct dm1105_dev *dm1105) | |||
630 | 630 | ||
631 | INIT_WORK(&dm1105->ir.work, dm1105_emit_key); | 631 | INIT_WORK(&dm1105->ir.work, dm1105_emit_key); |
632 | 632 | ||
633 | err = __ir_input_register(input_dev, ir_codes, NULL, MODULE_NAME); | 633 | err = ir_input_register(input_dev, ir_codes, NULL, MODULE_NAME); |
634 | 634 | ||
635 | return err; | 635 | return err; |
636 | } | 636 | } |
diff --git a/drivers/media/dvb/ttpci/budget-ci.c b/drivers/media/dvb/ttpci/budget-ci.c index ab7479ad592f..be2074995a0d 100644 --- a/drivers/media/dvb/ttpci/budget-ci.c +++ b/drivers/media/dvb/ttpci/budget-ci.c | |||
@@ -192,7 +192,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci) | |||
192 | struct saa7146_dev *saa = budget_ci->budget.dev; | 192 | struct saa7146_dev *saa = budget_ci->budget.dev; |
193 | struct input_dev *input_dev = budget_ci->ir.dev; | 193 | struct input_dev *input_dev = budget_ci->ir.dev; |
194 | int error; | 194 | int error; |
195 | struct ir_scancode_table *ir_codes; | 195 | char *ir_codes = NULL; |
196 | 196 | ||
197 | 197 | ||
198 | budget_ci->ir.dev = input_dev = input_allocate_device(); | 198 | budget_ci->ir.dev = input_dev = input_allocate_device(); |
@@ -232,7 +232,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci) | |||
232 | case 0x1011: | 232 | case 0x1011: |
233 | case 0x1012: | 233 | case 0x1012: |
234 | /* The hauppauge keymap is a superset of these remotes */ | 234 | /* The hauppauge keymap is a superset of these remotes */ |
235 | ir_codes = &IR_KEYTABLE(hauppauge_new); | 235 | ir_codes = RC_MAP_HAUPPAUGE_NEW; |
236 | 236 | ||
237 | if (rc5_device < 0) | 237 | if (rc5_device < 0) |
238 | budget_ci->ir.rc5_device = 0x1f; | 238 | budget_ci->ir.rc5_device = 0x1f; |
@@ -241,11 +241,11 @@ static int msp430_ir_init(struct budget_ci *budget_ci) | |||
241 | case 0x1017: | 241 | case 0x1017: |
242 | case 0x101a: | 242 | case 0x101a: |
243 | /* for the Technotrend 1500 bundled remote */ | 243 | /* for the Technotrend 1500 bundled remote */ |
244 | ir_codes = &IR_KEYTABLE(tt_1500); | 244 | ir_codes = RC_MAP_TT_1500; |
245 | break; | 245 | break; |
246 | default: | 246 | default: |
247 | /* unknown remote */ | 247 | /* unknown remote */ |
248 | ir_codes = &IR_KEYTABLE(budget_ci_old); | 248 | ir_codes = RC_MAP_BUDGET_CI_OLD; |
249 | break; | 249 | break; |
250 | } | 250 | } |
251 | 251 | ||
@@ -256,7 +256,7 @@ static int msp430_ir_init(struct budget_ci *budget_ci) | |||
256 | budget_ci->ir.timer_keyup.function = msp430_ir_keyup; | 256 | budget_ci->ir.timer_keyup.function = msp430_ir_keyup; |
257 | budget_ci->ir.timer_keyup.data = (unsigned long) &budget_ci->ir; | 257 | budget_ci->ir.timer_keyup.data = (unsigned long) &budget_ci->ir; |
258 | budget_ci->ir.last_raw = 0xffff; /* An impossible value */ | 258 | budget_ci->ir.last_raw = 0xffff; /* An impossible value */ |
259 | error = __ir_input_register(input_dev, ir_codes, NULL, MODULE_NAME); | 259 | error = ir_input_register(input_dev, ir_codes, NULL, MODULE_NAME); |
260 | if (error) { | 260 | if (error) { |
261 | printk(KERN_ERR "budget_ci: could not init driver for IR device (code %d)\n", error); | 261 | printk(KERN_ERR "budget_ci: could not init driver for IR device (code %d)\n", error); |
262 | return error; | 262 | return error; |
diff --git a/drivers/media/video/bt8xx/bttv-input.c b/drivers/media/video/bt8xx/bttv-input.c index 71a0047ca7b2..f68717a4bdec 100644 --- a/drivers/media/video/bt8xx/bttv-input.c +++ b/drivers/media/video/bt8xx/bttv-input.c | |||
@@ -248,7 +248,7 @@ static void bttv_ir_stop(struct bttv *btv) | |||
248 | int bttv_input_init(struct bttv *btv) | 248 | int bttv_input_init(struct bttv *btv) |
249 | { | 249 | { |
250 | struct card_ir *ir; | 250 | struct card_ir *ir; |
251 | struct ir_scancode_table *ir_codes = NULL; | 251 | char *ir_codes = NULL; |
252 | struct input_dev *input_dev; | 252 | struct input_dev *input_dev; |
253 | u64 ir_type = IR_TYPE_OTHER; | 253 | u64 ir_type = IR_TYPE_OTHER; |
254 | int err = -ENOMEM; | 254 | int err = -ENOMEM; |
@@ -266,7 +266,7 @@ int bttv_input_init(struct bttv *btv) | |||
266 | case BTTV_BOARD_AVERMEDIA: | 266 | case BTTV_BOARD_AVERMEDIA: |
267 | case BTTV_BOARD_AVPHONE98: | 267 | case BTTV_BOARD_AVPHONE98: |
268 | case BTTV_BOARD_AVERMEDIA98: | 268 | case BTTV_BOARD_AVERMEDIA98: |
269 | ir_codes = &IR_KEYTABLE(avermedia); | 269 | ir_codes = RC_MAP_AVERMEDIA; |
270 | ir->mask_keycode = 0xf88000; | 270 | ir->mask_keycode = 0xf88000; |
271 | ir->mask_keydown = 0x010000; | 271 | ir->mask_keydown = 0x010000; |
272 | ir->polling = 50; // ms | 272 | ir->polling = 50; // ms |
@@ -274,14 +274,14 @@ int bttv_input_init(struct bttv *btv) | |||
274 | 274 | ||
275 | case BTTV_BOARD_AVDVBT_761: | 275 | case BTTV_BOARD_AVDVBT_761: |
276 | case BTTV_BOARD_AVDVBT_771: | 276 | case BTTV_BOARD_AVDVBT_771: |
277 | ir_codes = &IR_KEYTABLE(avermedia_dvbt); | 277 | ir_codes = RC_MAP_AVERMEDIA_DVBT; |
278 | ir->mask_keycode = 0x0f00c0; | 278 | ir->mask_keycode = 0x0f00c0; |
279 | ir->mask_keydown = 0x000020; | 279 | ir->mask_keydown = 0x000020; |
280 | ir->polling = 50; // ms | 280 | ir->polling = 50; // ms |
281 | break; | 281 | break; |
282 | 282 | ||
283 | case BTTV_BOARD_PXELVWPLTVPAK: | 283 | case BTTV_BOARD_PXELVWPLTVPAK: |
284 | ir_codes = &IR_KEYTABLE(pixelview); | 284 | ir_codes = RC_MAP_PIXELVIEW; |
285 | ir->mask_keycode = 0x003e00; | 285 | ir->mask_keycode = 0x003e00; |
286 | ir->mask_keyup = 0x010000; | 286 | ir->mask_keyup = 0x010000; |
287 | ir->polling = 50; // ms | 287 | ir->polling = 50; // ms |
@@ -289,24 +289,24 @@ int bttv_input_init(struct bttv *btv) | |||
289 | case BTTV_BOARD_PV_M4900: | 289 | case BTTV_BOARD_PV_M4900: |
290 | case BTTV_BOARD_PV_BT878P_9B: | 290 | case BTTV_BOARD_PV_BT878P_9B: |
291 | case BTTV_BOARD_PV_BT878P_PLUS: | 291 | case BTTV_BOARD_PV_BT878P_PLUS: |
292 | ir_codes = &IR_KEYTABLE(pixelview); | 292 | ir_codes = RC_MAP_PIXELVIEW; |
293 | ir->mask_keycode = 0x001f00; | 293 | ir->mask_keycode = 0x001f00; |
294 | ir->mask_keyup = 0x008000; | 294 | ir->mask_keyup = 0x008000; |
295 | ir->polling = 50; // ms | 295 | ir->polling = 50; // ms |
296 | break; | 296 | break; |
297 | 297 | ||
298 | case BTTV_BOARD_WINFAST2000: | 298 | case BTTV_BOARD_WINFAST2000: |
299 | ir_codes = &IR_KEYTABLE(winfast); | 299 | ir_codes = RC_MAP_WINFAST; |
300 | ir->mask_keycode = 0x1f8; | 300 | ir->mask_keycode = 0x1f8; |
301 | break; | 301 | break; |
302 | case BTTV_BOARD_MAGICTVIEW061: | 302 | case BTTV_BOARD_MAGICTVIEW061: |
303 | case BTTV_BOARD_MAGICTVIEW063: | 303 | case BTTV_BOARD_MAGICTVIEW063: |
304 | ir_codes = &IR_KEYTABLE(winfast); | 304 | ir_codes = RC_MAP_WINFAST; |
305 | ir->mask_keycode = 0x0008e000; | 305 | ir->mask_keycode = 0x0008e000; |
306 | ir->mask_keydown = 0x00200000; | 306 | ir->mask_keydown = 0x00200000; |
307 | break; | 307 | break; |
308 | case BTTV_BOARD_APAC_VIEWCOMP: | 308 | case BTTV_BOARD_APAC_VIEWCOMP: |
309 | ir_codes = &IR_KEYTABLE(apac_viewcomp); | 309 | ir_codes = RC_MAP_APAC_VIEWCOMP; |
310 | ir->mask_keycode = 0x001f00; | 310 | ir->mask_keycode = 0x001f00; |
311 | ir->mask_keyup = 0x008000; | 311 | ir->mask_keyup = 0x008000; |
312 | ir->polling = 50; // ms | 312 | ir->polling = 50; // ms |
@@ -314,30 +314,30 @@ int bttv_input_init(struct bttv *btv) | |||
314 | case BTTV_BOARD_ASKEY_CPH03X: | 314 | case BTTV_BOARD_ASKEY_CPH03X: |
315 | case BTTV_BOARD_CONCEPTRONIC_CTVFMI2: | 315 | case BTTV_BOARD_CONCEPTRONIC_CTVFMI2: |
316 | case BTTV_BOARD_CONTVFMI: | 316 | case BTTV_BOARD_CONTVFMI: |
317 | ir_codes = &IR_KEYTABLE(pixelview); | 317 | ir_codes = RC_MAP_PIXELVIEW; |
318 | ir->mask_keycode = 0x001F00; | 318 | ir->mask_keycode = 0x001F00; |
319 | ir->mask_keyup = 0x006000; | 319 | ir->mask_keyup = 0x006000; |
320 | ir->polling = 50; // ms | 320 | ir->polling = 50; // ms |
321 | break; | 321 | break; |
322 | case BTTV_BOARD_NEBULA_DIGITV: | 322 | case BTTV_BOARD_NEBULA_DIGITV: |
323 | ir_codes = &IR_KEYTABLE(nebula); | 323 | ir_codes = RC_MAP_NEBULA; |
324 | btv->custom_irq = bttv_rc5_irq; | 324 | btv->custom_irq = bttv_rc5_irq; |
325 | ir->rc5_gpio = 1; | 325 | ir->rc5_gpio = 1; |
326 | break; | 326 | break; |
327 | case BTTV_BOARD_MACHTV_MAGICTV: | 327 | case BTTV_BOARD_MACHTV_MAGICTV: |
328 | ir_codes = &IR_KEYTABLE(apac_viewcomp); | 328 | ir_codes = RC_MAP_APAC_VIEWCOMP; |
329 | ir->mask_keycode = 0x001F00; | 329 | ir->mask_keycode = 0x001F00; |
330 | ir->mask_keyup = 0x004000; | 330 | ir->mask_keyup = 0x004000; |
331 | ir->polling = 50; /* ms */ | 331 | ir->polling = 50; /* ms */ |
332 | break; | 332 | break; |
333 | case BTTV_BOARD_KOZUMI_KTV_01C: | 333 | case BTTV_BOARD_KOZUMI_KTV_01C: |
334 | ir_codes = &IR_KEYTABLE(pctv_sedna); | 334 | ir_codes = RC_MAP_PCTV_SEDNA; |
335 | ir->mask_keycode = 0x001f00; | 335 | ir->mask_keycode = 0x001f00; |
336 | ir->mask_keyup = 0x006000; | 336 | ir->mask_keyup = 0x006000; |
337 | ir->polling = 50; /* ms */ | 337 | ir->polling = 50; /* ms */ |
338 | break; | 338 | break; |
339 | case BTTV_BOARD_ENLTV_FM_2: | 339 | case BTTV_BOARD_ENLTV_FM_2: |
340 | ir_codes = &IR_KEYTABLE(encore_enltv2); | 340 | ir_codes = RC_MAP_ENCORE_ENLTV2; |
341 | ir->mask_keycode = 0x00fd00; | 341 | ir->mask_keycode = 0x00fd00; |
342 | ir->mask_keyup = 0x000080; | 342 | ir->mask_keyup = 0x000080; |
343 | ir->polling = 1; /* ms */ | 343 | ir->polling = 1; /* ms */ |
@@ -392,7 +392,7 @@ int bttv_input_init(struct bttv *btv) | |||
392 | bttv_ir_start(btv, ir); | 392 | bttv_ir_start(btv, ir); |
393 | 393 | ||
394 | /* all done */ | 394 | /* all done */ |
395 | err = __ir_input_register(btv->remote->dev, ir_codes, NULL, MODULE_NAME); | 395 | err = ir_input_register(btv->remote->dev, ir_codes, NULL, MODULE_NAME); |
396 | if (err) | 396 | if (err) |
397 | goto err_out_stop; | 397 | goto err_out_stop; |
398 | 398 | ||
diff --git a/drivers/media/video/cx18/cx18-i2c.c b/drivers/media/video/cx18/cx18-i2c.c index 476c016e63a8..cfa1f289b0f5 100644 --- a/drivers/media/video/cx18/cx18-i2c.c +++ b/drivers/media/video/cx18/cx18-i2c.c | |||
@@ -109,7 +109,7 @@ static int cx18_i2c_new_ir(struct cx18 *cx, struct i2c_adapter *adap, u32 hw, | |||
109 | /* Our default information for ir-kbd-i2c.c to use */ | 109 | /* Our default information for ir-kbd-i2c.c to use */ |
110 | switch (hw) { | 110 | switch (hw) { |
111 | case CX18_HW_Z8F0811_IR_RX_HAUP: | 111 | case CX18_HW_Z8F0811_IR_RX_HAUP: |
112 | init_data->ir_codes = &IR_KEYTABLE(hauppauge_new); | 112 | init_data->ir_codes = RC_MAP_HAUPPAUGE_NEW; |
113 | init_data->internal_get_key_func = IR_KBD_GET_KEY_HAUP_XVR; | 113 | init_data->internal_get_key_func = IR_KBD_GET_KEY_HAUP_XVR; |
114 | init_data->type = IR_TYPE_RC5; | 114 | init_data->type = IR_TYPE_RC5; |
115 | init_data->name = cx->card_name; | 115 | init_data->name = cx->card_name; |
diff --git a/drivers/media/video/cx23885/cx23885-input.c b/drivers/media/video/cx23885/cx23885-input.c index cef36f6b93e3..8d306d8bb61c 100644 --- a/drivers/media/video/cx23885/cx23885-input.c +++ b/drivers/media/video/cx23885/cx23885-input.c | |||
@@ -340,7 +340,7 @@ int cx23885_input_init(struct cx23885_dev *dev) | |||
340 | { | 340 | { |
341 | struct card_ir *ir; | 341 | struct card_ir *ir; |
342 | struct input_dev *input_dev; | 342 | struct input_dev *input_dev; |
343 | struct ir_scancode_table *ir_codes = NULL; | 343 | char *ir_codes = NULL; |
344 | int ir_type, ir_addr, ir_start; | 344 | int ir_type, ir_addr, ir_start; |
345 | int ret; | 345 | int ret; |
346 | 346 | ||
@@ -355,7 +355,7 @@ int cx23885_input_init(struct cx23885_dev *dev) | |||
355 | case CX23885_BOARD_HAUPPAUGE_HVR1850: | 355 | case CX23885_BOARD_HAUPPAUGE_HVR1850: |
356 | case CX23885_BOARD_HAUPPAUGE_HVR1290: | 356 | case CX23885_BOARD_HAUPPAUGE_HVR1290: |
357 | /* Parameters for the grey Hauppauge remote for the HVR-1850 */ | 357 | /* Parameters for the grey Hauppauge remote for the HVR-1850 */ |
358 | ir_codes = &IR_KEYTABLE(hauppauge_new); | 358 | ir_codes = RC_MAP_HAUPPAUGE_NEW; |
359 | ir_type = IR_TYPE_RC5; | 359 | ir_type = IR_TYPE_RC5; |
360 | ir_addr = 0x1e; /* RC-5 system bits emitted by the remote */ | 360 | ir_addr = 0x1e; /* RC-5 system bits emitted by the remote */ |
361 | ir_start = RC5_START_BITS_NORMAL; /* A basic RC-5 remote */ | 361 | ir_start = RC5_START_BITS_NORMAL; /* A basic RC-5 remote */ |
@@ -400,7 +400,7 @@ int cx23885_input_init(struct cx23885_dev *dev) | |||
400 | dev->ir_input = ir; | 400 | dev->ir_input = ir; |
401 | cx23885_input_ir_start(dev); | 401 | cx23885_input_ir_start(dev); |
402 | 402 | ||
403 | ret = __ir_input_register(ir->dev, ir_codes, NULL, MODULE_NAME); | 403 | ret = ir_input_register(ir->dev, ir_codes, NULL, MODULE_NAME); |
404 | if (ret) | 404 | if (ret) |
405 | goto err_out_stop; | 405 | goto err_out_stop; |
406 | 406 | ||
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c index 30af956a9eaa..6efad1da65bf 100644 --- a/drivers/media/video/cx88/cx88-input.c +++ b/drivers/media/video/cx88/cx88-input.c | |||
@@ -245,7 +245,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
245 | { | 245 | { |
246 | struct cx88_IR *ir; | 246 | struct cx88_IR *ir; |
247 | struct input_dev *input_dev; | 247 | struct input_dev *input_dev; |
248 | struct ir_scancode_table *ir_codes = NULL; | 248 | char *ir_codes = NULL; |
249 | u64 ir_type = IR_TYPE_OTHER; | 249 | u64 ir_type = IR_TYPE_OTHER; |
250 | int err = -ENOMEM; | 250 | int err = -ENOMEM; |
251 | 251 | ||
@@ -261,14 +261,14 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
261 | case CX88_BOARD_DNTV_LIVE_DVB_T: | 261 | case CX88_BOARD_DNTV_LIVE_DVB_T: |
262 | case CX88_BOARD_KWORLD_DVB_T: | 262 | case CX88_BOARD_KWORLD_DVB_T: |
263 | case CX88_BOARD_KWORLD_DVB_T_CX22702: | 263 | case CX88_BOARD_KWORLD_DVB_T_CX22702: |
264 | ir_codes = &IR_KEYTABLE(dntv_live_dvb_t); | 264 | ir_codes = RC_MAP_DNTV_LIVE_DVB_T; |
265 | ir->gpio_addr = MO_GP1_IO; | 265 | ir->gpio_addr = MO_GP1_IO; |
266 | ir->mask_keycode = 0x1f; | 266 | ir->mask_keycode = 0x1f; |
267 | ir->mask_keyup = 0x60; | 267 | ir->mask_keyup = 0x60; |
268 | ir->polling = 50; /* ms */ | 268 | ir->polling = 50; /* ms */ |
269 | break; | 269 | break; |
270 | case CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1: | 270 | case CX88_BOARD_TERRATEC_CINERGY_1400_DVB_T1: |
271 | ir_codes = &IR_KEYTABLE(cinergy_1400); | 271 | ir_codes = RC_MAP_CINERGY_1400; |
272 | ir_type = IR_TYPE_PD; | 272 | ir_type = IR_TYPE_PD; |
273 | ir->sampling = 0xeb04; /* address */ | 273 | ir->sampling = 0xeb04; /* address */ |
274 | break; | 274 | break; |
@@ -283,14 +283,14 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
283 | case CX88_BOARD_PCHDTV_HD3000: | 283 | case CX88_BOARD_PCHDTV_HD3000: |
284 | case CX88_BOARD_PCHDTV_HD5500: | 284 | case CX88_BOARD_PCHDTV_HD5500: |
285 | case CX88_BOARD_HAUPPAUGE_IRONLY: | 285 | case CX88_BOARD_HAUPPAUGE_IRONLY: |
286 | ir_codes = &IR_KEYTABLE(hauppauge_new); | 286 | ir_codes = RC_MAP_HAUPPAUGE_NEW; |
287 | ir_type = IR_TYPE_RC5; | 287 | ir_type = IR_TYPE_RC5; |
288 | ir->sampling = 1; | 288 | ir->sampling = 1; |
289 | break; | 289 | break; |
290 | case CX88_BOARD_WINFAST_DTV2000H: | 290 | case CX88_BOARD_WINFAST_DTV2000H: |
291 | case CX88_BOARD_WINFAST_DTV2000H_J: | 291 | case CX88_BOARD_WINFAST_DTV2000H_J: |
292 | case CX88_BOARD_WINFAST_DTV1800H: | 292 | case CX88_BOARD_WINFAST_DTV1800H: |
293 | ir_codes = &IR_KEYTABLE(winfast); | 293 | ir_codes = RC_MAP_WINFAST; |
294 | ir->gpio_addr = MO_GP0_IO; | 294 | ir->gpio_addr = MO_GP0_IO; |
295 | ir->mask_keycode = 0x8f8; | 295 | ir->mask_keycode = 0x8f8; |
296 | ir->mask_keyup = 0x100; | 296 | ir->mask_keyup = 0x100; |
@@ -299,14 +299,14 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
299 | case CX88_BOARD_WINFAST2000XP_EXPERT: | 299 | case CX88_BOARD_WINFAST2000XP_EXPERT: |
300 | case CX88_BOARD_WINFAST_DTV1000: | 300 | case CX88_BOARD_WINFAST_DTV1000: |
301 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL: | 301 | case CX88_BOARD_WINFAST_TV2000_XP_GLOBAL: |
302 | ir_codes = &IR_KEYTABLE(winfast); | 302 | ir_codes = RC_MAP_WINFAST; |
303 | ir->gpio_addr = MO_GP0_IO; | 303 | ir->gpio_addr = MO_GP0_IO; |
304 | ir->mask_keycode = 0x8f8; | 304 | ir->mask_keycode = 0x8f8; |
305 | ir->mask_keyup = 0x100; | 305 | ir->mask_keyup = 0x100; |
306 | ir->polling = 1; /* ms */ | 306 | ir->polling = 1; /* ms */ |
307 | break; | 307 | break; |
308 | case CX88_BOARD_IODATA_GVBCTV7E: | 308 | case CX88_BOARD_IODATA_GVBCTV7E: |
309 | ir_codes = &IR_KEYTABLE(iodata_bctv7e); | 309 | ir_codes = RC_MAP_IODATA_BCTV7E; |
310 | ir->gpio_addr = MO_GP0_IO; | 310 | ir->gpio_addr = MO_GP0_IO; |
311 | ir->mask_keycode = 0xfd; | 311 | ir->mask_keycode = 0xfd; |
312 | ir->mask_keydown = 0x02; | 312 | ir->mask_keydown = 0x02; |
@@ -314,7 +314,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
314 | break; | 314 | break; |
315 | case CX88_BOARD_PROLINK_PLAYTVPVR: | 315 | case CX88_BOARD_PROLINK_PLAYTVPVR: |
316 | case CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO: | 316 | case CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO: |
317 | ir_codes = &IR_KEYTABLE(pixelview); | 317 | ir_codes = RC_MAP_PIXELVIEW; |
318 | ir->gpio_addr = MO_GP1_IO; | 318 | ir->gpio_addr = MO_GP1_IO; |
319 | ir->mask_keycode = 0x1f; | 319 | ir->mask_keycode = 0x1f; |
320 | ir->mask_keyup = 0x80; | 320 | ir->mask_keyup = 0x80; |
@@ -322,28 +322,28 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
322 | break; | 322 | break; |
323 | case CX88_BOARD_PROLINK_PV_8000GT: | 323 | case CX88_BOARD_PROLINK_PV_8000GT: |
324 | case CX88_BOARD_PROLINK_PV_GLOBAL_XTREME: | 324 | case CX88_BOARD_PROLINK_PV_GLOBAL_XTREME: |
325 | ir_codes = &IR_KEYTABLE(pixelview_new); | 325 | ir_codes = RC_MAP_PIXELVIEW_NEW; |
326 | ir->gpio_addr = MO_GP1_IO; | 326 | ir->gpio_addr = MO_GP1_IO; |
327 | ir->mask_keycode = 0x3f; | 327 | ir->mask_keycode = 0x3f; |
328 | ir->mask_keyup = 0x80; | 328 | ir->mask_keyup = 0x80; |
329 | ir->polling = 1; /* ms */ | 329 | ir->polling = 1; /* ms */ |
330 | break; | 330 | break; |
331 | case CX88_BOARD_KWORLD_LTV883: | 331 | case CX88_BOARD_KWORLD_LTV883: |
332 | ir_codes = &IR_KEYTABLE(pixelview); | 332 | ir_codes = RC_MAP_PIXELVIEW; |
333 | ir->gpio_addr = MO_GP1_IO; | 333 | ir->gpio_addr = MO_GP1_IO; |
334 | ir->mask_keycode = 0x1f; | 334 | ir->mask_keycode = 0x1f; |
335 | ir->mask_keyup = 0x60; | 335 | ir->mask_keyup = 0x60; |
336 | ir->polling = 1; /* ms */ | 336 | ir->polling = 1; /* ms */ |
337 | break; | 337 | break; |
338 | case CX88_BOARD_ADSTECH_DVB_T_PCI: | 338 | case CX88_BOARD_ADSTECH_DVB_T_PCI: |
339 | ir_codes = &IR_KEYTABLE(adstech_dvb_t_pci); | 339 | ir_codes = RC_MAP_ADSTECH_DVB_T_PCI; |
340 | ir->gpio_addr = MO_GP1_IO; | 340 | ir->gpio_addr = MO_GP1_IO; |
341 | ir->mask_keycode = 0xbf; | 341 | ir->mask_keycode = 0xbf; |
342 | ir->mask_keyup = 0x40; | 342 | ir->mask_keyup = 0x40; |
343 | ir->polling = 50; /* ms */ | 343 | ir->polling = 50; /* ms */ |
344 | break; | 344 | break; |
345 | case CX88_BOARD_MSI_TVANYWHERE_MASTER: | 345 | case CX88_BOARD_MSI_TVANYWHERE_MASTER: |
346 | ir_codes = &IR_KEYTABLE(msi_tvanywhere); | 346 | ir_codes = RC_MAP_MSI_TVANYWHERE; |
347 | ir->gpio_addr = MO_GP1_IO; | 347 | ir->gpio_addr = MO_GP1_IO; |
348 | ir->mask_keycode = 0x1f; | 348 | ir->mask_keycode = 0x1f; |
349 | ir->mask_keyup = 0x40; | 349 | ir->mask_keyup = 0x40; |
@@ -351,7 +351,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
351 | break; | 351 | break; |
352 | case CX88_BOARD_AVERTV_303: | 352 | case CX88_BOARD_AVERTV_303: |
353 | case CX88_BOARD_AVERTV_STUDIO_303: | 353 | case CX88_BOARD_AVERTV_STUDIO_303: |
354 | ir_codes = &IR_KEYTABLE(avertv_303); | 354 | ir_codes = RC_MAP_AVERTV_303; |
355 | ir->gpio_addr = MO_GP2_IO; | 355 | ir->gpio_addr = MO_GP2_IO; |
356 | ir->mask_keycode = 0xfb; | 356 | ir->mask_keycode = 0xfb; |
357 | ir->mask_keydown = 0x02; | 357 | ir->mask_keydown = 0x02; |
@@ -364,41 +364,41 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
364 | case CX88_BOARD_PROF_7300: | 364 | case CX88_BOARD_PROF_7300: |
365 | case CX88_BOARD_PROF_7301: | 365 | case CX88_BOARD_PROF_7301: |
366 | case CX88_BOARD_PROF_6200: | 366 | case CX88_BOARD_PROF_6200: |
367 | ir_codes = &IR_KEYTABLE(tbs_nec); | 367 | ir_codes = RC_MAP_TBS_NEC; |
368 | ir_type = IR_TYPE_PD; | 368 | ir_type = IR_TYPE_PD; |
369 | ir->sampling = 0xff00; /* address */ | 369 | ir->sampling = 0xff00; /* address */ |
370 | break; | 370 | break; |
371 | case CX88_BOARD_TEVII_S460: | 371 | case CX88_BOARD_TEVII_S460: |
372 | case CX88_BOARD_TEVII_S420: | 372 | case CX88_BOARD_TEVII_S420: |
373 | ir_codes = &IR_KEYTABLE(tevii_nec); | 373 | ir_codes = RC_MAP_TEVII_NEC; |
374 | ir_type = IR_TYPE_PD; | 374 | ir_type = IR_TYPE_PD; |
375 | ir->sampling = 0xff00; /* address */ | 375 | ir->sampling = 0xff00; /* address */ |
376 | break; | 376 | break; |
377 | case CX88_BOARD_DNTV_LIVE_DVB_T_PRO: | 377 | case CX88_BOARD_DNTV_LIVE_DVB_T_PRO: |
378 | ir_codes = &IR_KEYTABLE(dntv_live_dvbt_pro); | 378 | ir_codes = RC_MAP_DNTV_LIVE_DVBT_PRO; |
379 | ir_type = IR_TYPE_PD; | 379 | ir_type = IR_TYPE_PD; |
380 | ir->sampling = 0xff00; /* address */ | 380 | ir->sampling = 0xff00; /* address */ |
381 | break; | 381 | break; |
382 | case CX88_BOARD_NORWOOD_MICRO: | 382 | case CX88_BOARD_NORWOOD_MICRO: |
383 | ir_codes = &IR_KEYTABLE(norwood); | 383 | ir_codes = RC_MAP_NORWOOD; |
384 | ir->gpio_addr = MO_GP1_IO; | 384 | ir->gpio_addr = MO_GP1_IO; |
385 | ir->mask_keycode = 0x0e; | 385 | ir->mask_keycode = 0x0e; |
386 | ir->mask_keyup = 0x80; | 386 | ir->mask_keyup = 0x80; |
387 | ir->polling = 50; /* ms */ | 387 | ir->polling = 50; /* ms */ |
388 | break; | 388 | break; |
389 | case CX88_BOARD_NPGTECH_REALTV_TOP10FM: | 389 | case CX88_BOARD_NPGTECH_REALTV_TOP10FM: |
390 | ir_codes = &IR_KEYTABLE(npgtech); | 390 | ir_codes = RC_MAP_NPGTECH; |
391 | ir->gpio_addr = MO_GP0_IO; | 391 | ir->gpio_addr = MO_GP0_IO; |
392 | ir->mask_keycode = 0xfa; | 392 | ir->mask_keycode = 0xfa; |
393 | ir->polling = 50; /* ms */ | 393 | ir->polling = 50; /* ms */ |
394 | break; | 394 | break; |
395 | case CX88_BOARD_PINNACLE_PCTV_HD_800i: | 395 | case CX88_BOARD_PINNACLE_PCTV_HD_800i: |
396 | ir_codes = &IR_KEYTABLE(pinnacle_pctv_hd); | 396 | ir_codes = RC_MAP_PINNACLE_PCTV_HD; |
397 | ir_type = IR_TYPE_RC5; | 397 | ir_type = IR_TYPE_RC5; |
398 | ir->sampling = 1; | 398 | ir->sampling = 1; |
399 | break; | 399 | break; |
400 | case CX88_BOARD_POWERCOLOR_REAL_ANGEL: | 400 | case CX88_BOARD_POWERCOLOR_REAL_ANGEL: |
401 | ir_codes = &IR_KEYTABLE(powercolor_real_angel); | 401 | ir_codes = RC_MAP_POWERCOLOR_REAL_ANGEL; |
402 | ir->gpio_addr = MO_GP2_IO; | 402 | ir->gpio_addr = MO_GP2_IO; |
403 | ir->mask_keycode = 0x7e; | 403 | ir->mask_keycode = 0x7e; |
404 | ir->polling = 100; /* ms */ | 404 | ir->polling = 100; /* ms */ |
@@ -439,7 +439,7 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
439 | ir->props.close = cx88_ir_close; | 439 | ir->props.close = cx88_ir_close; |
440 | 440 | ||
441 | /* all done */ | 441 | /* all done */ |
442 | err = __ir_input_register(ir->input, ir_codes, &ir->props, MODULE_NAME); | 442 | err = ir_input_register(ir->input, ir_codes, &ir->props, MODULE_NAME); |
443 | if (err) | 443 | if (err) |
444 | goto err_out_free; | 444 | goto err_out_free; |
445 | 445 | ||
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index 29201438b45f..3a4fd8514511 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c | |||
@@ -602,7 +602,7 @@ struct em28xx_board em28xx_boards[] = { | |||
602 | .name = "Gadmei UTV330+", | 602 | .name = "Gadmei UTV330+", |
603 | .tuner_type = TUNER_TNF_5335MF, | 603 | .tuner_type = TUNER_TNF_5335MF, |
604 | .tda9887_conf = TDA9887_PRESENT, | 604 | .tda9887_conf = TDA9887_PRESENT, |
605 | .ir_codes = &IR_KEYTABLE(gadmei_rm008z), | 605 | .ir_codes = RC_MAP_GADMEI_RM008Z, |
606 | .decoder = EM28XX_SAA711X, | 606 | .decoder = EM28XX_SAA711X, |
607 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, | 607 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, |
608 | .input = { { | 608 | .input = { { |
@@ -791,7 +791,7 @@ struct em28xx_board em28xx_boards[] = { | |||
791 | .mts_firmware = 1, | 791 | .mts_firmware = 1, |
792 | .has_dvb = 1, | 792 | .has_dvb = 1, |
793 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, | 793 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, |
794 | .ir_codes = &IR_KEYTABLE(hauppauge_new), | 794 | .ir_codes = RC_MAP_HAUPPAUGE_NEW, |
795 | .decoder = EM28XX_TVP5150, | 795 | .decoder = EM28XX_TVP5150, |
796 | .input = { { | 796 | .input = { { |
797 | .type = EM28XX_VMUX_TELEVISION, | 797 | .type = EM28XX_VMUX_TELEVISION, |
@@ -816,7 +816,7 @@ struct em28xx_board em28xx_boards[] = { | |||
816 | .tuner_type = TUNER_XC2028, | 816 | .tuner_type = TUNER_XC2028, |
817 | .tuner_gpio = default_tuner_gpio, | 817 | .tuner_gpio = default_tuner_gpio, |
818 | .mts_firmware = 1, | 818 | .mts_firmware = 1, |
819 | .ir_codes = &IR_KEYTABLE(hauppauge_new), | 819 | .ir_codes = RC_MAP_HAUPPAUGE_NEW, |
820 | .decoder = EM28XX_TVP5150, | 820 | .decoder = EM28XX_TVP5150, |
821 | .input = { { | 821 | .input = { { |
822 | .type = EM28XX_VMUX_TELEVISION, | 822 | .type = EM28XX_VMUX_TELEVISION, |
@@ -842,7 +842,7 @@ struct em28xx_board em28xx_boards[] = { | |||
842 | .mts_firmware = 1, | 842 | .mts_firmware = 1, |
843 | .has_dvb = 1, | 843 | .has_dvb = 1, |
844 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, | 844 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, |
845 | .ir_codes = &IR_KEYTABLE(hauppauge_new), | 845 | .ir_codes = RC_MAP_HAUPPAUGE_NEW, |
846 | .decoder = EM28XX_TVP5150, | 846 | .decoder = EM28XX_TVP5150, |
847 | .input = { { | 847 | .input = { { |
848 | .type = EM28XX_VMUX_TELEVISION, | 848 | .type = EM28XX_VMUX_TELEVISION, |
@@ -868,7 +868,7 @@ struct em28xx_board em28xx_boards[] = { | |||
868 | .mts_firmware = 1, | 868 | .mts_firmware = 1, |
869 | .has_dvb = 1, | 869 | .has_dvb = 1, |
870 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, | 870 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, |
871 | .ir_codes = &IR_KEYTABLE(rc5_hauppauge_new), | 871 | .ir_codes = RC_MAP_RC5_HAUPPAUGE_NEW, |
872 | .decoder = EM28XX_TVP5150, | 872 | .decoder = EM28XX_TVP5150, |
873 | .input = { { | 873 | .input = { { |
874 | .type = EM28XX_VMUX_TELEVISION, | 874 | .type = EM28XX_VMUX_TELEVISION, |
@@ -894,7 +894,7 @@ struct em28xx_board em28xx_boards[] = { | |||
894 | .mts_firmware = 1, | 894 | .mts_firmware = 1, |
895 | .has_dvb = 1, | 895 | .has_dvb = 1, |
896 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, | 896 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, |
897 | .ir_codes = &IR_KEYTABLE(pinnacle_pctv_hd), | 897 | .ir_codes = RC_MAP_PINNACLE_PCTV_HD, |
898 | .decoder = EM28XX_TVP5150, | 898 | .decoder = EM28XX_TVP5150, |
899 | .input = { { | 899 | .input = { { |
900 | .type = EM28XX_VMUX_TELEVISION, | 900 | .type = EM28XX_VMUX_TELEVISION, |
@@ -920,7 +920,7 @@ struct em28xx_board em28xx_boards[] = { | |||
920 | .mts_firmware = 1, | 920 | .mts_firmware = 1, |
921 | .has_dvb = 1, | 921 | .has_dvb = 1, |
922 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, | 922 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, |
923 | .ir_codes = &IR_KEYTABLE(ati_tv_wonder_hd_600), | 923 | .ir_codes = RC_MAP_ATI_TV_WONDER_HD_600, |
924 | .decoder = EM28XX_TVP5150, | 924 | .decoder = EM28XX_TVP5150, |
925 | .input = { { | 925 | .input = { { |
926 | .type = EM28XX_VMUX_TELEVISION, | 926 | .type = EM28XX_VMUX_TELEVISION, |
@@ -946,7 +946,7 @@ struct em28xx_board em28xx_boards[] = { | |||
946 | .decoder = EM28XX_TVP5150, | 946 | .decoder = EM28XX_TVP5150, |
947 | .has_dvb = 1, | 947 | .has_dvb = 1, |
948 | .dvb_gpio = default_digital, | 948 | .dvb_gpio = default_digital, |
949 | .ir_codes = &IR_KEYTABLE(terratec_cinergy_xs), | 949 | .ir_codes = RC_MAP_TERRATEC_CINERGY_XS, |
950 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, /* NEC IR */ | 950 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, /* NEC IR */ |
951 | .input = { { | 951 | .input = { { |
952 | .type = EM28XX_VMUX_TELEVISION, | 952 | .type = EM28XX_VMUX_TELEVISION, |
@@ -1296,7 +1296,7 @@ struct em28xx_board em28xx_boards[] = { | |||
1296 | .decoder = EM28XX_SAA711X, | 1296 | .decoder = EM28XX_SAA711X, |
1297 | .has_dvb = 1, | 1297 | .has_dvb = 1, |
1298 | .dvb_gpio = em2882_kworld_315u_digital, | 1298 | .dvb_gpio = em2882_kworld_315u_digital, |
1299 | .ir_codes = &IR_KEYTABLE(kworld_315u), | 1299 | .ir_codes = RC_MAP_KWORLD_315U, |
1300 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, | 1300 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, |
1301 | .i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE, | 1301 | .i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE, |
1302 | /* Analog mode - still not ready */ | 1302 | /* Analog mode - still not ready */ |
@@ -1425,7 +1425,7 @@ struct em28xx_board em28xx_boards[] = { | |||
1425 | .has_dvb = 1, | 1425 | .has_dvb = 1, |
1426 | .dvb_gpio = kworld_330u_digital, | 1426 | .dvb_gpio = kworld_330u_digital, |
1427 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, /* NEC IR */ | 1427 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, /* NEC IR */ |
1428 | .ir_codes = &IR_KEYTABLE(kworld_315u), | 1428 | .ir_codes = RC_MAP_KWORLD_315U, |
1429 | .input = { { | 1429 | .input = { { |
1430 | .type = EM28XX_VMUX_TELEVISION, | 1430 | .type = EM28XX_VMUX_TELEVISION, |
1431 | .vmux = TVP5150_COMPOSITE0, | 1431 | .vmux = TVP5150_COMPOSITE0, |
@@ -1448,7 +1448,7 @@ struct em28xx_board em28xx_boards[] = { | |||
1448 | .decoder = EM28XX_TVP5150, | 1448 | .decoder = EM28XX_TVP5150, |
1449 | .has_dvb = 1, | 1449 | .has_dvb = 1, |
1450 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, | 1450 | .dvb_gpio = hauppauge_wintv_hvr_900_digital, |
1451 | .ir_codes = &IR_KEYTABLE(terratec_cinergy_xs), | 1451 | .ir_codes = RC_MAP_TERRATEC_CINERGY_XS, |
1452 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, | 1452 | .xclk = EM28XX_XCLK_FREQUENCY_12MHZ, |
1453 | .input = { { | 1453 | .input = { { |
1454 | .type = EM28XX_VMUX_TELEVISION, | 1454 | .type = EM28XX_VMUX_TELEVISION, |
@@ -1541,7 +1541,7 @@ struct em28xx_board em28xx_boards[] = { | |||
1541 | .mts_firmware = 1, | 1541 | .mts_firmware = 1, |
1542 | .decoder = EM28XX_TVP5150, | 1542 | .decoder = EM28XX_TVP5150, |
1543 | .tuner_gpio = default_tuner_gpio, | 1543 | .tuner_gpio = default_tuner_gpio, |
1544 | .ir_codes = &IR_KEYTABLE(kaiomy), | 1544 | .ir_codes = RC_MAP_KAIOMY, |
1545 | .input = { { | 1545 | .input = { { |
1546 | .type = EM28XX_VMUX_TELEVISION, | 1546 | .type = EM28XX_VMUX_TELEVISION, |
1547 | .vmux = TVP5150_COMPOSITE0, | 1547 | .vmux = TVP5150_COMPOSITE0, |
@@ -1641,7 +1641,7 @@ struct em28xx_board em28xx_boards[] = { | |||
1641 | .mts_firmware = 1, | 1641 | .mts_firmware = 1, |
1642 | .has_dvb = 1, | 1642 | .has_dvb = 1, |
1643 | .dvb_gpio = evga_indtube_digital, | 1643 | .dvb_gpio = evga_indtube_digital, |
1644 | .ir_codes = &IR_KEYTABLE(evga_indtube), | 1644 | .ir_codes = RC_MAP_EVGA_INDTUBE, |
1645 | .input = { { | 1645 | .input = { { |
1646 | .type = EM28XX_VMUX_TELEVISION, | 1646 | .type = EM28XX_VMUX_TELEVISION, |
1647 | .vmux = TVP5150_COMPOSITE0, | 1647 | .vmux = TVP5150_COMPOSITE0, |
@@ -2335,21 +2335,21 @@ void em28xx_register_i2c_ir(struct em28xx *dev) | |||
2335 | switch (dev->model) { | 2335 | switch (dev->model) { |
2336 | case EM2800_BOARD_TERRATEC_CINERGY_200: | 2336 | case EM2800_BOARD_TERRATEC_CINERGY_200: |
2337 | case EM2820_BOARD_TERRATEC_CINERGY_250: | 2337 | case EM2820_BOARD_TERRATEC_CINERGY_250: |
2338 | dev->init_data.ir_codes = &IR_KEYTABLE(em_terratec); | 2338 | dev->init_data.ir_codes = RC_MAP_EM_TERRATEC; |
2339 | dev->init_data.get_key = em28xx_get_key_terratec; | 2339 | dev->init_data.get_key = em28xx_get_key_terratec; |
2340 | dev->init_data.name = "i2c IR (EM28XX Terratec)"; | 2340 | dev->init_data.name = "i2c IR (EM28XX Terratec)"; |
2341 | break; | 2341 | break; |
2342 | case EM2820_BOARD_PINNACLE_USB_2: | 2342 | case EM2820_BOARD_PINNACLE_USB_2: |
2343 | dev->init_data.ir_codes = &IR_KEYTABLE(pinnacle_grey); | 2343 | dev->init_data.ir_codes = RC_MAP_PINNACLE_GREY; |
2344 | dev->init_data.get_key = em28xx_get_key_pinnacle_usb_grey; | 2344 | dev->init_data.get_key = em28xx_get_key_pinnacle_usb_grey; |
2345 | dev->init_data.name = "i2c IR (EM28XX Pinnacle PCTV)"; | 2345 | dev->init_data.name = "i2c IR (EM28XX Pinnacle PCTV)"; |
2346 | break; | 2346 | break; |
2347 | case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2: | 2347 | case EM2820_BOARD_HAUPPAUGE_WINTV_USB_2: |
2348 | dev->init_data.ir_codes = &IR_KEYTABLE(rc5_hauppauge_new); | 2348 | dev->init_data.ir_codes = RC_MAP_RC5_HAUPPAUGE_NEW; |
2349 | dev->init_data.get_key = em28xx_get_key_em_haup; | 2349 | dev->init_data.get_key = em28xx_get_key_em_haup; |
2350 | dev->init_data.name = "i2c IR (EM2840 Hauppauge)"; | 2350 | dev->init_data.name = "i2c IR (EM2840 Hauppauge)"; |
2351 | case EM2820_BOARD_LEADTEK_WINFAST_USBII_DELUXE: | 2351 | case EM2820_BOARD_LEADTEK_WINFAST_USBII_DELUXE: |
2352 | dev->init_data.ir_codes = &IR_KEYTABLE(winfast_usbii_deluxe);; | 2352 | dev->init_data.ir_codes = RC_MAP_WINFAST_USBII_DELUXE;; |
2353 | dev->init_data.get_key = em28xx_get_key_winfast_usbii_deluxe; | 2353 | dev->init_data.get_key = em28xx_get_key_winfast_usbii_deluxe; |
2354 | dev->init_data.name = "i2c IR (EM2820 Winfast TV USBII Deluxe)"; | 2354 | dev->init_data.name = "i2c IR (EM2820 Winfast TV USBII Deluxe)"; |
2355 | break; | 2355 | break; |
diff --git a/drivers/media/video/em28xx/em28xx-input.c b/drivers/media/video/em28xx/em28xx-input.c index 6f1fc695c561..e2772a1470cb 100644 --- a/drivers/media/video/em28xx/em28xx-input.c +++ b/drivers/media/video/em28xx/em28xx-input.c | |||
@@ -382,7 +382,6 @@ int em28xx_ir_change_protocol(void *priv, u64 ir_type) | |||
382 | 382 | ||
383 | /* Adjust xclk based o IR table for RC5/NEC tables */ | 383 | /* Adjust xclk based o IR table for RC5/NEC tables */ |
384 | 384 | ||
385 | dev->board.ir_codes->ir_type = IR_TYPE_OTHER; | ||
386 | if (ir_type == IR_TYPE_RC5) { | 385 | if (ir_type == IR_TYPE_RC5) { |
387 | dev->board.xclk |= EM28XX_XCLK_IR_RC5_MODE; | 386 | dev->board.xclk |= EM28XX_XCLK_IR_RC5_MODE; |
388 | ir->full_code = 1; | 387 | ir->full_code = 1; |
@@ -393,8 +392,6 @@ int em28xx_ir_change_protocol(void *priv, u64 ir_type) | |||
393 | } else | 392 | } else |
394 | rc = -EINVAL; | 393 | rc = -EINVAL; |
395 | 394 | ||
396 | dev->board.ir_codes->ir_type = ir_type; | ||
397 | |||
398 | em28xx_write_reg_bits(dev, EM28XX_R0F_XCLK, dev->board.xclk, | 395 | em28xx_write_reg_bits(dev, EM28XX_R0F_XCLK, dev->board.xclk, |
399 | EM28XX_XCLK_IR_RC5_MODE); | 396 | EM28XX_XCLK_IR_RC5_MODE); |
400 | 397 | ||
@@ -457,7 +454,6 @@ int em28xx_ir_init(struct em28xx *dev) | |||
457 | strlcat(ir->phys, "/input0", sizeof(ir->phys)); | 454 | strlcat(ir->phys, "/input0", sizeof(ir->phys)); |
458 | 455 | ||
459 | /* Set IR protocol */ | 456 | /* Set IR protocol */ |
460 | em28xx_ir_change_protocol(ir, dev->board.ir_codes->ir_type); | ||
461 | err = ir_input_init(input_dev, &ir->ir, IR_TYPE_OTHER); | 457 | err = ir_input_init(input_dev, &ir->ir, IR_TYPE_OTHER); |
462 | if (err < 0) | 458 | if (err < 0) |
463 | goto err_out_free; | 459 | goto err_out_free; |
@@ -475,7 +471,7 @@ int em28xx_ir_init(struct em28xx *dev) | |||
475 | em28xx_ir_start(ir); | 471 | em28xx_ir_start(ir); |
476 | 472 | ||
477 | /* all done */ | 473 | /* all done */ |
478 | err = __ir_input_register(ir->input, dev->board.ir_codes, | 474 | err = ir_input_register(ir->input, dev->board.ir_codes, |
479 | &ir->props, MODULE_NAME); | 475 | &ir->props, MODULE_NAME); |
480 | if (err) | 476 | if (err) |
481 | goto err_out_stop; | 477 | goto err_out_stop; |
diff --git a/drivers/media/video/em28xx/em28xx.h b/drivers/media/video/em28xx/em28xx.h index eec12910c8cf..b252d1b1b2a7 100644 --- a/drivers/media/video/em28xx/em28xx.h +++ b/drivers/media/video/em28xx/em28xx.h | |||
@@ -412,7 +412,7 @@ struct em28xx_board { | |||
412 | 412 | ||
413 | struct em28xx_input input[MAX_EM28XX_INPUT]; | 413 | struct em28xx_input input[MAX_EM28XX_INPUT]; |
414 | struct em28xx_input radio; | 414 | struct em28xx_input radio; |
415 | struct ir_scancode_table *ir_codes; | 415 | char *ir_codes; |
416 | }; | 416 | }; |
417 | 417 | ||
418 | struct em28xx_eeprom { | 418 | struct em28xx_eeprom { |
diff --git a/drivers/media/video/ir-kbd-i2c.c b/drivers/media/video/ir-kbd-i2c.c index e6ada5e46dfc..29d439742653 100644 --- a/drivers/media/video/ir-kbd-i2c.c +++ b/drivers/media/video/ir-kbd-i2c.c | |||
@@ -297,7 +297,7 @@ static void ir_work(struct work_struct *work) | |||
297 | 297 | ||
298 | static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) | 298 | static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) |
299 | { | 299 | { |
300 | struct ir_scancode_table *ir_codes = NULL; | 300 | char *ir_codes = NULL; |
301 | const char *name = NULL; | 301 | const char *name = NULL; |
302 | u64 ir_type = 0; | 302 | u64 ir_type = 0; |
303 | struct IR_i2c *ir; | 303 | struct IR_i2c *ir; |
@@ -322,13 +322,13 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
322 | name = "Pixelview"; | 322 | name = "Pixelview"; |
323 | ir->get_key = get_key_pixelview; | 323 | ir->get_key = get_key_pixelview; |
324 | ir_type = IR_TYPE_OTHER; | 324 | ir_type = IR_TYPE_OTHER; |
325 | ir_codes = &IR_KEYTABLE(empty); | 325 | ir_codes = RC_MAP_EMPTY; |
326 | break; | 326 | break; |
327 | case 0x4b: | 327 | case 0x4b: |
328 | name = "PV951"; | 328 | name = "PV951"; |
329 | ir->get_key = get_key_pv951; | 329 | ir->get_key = get_key_pv951; |
330 | ir_type = IR_TYPE_OTHER; | 330 | ir_type = IR_TYPE_OTHER; |
331 | ir_codes = &IR_KEYTABLE(pv951); | 331 | ir_codes = RC_MAP_PV951; |
332 | break; | 332 | break; |
333 | case 0x18: | 333 | case 0x18: |
334 | case 0x1f: | 334 | case 0x1f: |
@@ -337,22 +337,22 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
337 | ir->get_key = get_key_haup; | 337 | ir->get_key = get_key_haup; |
338 | ir_type = IR_TYPE_RC5; | 338 | ir_type = IR_TYPE_RC5; |
339 | if (hauppauge == 1) { | 339 | if (hauppauge == 1) { |
340 | ir_codes = &IR_KEYTABLE(hauppauge_new); | 340 | ir_codes = RC_MAP_HAUPPAUGE_NEW; |
341 | } else { | 341 | } else { |
342 | ir_codes = &IR_KEYTABLE(rc5_tv); | 342 | ir_codes = RC_MAP_RC5_TV; |
343 | } | 343 | } |
344 | break; | 344 | break; |
345 | case 0x30: | 345 | case 0x30: |
346 | name = "KNC One"; | 346 | name = "KNC One"; |
347 | ir->get_key = get_key_knc1; | 347 | ir->get_key = get_key_knc1; |
348 | ir_type = IR_TYPE_OTHER; | 348 | ir_type = IR_TYPE_OTHER; |
349 | ir_codes = &IR_KEYTABLE(empty); | 349 | ir_codes = RC_MAP_EMPTY; |
350 | break; | 350 | break; |
351 | case 0x6b: | 351 | case 0x6b: |
352 | name = "FusionHDTV"; | 352 | name = "FusionHDTV"; |
353 | ir->get_key = get_key_fusionhdtv; | 353 | ir->get_key = get_key_fusionhdtv; |
354 | ir_type = IR_TYPE_RC5; | 354 | ir_type = IR_TYPE_RC5; |
355 | ir_codes = &IR_KEYTABLE(fusionhdtv_mce); | 355 | ir_codes = RC_MAP_FUSIONHDTV_MCE; |
356 | break; | 356 | break; |
357 | case 0x0b: | 357 | case 0x0b: |
358 | case 0x47: | 358 | case 0x47: |
@@ -365,9 +365,9 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
365 | ir_type = IR_TYPE_RC5; | 365 | ir_type = IR_TYPE_RC5; |
366 | ir->get_key = get_key_haup_xvr; | 366 | ir->get_key = get_key_haup_xvr; |
367 | if (hauppauge == 1) { | 367 | if (hauppauge == 1) { |
368 | ir_codes = &IR_KEYTABLE(hauppauge_new); | 368 | ir_codes = RC_MAP_HAUPPAUGE_NEW; |
369 | } else { | 369 | } else { |
370 | ir_codes = &IR_KEYTABLE(rc5_tv); | 370 | ir_codes = RC_MAP_RC5_TV; |
371 | } | 371 | } |
372 | } else { | 372 | } else { |
373 | /* Handled by saa7134-input */ | 373 | /* Handled by saa7134-input */ |
@@ -379,7 +379,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
379 | name = "AVerMedia Cardbus remote"; | 379 | name = "AVerMedia Cardbus remote"; |
380 | ir->get_key = get_key_avermedia_cardbus; | 380 | ir->get_key = get_key_avermedia_cardbus; |
381 | ir_type = IR_TYPE_OTHER; | 381 | ir_type = IR_TYPE_OTHER; |
382 | ir_codes = &IR_KEYTABLE(avermedia_cardbus); | 382 | ir_codes = RC_MAP_AVERMEDIA_CARDBUS; |
383 | break; | 383 | break; |
384 | } | 384 | } |
385 | 385 | ||
@@ -447,7 +447,7 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
447 | input_dev->name = ir->name; | 447 | input_dev->name = ir->name; |
448 | input_dev->phys = ir->phys; | 448 | input_dev->phys = ir->phys; |
449 | 449 | ||
450 | err = __ir_input_register(ir->input, ir->ir_codes, NULL, MODULE_NAME); | 450 | err = ir_input_register(ir->input, ir->ir_codes, NULL, MODULE_NAME); |
451 | if (err) | 451 | if (err) |
452 | goto err_out_free; | 452 | goto err_out_free; |
453 | 453 | ||
diff --git a/drivers/media/video/ivtv/ivtv-i2c.c b/drivers/media/video/ivtv/ivtv-i2c.c index a363e334a50e..a5b92d109c6c 100644 --- a/drivers/media/video/ivtv/ivtv-i2c.c +++ b/drivers/media/video/ivtv/ivtv-i2c.c | |||
@@ -193,7 +193,7 @@ static int ivtv_i2c_new_ir(struct ivtv *itv, u32 hw, const char *type, u8 addr) | |||
193 | /* Our default information for ir-kbd-i2c.c to use */ | 193 | /* Our default information for ir-kbd-i2c.c to use */ |
194 | switch (hw) { | 194 | switch (hw) { |
195 | case IVTV_HW_I2C_IR_RX_AVER: | 195 | case IVTV_HW_I2C_IR_RX_AVER: |
196 | init_data->ir_codes = &IR_KEYTABLE(avermedia_cardbus); | 196 | init_data->ir_codes = RC_MAP_AVERMEDIA_CARDBUS; |
197 | init_data->internal_get_key_func = | 197 | init_data->internal_get_key_func = |
198 | IR_KBD_GET_KEY_AVERMEDIA_CARDBUS; | 198 | IR_KBD_GET_KEY_AVERMEDIA_CARDBUS; |
199 | init_data->type = IR_TYPE_OTHER; | 199 | init_data->type = IR_TYPE_OTHER; |
@@ -202,14 +202,14 @@ static int ivtv_i2c_new_ir(struct ivtv *itv, u32 hw, const char *type, u8 addr) | |||
202 | case IVTV_HW_I2C_IR_RX_HAUP_EXT: | 202 | case IVTV_HW_I2C_IR_RX_HAUP_EXT: |
203 | case IVTV_HW_I2C_IR_RX_HAUP_INT: | 203 | case IVTV_HW_I2C_IR_RX_HAUP_INT: |
204 | /* Default to old black remote */ | 204 | /* Default to old black remote */ |
205 | init_data->ir_codes = &IR_KEYTABLE(rc5_tv); | 205 | init_data->ir_codes = RC_MAP_RC5_TV; |
206 | init_data->internal_get_key_func = IR_KBD_GET_KEY_HAUP; | 206 | init_data->internal_get_key_func = IR_KBD_GET_KEY_HAUP; |
207 | init_data->type = IR_TYPE_RC5; | 207 | init_data->type = IR_TYPE_RC5; |
208 | init_data->name = itv->card_name; | 208 | init_data->name = itv->card_name; |
209 | break; | 209 | break; |
210 | case IVTV_HW_Z8F0811_IR_RX_HAUP: | 210 | case IVTV_HW_Z8F0811_IR_RX_HAUP: |
211 | /* Default to grey remote */ | 211 | /* Default to grey remote */ |
212 | init_data->ir_codes = &IR_KEYTABLE(hauppauge_new); | 212 | init_data->ir_codes = RC_MAP_HAUPPAUGE_NEW; |
213 | init_data->internal_get_key_func = IR_KBD_GET_KEY_HAUP_XVR; | 213 | init_data->internal_get_key_func = IR_KBD_GET_KEY_HAUP_XVR; |
214 | init_data->type = IR_TYPE_RC5; | 214 | init_data->type = IR_TYPE_RC5; |
215 | init_data->name = itv->card_name; | 215 | init_data->name = itv->card_name; |
diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c index bf6751c760b4..f46dca3ccf79 100644 --- a/drivers/media/video/saa7134/saa7134-input.c +++ b/drivers/media/video/saa7134/saa7134-input.c | |||
@@ -587,7 +587,7 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
587 | { | 587 | { |
588 | struct card_ir *ir; | 588 | struct card_ir *ir; |
589 | struct input_dev *input_dev; | 589 | struct input_dev *input_dev; |
590 | struct ir_scancode_table *ir_codes = NULL; | 590 | char *ir_codes = NULL; |
591 | u32 mask_keycode = 0; | 591 | u32 mask_keycode = 0; |
592 | u32 mask_keydown = 0; | 592 | u32 mask_keydown = 0; |
593 | u32 mask_keyup = 0; | 593 | u32 mask_keyup = 0; |
@@ -595,6 +595,7 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
595 | int rc5_gpio = 0; | 595 | int rc5_gpio = 0; |
596 | int nec_gpio = 0; | 596 | int nec_gpio = 0; |
597 | int raw_decode = 0; | 597 | int raw_decode = 0; |
598 | int allow_protocol_change = 0; | ||
598 | u64 ir_type = IR_TYPE_OTHER; | 599 | u64 ir_type = IR_TYPE_OTHER; |
599 | int err; | 600 | int err; |
600 | 601 | ||
@@ -610,27 +611,27 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
610 | case SAA7134_BOARD_FLYTVPLATINUM_FM: | 611 | case SAA7134_BOARD_FLYTVPLATINUM_FM: |
611 | case SAA7134_BOARD_FLYTVPLATINUM_MINI2: | 612 | case SAA7134_BOARD_FLYTVPLATINUM_MINI2: |
612 | case SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM: | 613 | case SAA7134_BOARD_ROVERMEDIA_LINK_PRO_FM: |
613 | ir_codes = &IR_KEYTABLE(flyvideo); | 614 | ir_codes = RC_MAP_FLYVIDEO; |
614 | mask_keycode = 0xEC00000; | 615 | mask_keycode = 0xEC00000; |
615 | mask_keydown = 0x0040000; | 616 | mask_keydown = 0x0040000; |
616 | break; | 617 | break; |
617 | case SAA7134_BOARD_CINERGY400: | 618 | case SAA7134_BOARD_CINERGY400: |
618 | case SAA7134_BOARD_CINERGY600: | 619 | case SAA7134_BOARD_CINERGY600: |
619 | case SAA7134_BOARD_CINERGY600_MK3: | 620 | case SAA7134_BOARD_CINERGY600_MK3: |
620 | ir_codes = &IR_KEYTABLE(cinergy); | 621 | ir_codes = RC_MAP_CINERGY; |
621 | mask_keycode = 0x00003f; | 622 | mask_keycode = 0x00003f; |
622 | mask_keyup = 0x040000; | 623 | mask_keyup = 0x040000; |
623 | break; | 624 | break; |
624 | case SAA7134_BOARD_ECS_TVP3XP: | 625 | case SAA7134_BOARD_ECS_TVP3XP: |
625 | case SAA7134_BOARD_ECS_TVP3XP_4CB5: | 626 | case SAA7134_BOARD_ECS_TVP3XP_4CB5: |
626 | ir_codes = &IR_KEYTABLE(eztv); | 627 | ir_codes = RC_MAP_EZTV; |
627 | mask_keycode = 0x00017c; | 628 | mask_keycode = 0x00017c; |
628 | mask_keyup = 0x000002; | 629 | mask_keyup = 0x000002; |
629 | polling = 50; // ms | 630 | polling = 50; // ms |
630 | break; | 631 | break; |
631 | case SAA7134_BOARD_KWORLD_XPERT: | 632 | case SAA7134_BOARD_KWORLD_XPERT: |
632 | case SAA7134_BOARD_AVACSSMARTTV: | 633 | case SAA7134_BOARD_AVACSSMARTTV: |
633 | ir_codes = &IR_KEYTABLE(pixelview); | 634 | ir_codes = RC_MAP_PIXELVIEW; |
634 | mask_keycode = 0x00001F; | 635 | mask_keycode = 0x00001F; |
635 | mask_keyup = 0x000020; | 636 | mask_keyup = 0x000020; |
636 | polling = 50; // ms | 637 | polling = 50; // ms |
@@ -647,7 +648,7 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
647 | case SAA7134_BOARD_AVERMEDIA_GO_007_FM: | 648 | case SAA7134_BOARD_AVERMEDIA_GO_007_FM: |
648 | case SAA7134_BOARD_AVERMEDIA_M102: | 649 | case SAA7134_BOARD_AVERMEDIA_M102: |
649 | case SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS: | 650 | case SAA7134_BOARD_AVERMEDIA_GO_007_FM_PLUS: |
650 | ir_codes = &IR_KEYTABLE(avermedia); | 651 | ir_codes = RC_MAP_AVERMEDIA; |
651 | mask_keycode = 0x0007C8; | 652 | mask_keycode = 0x0007C8; |
652 | mask_keydown = 0x000010; | 653 | mask_keydown = 0x000010; |
653 | polling = 50; // ms | 654 | polling = 50; // ms |
@@ -656,14 +657,14 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
656 | saa_setb(SAA7134_GPIO_GPSTATUS0, 0x4); | 657 | saa_setb(SAA7134_GPIO_GPSTATUS0, 0x4); |
657 | break; | 658 | break; |
658 | case SAA7134_BOARD_AVERMEDIA_M135A: | 659 | case SAA7134_BOARD_AVERMEDIA_M135A: |
659 | ir_codes = &IR_KEYTABLE(avermedia_m135a_rm_jx); | 660 | ir_codes = RC_MAP_AVERMEDIA_M135A_RM_JX; |
660 | mask_keydown = 0x0040000; | 661 | mask_keydown = 0x0040000; |
661 | mask_keycode = 0xffff; | 662 | mask_keycode = 0xffff; |
662 | raw_decode = 1; | 663 | raw_decode = 1; |
663 | break; | 664 | break; |
664 | case SAA7134_BOARD_AVERMEDIA_777: | 665 | case SAA7134_BOARD_AVERMEDIA_777: |
665 | case SAA7134_BOARD_AVERMEDIA_A16AR: | 666 | case SAA7134_BOARD_AVERMEDIA_A16AR: |
666 | ir_codes = &IR_KEYTABLE(avermedia); | 667 | ir_codes = RC_MAP_AVERMEDIA; |
667 | mask_keycode = 0x02F200; | 668 | mask_keycode = 0x02F200; |
668 | mask_keydown = 0x000400; | 669 | mask_keydown = 0x000400; |
669 | polling = 50; // ms | 670 | polling = 50; // ms |
@@ -672,7 +673,7 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
672 | saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1); | 673 | saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1); |
673 | break; | 674 | break; |
674 | case SAA7134_BOARD_AVERMEDIA_A16D: | 675 | case SAA7134_BOARD_AVERMEDIA_A16D: |
675 | ir_codes = &IR_KEYTABLE(avermedia_a16d); | 676 | ir_codes = RC_MAP_AVERMEDIA_A16D; |
676 | mask_keycode = 0x02F200; | 677 | mask_keycode = 0x02F200; |
677 | mask_keydown = 0x000400; | 678 | mask_keydown = 0x000400; |
678 | polling = 50; /* ms */ | 679 | polling = 50; /* ms */ |
@@ -681,14 +682,14 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
681 | saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1); | 682 | saa_setb(SAA7134_GPIO_GPSTATUS1, 0x1); |
682 | break; | 683 | break; |
683 | case SAA7134_BOARD_KWORLD_TERMINATOR: | 684 | case SAA7134_BOARD_KWORLD_TERMINATOR: |
684 | ir_codes = &IR_KEYTABLE(pixelview); | 685 | ir_codes = RC_MAP_PIXELVIEW; |
685 | mask_keycode = 0x00001f; | 686 | mask_keycode = 0x00001f; |
686 | mask_keyup = 0x000060; | 687 | mask_keyup = 0x000060; |
687 | polling = 50; // ms | 688 | polling = 50; // ms |
688 | break; | 689 | break; |
689 | case SAA7134_BOARD_MANLI_MTV001: | 690 | case SAA7134_BOARD_MANLI_MTV001: |
690 | case SAA7134_BOARD_MANLI_MTV002: | 691 | case SAA7134_BOARD_MANLI_MTV002: |
691 | ir_codes = &IR_KEYTABLE(manli); | 692 | ir_codes = RC_MAP_MANLI; |
692 | mask_keycode = 0x001f00; | 693 | mask_keycode = 0x001f00; |
693 | mask_keyup = 0x004000; | 694 | mask_keyup = 0x004000; |
694 | polling = 50; /* ms */ | 695 | polling = 50; /* ms */ |
@@ -708,25 +709,25 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
708 | case SAA7134_BOARD_BEHOLD_507_9FM: | 709 | case SAA7134_BOARD_BEHOLD_507_9FM: |
709 | case SAA7134_BOARD_BEHOLD_507RDS_MK3: | 710 | case SAA7134_BOARD_BEHOLD_507RDS_MK3: |
710 | case SAA7134_BOARD_BEHOLD_507RDS_MK5: | 711 | case SAA7134_BOARD_BEHOLD_507RDS_MK5: |
711 | ir_codes = &IR_KEYTABLE(manli); | 712 | ir_codes = RC_MAP_MANLI; |
712 | mask_keycode = 0x003f00; | 713 | mask_keycode = 0x003f00; |
713 | mask_keyup = 0x004000; | 714 | mask_keyup = 0x004000; |
714 | polling = 50; /* ms */ | 715 | polling = 50; /* ms */ |
715 | break; | 716 | break; |
716 | case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: | 717 | case SAA7134_BOARD_BEHOLD_COLUMBUS_TVFM: |
717 | ir_codes = &IR_KEYTABLE(behold_columbus); | 718 | ir_codes = RC_MAP_BEHOLD_COLUMBUS; |
718 | mask_keycode = 0x003f00; | 719 | mask_keycode = 0x003f00; |
719 | mask_keyup = 0x004000; | 720 | mask_keyup = 0x004000; |
720 | polling = 50; // ms | 721 | polling = 50; // ms |
721 | break; | 722 | break; |
722 | case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS: | 723 | case SAA7134_BOARD_SEDNA_PC_TV_CARDBUS: |
723 | ir_codes = &IR_KEYTABLE(pctv_sedna); | 724 | ir_codes = RC_MAP_PCTV_SEDNA; |
724 | mask_keycode = 0x001f00; | 725 | mask_keycode = 0x001f00; |
725 | mask_keyup = 0x004000; | 726 | mask_keyup = 0x004000; |
726 | polling = 50; // ms | 727 | polling = 50; // ms |
727 | break; | 728 | break; |
728 | case SAA7134_BOARD_GOTVIEW_7135: | 729 | case SAA7134_BOARD_GOTVIEW_7135: |
729 | ir_codes = &IR_KEYTABLE(gotview7135); | 730 | ir_codes = RC_MAP_GOTVIEW7135; |
730 | mask_keycode = 0x0003CC; | 731 | mask_keycode = 0x0003CC; |
731 | mask_keydown = 0x000010; | 732 | mask_keydown = 0x000010; |
732 | polling = 5; /* ms */ | 733 | polling = 5; /* ms */ |
@@ -735,80 +736,80 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
735 | case SAA7134_BOARD_VIDEOMATE_TV_PVR: | 736 | case SAA7134_BOARD_VIDEOMATE_TV_PVR: |
736 | case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS: | 737 | case SAA7134_BOARD_VIDEOMATE_GOLD_PLUS: |
737 | case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII: | 738 | case SAA7134_BOARD_VIDEOMATE_TV_GOLD_PLUSII: |
738 | ir_codes = &IR_KEYTABLE(videomate_tv_pvr); | 739 | ir_codes = RC_MAP_VIDEOMATE_TV_PVR; |
739 | mask_keycode = 0x00003F; | 740 | mask_keycode = 0x00003F; |
740 | mask_keyup = 0x400000; | 741 | mask_keyup = 0x400000; |
741 | polling = 50; // ms | 742 | polling = 50; // ms |
742 | break; | 743 | break; |
743 | case SAA7134_BOARD_PROTEUS_2309: | 744 | case SAA7134_BOARD_PROTEUS_2309: |
744 | ir_codes = &IR_KEYTABLE(proteus_2309); | 745 | ir_codes = RC_MAP_PROTEUS_2309; |
745 | mask_keycode = 0x00007F; | 746 | mask_keycode = 0x00007F; |
746 | mask_keyup = 0x000080; | 747 | mask_keyup = 0x000080; |
747 | polling = 50; // ms | 748 | polling = 50; // ms |
748 | break; | 749 | break; |
749 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: | 750 | case SAA7134_BOARD_VIDEOMATE_DVBT_300: |
750 | case SAA7134_BOARD_VIDEOMATE_DVBT_200: | 751 | case SAA7134_BOARD_VIDEOMATE_DVBT_200: |
751 | ir_codes = &IR_KEYTABLE(videomate_tv_pvr); | 752 | ir_codes = RC_MAP_VIDEOMATE_TV_PVR; |
752 | mask_keycode = 0x003F00; | 753 | mask_keycode = 0x003F00; |
753 | mask_keyup = 0x040000; | 754 | mask_keyup = 0x040000; |
754 | break; | 755 | break; |
755 | case SAA7134_BOARD_FLYDVBS_LR300: | 756 | case SAA7134_BOARD_FLYDVBS_LR300: |
756 | case SAA7134_BOARD_FLYDVBT_LR301: | 757 | case SAA7134_BOARD_FLYDVBT_LR301: |
757 | case SAA7134_BOARD_FLYDVBTDUO: | 758 | case SAA7134_BOARD_FLYDVBTDUO: |
758 | ir_codes = &IR_KEYTABLE(flydvb); | 759 | ir_codes = RC_MAP_FLYDVB; |
759 | mask_keycode = 0x0001F00; | 760 | mask_keycode = 0x0001F00; |
760 | mask_keydown = 0x0040000; | 761 | mask_keydown = 0x0040000; |
761 | break; | 762 | break; |
762 | case SAA7134_BOARD_ASUSTeK_P7131_DUAL: | 763 | case SAA7134_BOARD_ASUSTeK_P7131_DUAL: |
763 | case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA: | 764 | case SAA7134_BOARD_ASUSTeK_P7131_HYBRID_LNA: |
764 | case SAA7134_BOARD_ASUSTeK_P7131_ANALOG: | 765 | case SAA7134_BOARD_ASUSTeK_P7131_ANALOG: |
765 | ir_codes = &IR_KEYTABLE(asus_pc39); | 766 | ir_codes = RC_MAP_ASUS_PC39; |
766 | mask_keydown = 0x0040000; | 767 | mask_keydown = 0x0040000; |
767 | rc5_gpio = 1; | 768 | rc5_gpio = 1; |
768 | break; | 769 | break; |
769 | case SAA7134_BOARD_ENCORE_ENLTV: | 770 | case SAA7134_BOARD_ENCORE_ENLTV: |
770 | case SAA7134_BOARD_ENCORE_ENLTV_FM: | 771 | case SAA7134_BOARD_ENCORE_ENLTV_FM: |
771 | ir_codes = &IR_KEYTABLE(encore_enltv); | 772 | ir_codes = RC_MAP_ENCORE_ENLTV; |
772 | mask_keycode = 0x00007f; | 773 | mask_keycode = 0x00007f; |
773 | mask_keyup = 0x040000; | 774 | mask_keyup = 0x040000; |
774 | polling = 50; // ms | 775 | polling = 50; // ms |
775 | break; | 776 | break; |
776 | case SAA7134_BOARD_ENCORE_ENLTV_FM53: | 777 | case SAA7134_BOARD_ENCORE_ENLTV_FM53: |
777 | ir_codes = &IR_KEYTABLE(encore_enltv_fm53); | 778 | ir_codes = RC_MAP_ENCORE_ENLTV_FM53; |
778 | mask_keydown = 0x0040000; | 779 | mask_keydown = 0x0040000; |
779 | mask_keycode = 0x00007f; | 780 | mask_keycode = 0x00007f; |
780 | nec_gpio = 1; | 781 | nec_gpio = 1; |
781 | break; | 782 | break; |
782 | case SAA7134_BOARD_10MOONSTVMASTER3: | 783 | case SAA7134_BOARD_10MOONSTVMASTER3: |
783 | ir_codes = &IR_KEYTABLE(encore_enltv); | 784 | ir_codes = RC_MAP_ENCORE_ENLTV; |
784 | mask_keycode = 0x5f80000; | 785 | mask_keycode = 0x5f80000; |
785 | mask_keyup = 0x8000000; | 786 | mask_keyup = 0x8000000; |
786 | polling = 50; //ms | 787 | polling = 50; //ms |
787 | break; | 788 | break; |
788 | case SAA7134_BOARD_GENIUS_TVGO_A11MCE: | 789 | case SAA7134_BOARD_GENIUS_TVGO_A11MCE: |
789 | ir_codes = &IR_KEYTABLE(genius_tvgo_a11mce); | 790 | ir_codes = RC_MAP_GENIUS_TVGO_A11MCE; |
790 | mask_keycode = 0xff; | 791 | mask_keycode = 0xff; |
791 | mask_keydown = 0xf00000; | 792 | mask_keydown = 0xf00000; |
792 | polling = 50; /* ms */ | 793 | polling = 50; /* ms */ |
793 | break; | 794 | break; |
794 | case SAA7134_BOARD_REAL_ANGEL_220: | 795 | case SAA7134_BOARD_REAL_ANGEL_220: |
795 | ir_codes = &IR_KEYTABLE(real_audio_220_32_keys); | 796 | ir_codes = RC_MAP_REAL_AUDIO_220_32_KEYS; |
796 | mask_keycode = 0x3f00; | 797 | mask_keycode = 0x3f00; |
797 | mask_keyup = 0x4000; | 798 | mask_keyup = 0x4000; |
798 | polling = 50; /* ms */ | 799 | polling = 50; /* ms */ |
799 | break; | 800 | break; |
800 | case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG: | 801 | case SAA7134_BOARD_KWORLD_PLUS_TV_ANALOG: |
801 | ir_codes = &IR_KEYTABLE(kworld_plus_tv_analog); | 802 | ir_codes = RC_MAP_KWORLD_PLUS_TV_ANALOG; |
802 | mask_keycode = 0x7f; | 803 | mask_keycode = 0x7f; |
803 | polling = 40; /* ms */ | 804 | polling = 40; /* ms */ |
804 | break; | 805 | break; |
805 | case SAA7134_BOARD_VIDEOMATE_S350: | 806 | case SAA7134_BOARD_VIDEOMATE_S350: |
806 | ir_codes = &IR_KEYTABLE(videomate_s350); | 807 | ir_codes = RC_MAP_VIDEOMATE_S350; |
807 | mask_keycode = 0x003f00; | 808 | mask_keycode = 0x003f00; |
808 | mask_keydown = 0x040000; | 809 | mask_keydown = 0x040000; |
809 | break; | 810 | break; |
810 | case SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S: | 811 | case SAA7134_BOARD_LEADTEK_WINFAST_DTV1000S: |
811 | ir_codes = &IR_KEYTABLE(winfast); | 812 | ir_codes = RC_MAP_WINFAST; |
812 | mask_keycode = 0x5f00; | 813 | mask_keycode = 0x5f00; |
813 | mask_keyup = 0x020000; | 814 | mask_keyup = 0x020000; |
814 | polling = 50; /* ms */ | 815 | polling = 50; /* ms */ |
@@ -853,13 +854,11 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
853 | ir->props.open = saa7134_ir_open; | 854 | ir->props.open = saa7134_ir_open; |
854 | ir->props.close = saa7134_ir_close; | 855 | ir->props.close = saa7134_ir_close; |
855 | 856 | ||
856 | if (ir_codes->ir_type != IR_TYPE_OTHER && !raw_decode) { | 857 | if (!raw_decode && allow_protocol_change) { |
857 | ir->props.allowed_protos = IR_TYPE_RC5 | IR_TYPE_NEC; | 858 | ir->props.allowed_protos = IR_TYPE_RC5 | IR_TYPE_NEC; |
858 | ir->props.change_protocol = saa7134_ir_change_protocol; | 859 | ir->props.change_protocol = saa7134_ir_change_protocol; |
859 | |||
860 | /* Set IR protocol */ | ||
861 | saa7134_ir_change_protocol(ir->props.priv, ir_codes->ir_type); | ||
862 | } | 860 | } |
861 | |||
863 | err = ir_input_init(input_dev, &ir->ir, ir_type); | 862 | err = ir_input_init(input_dev, &ir->ir, ir_type); |
864 | if (err < 0) | 863 | if (err < 0) |
865 | goto err_out_free; | 864 | goto err_out_free; |
@@ -877,10 +876,10 @@ int saa7134_input_init1(struct saa7134_dev *dev) | |||
877 | } | 876 | } |
878 | input_dev->dev.parent = &dev->pci->dev; | 877 | input_dev->dev.parent = &dev->pci->dev; |
879 | 878 | ||
880 | err = __ir_input_register(ir->dev, ir_codes, &ir->props, MODULE_NAME); | 879 | err = ir_input_register(ir->dev, ir_codes, &ir->props, MODULE_NAME); |
881 | if (err) | 880 | if (err) |
882 | goto err_out_free; | 881 | goto err_out_free; |
883 | if (ir_codes->ir_type != IR_TYPE_OTHER) { | 882 | if (raw_decode) { |
884 | err = ir_raw_event_register(ir->dev); | 883 | err = ir_raw_event_register(ir->dev); |
885 | if (err) | 884 | if (err) |
886 | goto err_out_free; | 885 | goto err_out_free; |
@@ -938,24 +937,24 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev) | |||
938 | dev->init_data.name = "Pinnacle PCTV"; | 937 | dev->init_data.name = "Pinnacle PCTV"; |
939 | if (pinnacle_remote == 0) { | 938 | if (pinnacle_remote == 0) { |
940 | dev->init_data.get_key = get_key_pinnacle_color; | 939 | dev->init_data.get_key = get_key_pinnacle_color; |
941 | dev->init_data.ir_codes = &IR_KEYTABLE(pinnacle_color); | 940 | dev->init_data.ir_codes = RC_MAP_PINNACLE_COLOR; |
942 | info.addr = 0x47; | 941 | info.addr = 0x47; |
943 | } else { | 942 | } else { |
944 | dev->init_data.get_key = get_key_pinnacle_grey; | 943 | dev->init_data.get_key = get_key_pinnacle_grey; |
945 | dev->init_data.ir_codes = &IR_KEYTABLE(pinnacle_grey); | 944 | dev->init_data.ir_codes = RC_MAP_PINNACLE_GREY; |
946 | info.addr = 0x47; | 945 | info.addr = 0x47; |
947 | } | 946 | } |
948 | break; | 947 | break; |
949 | case SAA7134_BOARD_UPMOST_PURPLE_TV: | 948 | case SAA7134_BOARD_UPMOST_PURPLE_TV: |
950 | dev->init_data.name = "Purple TV"; | 949 | dev->init_data.name = "Purple TV"; |
951 | dev->init_data.get_key = get_key_purpletv; | 950 | dev->init_data.get_key = get_key_purpletv; |
952 | dev->init_data.ir_codes = &IR_KEYTABLE(purpletv); | 951 | dev->init_data.ir_codes = RC_MAP_PURPLETV; |
953 | info.addr = 0x7a; | 952 | info.addr = 0x7a; |
954 | break; | 953 | break; |
955 | case SAA7134_BOARD_MSI_TVATANYWHERE_PLUS: | 954 | case SAA7134_BOARD_MSI_TVATANYWHERE_PLUS: |
956 | dev->init_data.name = "MSI TV@nywhere Plus"; | 955 | dev->init_data.name = "MSI TV@nywhere Plus"; |
957 | dev->init_data.get_key = get_key_msi_tvanywhere_plus; | 956 | dev->init_data.get_key = get_key_msi_tvanywhere_plus; |
958 | dev->init_data.ir_codes = &IR_KEYTABLE(msi_tvanywhere_plus); | 957 | dev->init_data.ir_codes = RC_MAP_MSI_TVANYWHERE_PLUS; |
959 | info.addr = 0x30; | 958 | info.addr = 0x30; |
960 | /* MSI TV@nywhere Plus controller doesn't seem to | 959 | /* MSI TV@nywhere Plus controller doesn't seem to |
961 | respond to probes unless we read something from | 960 | respond to probes unless we read something from |
@@ -969,7 +968,7 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev) | |||
969 | case SAA7134_BOARD_HAUPPAUGE_HVR1110: | 968 | case SAA7134_BOARD_HAUPPAUGE_HVR1110: |
970 | dev->init_data.name = "HVR 1110"; | 969 | dev->init_data.name = "HVR 1110"; |
971 | dev->init_data.get_key = get_key_hvr1110; | 970 | dev->init_data.get_key = get_key_hvr1110; |
972 | dev->init_data.ir_codes = &IR_KEYTABLE(hauppauge_new); | 971 | dev->init_data.ir_codes = RC_MAP_HAUPPAUGE_NEW; |
973 | info.addr = 0x71; | 972 | info.addr = 0x71; |
974 | break; | 973 | break; |
975 | case SAA7134_BOARD_BEHOLD_607FM_MK3: | 974 | case SAA7134_BOARD_BEHOLD_607FM_MK3: |
@@ -987,7 +986,7 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev) | |||
987 | case SAA7134_BOARD_BEHOLD_X7: | 986 | case SAA7134_BOARD_BEHOLD_X7: |
988 | dev->init_data.name = "BeholdTV"; | 987 | dev->init_data.name = "BeholdTV"; |
989 | dev->init_data.get_key = get_key_beholdm6xx; | 988 | dev->init_data.get_key = get_key_beholdm6xx; |
990 | dev->init_data.ir_codes = &IR_KEYTABLE(behold); | 989 | dev->init_data.ir_codes = RC_MAP_BEHOLD; |
991 | dev->init_data.type = IR_TYPE_NEC; | 990 | dev->init_data.type = IR_TYPE_NEC; |
992 | info.addr = 0x2d; | 991 | info.addr = 0x2d; |
993 | break; | 992 | break; |
@@ -998,7 +997,7 @@ void saa7134_probe_i2c_ir(struct saa7134_dev *dev) | |||
998 | case SAA7134_BOARD_FLYDVB_TRIO: | 997 | case SAA7134_BOARD_FLYDVB_TRIO: |
999 | dev->init_data.name = "FlyDVB Trio"; | 998 | dev->init_data.name = "FlyDVB Trio"; |
1000 | dev->init_data.get_key = get_key_flydvb_trio; | 999 | dev->init_data.get_key = get_key_flydvb_trio; |
1001 | dev->init_data.ir_codes = &IR_KEYTABLE(flydvb); | 1000 | dev->init_data.ir_codes = RC_MAP_FLYDVB; |
1002 | info.addr = 0x0b; | 1001 | info.addr = 0x0b; |
1003 | break; | 1002 | break; |
1004 | default: | 1003 | default: |
diff --git a/include/media/ir-core.h b/include/media/ir-core.h index 8e975f24dae1..e1772b8230c9 100644 --- a/include/media/ir-core.h +++ b/include/media/ir-core.h | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/kfifo.h> | 21 | #include <linux/kfifo.h> |
22 | #include <linux/time.h> | 22 | #include <linux/time.h> |
23 | #include <linux/timer.h> | 23 | #include <linux/timer.h> |
24 | #include <media/rc-map.h> | ||
24 | 25 | ||
25 | extern int ir_core_debug; | 26 | extern int ir_core_debug; |
26 | #define IR_dprintk(level, fmt, arg...) if (ir_core_debug >= level) \ | 27 | #define IR_dprintk(level, fmt, arg...) if (ir_core_debug >= level) \ |
@@ -124,6 +125,7 @@ EXPORT_SYMBOL_GPL(IR_KEYTABLE(tabname)) | |||
124 | int ir_register_map(struct rc_keymap *map); | 125 | int ir_register_map(struct rc_keymap *map); |
125 | void ir_unregister_map(struct rc_keymap *map); | 126 | void ir_unregister_map(struct rc_keymap *map); |
126 | struct ir_scancode_table *get_rc_map(const char *name); | 127 | struct ir_scancode_table *get_rc_map(const char *name); |
128 | void rc_map_init(void); | ||
127 | 129 | ||
128 | /* Routines from ir-keytable.c */ | 130 | /* Routines from ir-keytable.c */ |
129 | 131 | ||
@@ -141,15 +143,30 @@ static inline int ir_input_register(struct input_dev *dev, | |||
141 | const struct ir_dev_props *props, | 143 | const struct ir_dev_props *props, |
142 | const char *driver_name) { | 144 | const char *driver_name) { |
143 | struct ir_scancode_table *ir_codes; | 145 | struct ir_scancode_table *ir_codes; |
146 | struct ir_input_dev *ir_dev; | ||
147 | int rc; | ||
148 | |||
149 | if (!map_name) | ||
150 | return -EINVAL; | ||
144 | 151 | ||
145 | ir_codes = get_rc_map(map_name); | 152 | ir_codes = get_rc_map(map_name); |
146 | if (!ir_codes) | 153 | if (!ir_codes) |
147 | return -EINVAL; | 154 | return -EINVAL; |
148 | 155 | ||
149 | return __ir_input_register(dev, ir_codes, props, driver_name); | 156 | rc = __ir_input_register(dev, ir_codes, props, driver_name); |
157 | if (rc < 0) | ||
158 | return -EINVAL; | ||
159 | |||
160 | ir_dev = input_get_drvdata(dev); | ||
161 | |||
162 | if (!rc && ir_dev->props && ir_dev->props->change_protocol) | ||
163 | rc = ir_dev->props->change_protocol(ir_dev->props->priv, | ||
164 | ir_codes->ir_type); | ||
165 | |||
166 | return rc; | ||
150 | } | 167 | } |
151 | 168 | ||
152 | void ir_input_unregister(struct input_dev *input_dev); | 169 | void ir_input_unregister(struct input_dev *input_dev); |
153 | 170 | ||
154 | /* Routines from ir-sysfs.c */ | 171 | /* Routines from ir-sysfs.c */ |
155 | 172 | ||
diff --git a/include/media/ir-kbd-i2c.h b/include/media/ir-kbd-i2c.h index 9142936603cc..057ff64f349d 100644 --- a/include/media/ir-kbd-i2c.h +++ b/include/media/ir-kbd-i2c.h | |||
@@ -6,7 +6,7 @@ | |||
6 | struct IR_i2c; | 6 | struct IR_i2c; |
7 | 7 | ||
8 | struct IR_i2c { | 8 | struct IR_i2c { |
9 | struct ir_scancode_table *ir_codes; | 9 | char *ir_codes; |
10 | 10 | ||
11 | struct i2c_client *c; | 11 | struct i2c_client *c; |
12 | struct input_dev *input; | 12 | struct input_dev *input; |
@@ -34,7 +34,7 @@ enum ir_kbd_get_key_fn { | |||
34 | 34 | ||
35 | /* Can be passed when instantiating an ir_video i2c device */ | 35 | /* Can be passed when instantiating an ir_video i2c device */ |
36 | struct IR_i2c_init_data { | 36 | struct IR_i2c_init_data { |
37 | struct ir_scancode_table *ir_codes; | 37 | char *ir_codes; |
38 | const char *name; | 38 | const char *name; |
39 | u64 type; /* IR_TYPE_RC5, IR_TYPE_PD, etc */ | 39 | u64 type; /* IR_TYPE_RC5, IR_TYPE_PD, etc */ |
40 | /* | 40 | /* |
diff --git a/include/media/rc-map.h b/include/media/rc-map.h new file mode 100644 index 000000000000..9ea0033fa3cc --- /dev/null +++ b/include/media/rc-map.h | |||
@@ -0,0 +1,81 @@ | |||
1 | /* | ||
2 | * rc-map.h - define RC map names used by RC drivers | ||
3 | * | ||
4 | * Copyright (c) 2010 by Mauro Carvalho Chehab <mchehab@redhat.com> | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License as published by | ||
8 | * the Free Software Foundation; either version 2 of the License, or | ||
9 | * (at your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #include <media/ir-core.h> | ||
13 | |||
14 | #define RC_MAP_ADSTECH_DVB_T_PCI "rc-adstech-dvb-t-pci" | ||
15 | #define RC_MAP_APAC_VIEWCOMP "rc-apac-viewcomp" | ||
16 | #define RC_MAP_ASUS_PC39 "rc-asus-pc39" | ||
17 | #define RC_MAP_ATI_TV_WONDER_HD_600 "rc-ati-tv-wonder-hd-600" | ||
18 | #define RC_MAP_AVERMEDIA_A16D "rc-avermedia-a16d" | ||
19 | #define RC_MAP_AVERMEDIA_CARDBUS "rc-avermedia-cardbus" | ||
20 | #define RC_MAP_AVERMEDIA_DVBT "rc-avermedia-dvbt" | ||
21 | #define RC_MAP_AVERMEDIA_M135A_RM_JX "rc-avermedia-m135a-rm-jx" | ||
22 | #define RC_MAP_AVERMEDIA "rc-avermedia" | ||
23 | #define RC_MAP_AVERTV_303 "rc-avertv-303" | ||
24 | #define RC_MAP_BEHOLD_COLUMBUS "rc-behold-columbus" | ||
25 | #define RC_MAP_BEHOLD "rc-behold" | ||
26 | #define RC_MAP_BUDGET_CI_OLD "rc-budget-ci-old" | ||
27 | #define RC_MAP_CINERGY_1400 "rc-cinergy-1400" | ||
28 | #define RC_MAP_CINERGY "rc-cinergy" | ||
29 | #define RC_MAP_DM1105_NEC "rc-dm1105-nec" | ||
30 | #define RC_MAP_DNTV_LIVE_DVBT_PRO "rc-dntv-live-dvbt-pro" | ||
31 | #define RC_MAP_DNTV_LIVE_DVB_T "rc-dntv-live-dvb-t" | ||
32 | #define RC_MAP_EMPTY "rc-empty" | ||
33 | #define RC_MAP_EM_TERRATEC "rc-em-terratec" | ||
34 | #define RC_MAP_ENCORE_ENLTV2 "rc-encore-enltv2" | ||
35 | #define RC_MAP_ENCORE_ENLTV_FM53 "rc-encore-enltv-fm53" | ||
36 | #define RC_MAP_ENCORE_ENLTV "rc-encore-enltv" | ||
37 | #define RC_MAP_EVGA_INDTUBE "rc-evga-indtube" | ||
38 | #define RC_MAP_EZTV "rc-eztv" | ||
39 | #define RC_MAP_FLYDVB "rc-flydvb" | ||
40 | #define RC_MAP_FLYVIDEO "rc-flyvideo" | ||
41 | #define RC_MAP_FUSIONHDTV_MCE "rc-fusionhdtv-mce" | ||
42 | #define RC_MAP_GADMEI_RM008Z "rc-gadmei-rm008z" | ||
43 | #define RC_MAP_GENIUS_TVGO_A11MCE "rc-genius-tvgo-a11mce" | ||
44 | #define RC_MAP_GOTVIEW7135 "rc-gotview7135" | ||
45 | #define RC_MAP_HAUPPAUGE_NEW "rc-hauppauge-new" | ||
46 | #define RC_MAP_IODATA_BCTV7E "rc-iodata-bctv7e" | ||
47 | #define RC_MAP_KAIOMY "rc-kaiomy" | ||
48 | #define RC_MAP_KWORLD_315U "rc-kworld-315u" | ||
49 | #define RC_MAP_KWORLD_PLUS_TV_ANALOG "rc-kworld-plus-tv-analog" | ||
50 | #define RC_MAP_MANLI "rc-manli" | ||
51 | #define RC_MAP_MSI_TVANYWHERE_PLUS "rc-msi-tvanywhere-plus" | ||
52 | #define RC_MAP_MSI_TVANYWHERE "rc-msi-tvanywhere" | ||
53 | #define RC_MAP_NEBULA "rc-nebula" | ||
54 | #define RC_MAP_NEC_TERRATEC_CINERGY_XS "rc-nec-terratec-cinergy-xs" | ||
55 | #define RC_MAP_NORWOOD "rc-norwood" | ||
56 | #define RC_MAP_NPGTECH "rc-npgtech" | ||
57 | #define RC_MAP_PCTV_SEDNA "rc-pctv-sedna" | ||
58 | #define RC_MAP_PINNACLE_COLOR "rc-pinnacle-color" | ||
59 | #define RC_MAP_PINNACLE_GREY "rc-pinnacle-grey" | ||
60 | #define RC_MAP_PINNACLE_PCTV_HD "rc-pinnacle-pctv-hd" | ||
61 | #define RC_MAP_PIXELVIEW_NEW "rc-pixelview-new" | ||
62 | #define RC_MAP_PIXELVIEW "rc-pixelview" | ||
63 | #define RC_MAP_POWERCOLOR_REAL_ANGEL "rc-powercolor-real-angel" | ||
64 | #define RC_MAP_PROTEUS_2309 "rc-proteus-2309" | ||
65 | #define RC_MAP_PURPLETV "rc-purpletv" | ||
66 | #define RC_MAP_PV951 "rc-pv951" | ||
67 | #define RC_MAP_RC5_HAUPPAUGE_NEW "rc-rc5-hauppauge-new" | ||
68 | #define RC_MAP_RC5_TV "rc-rc5-tv" | ||
69 | #define RC_MAP_REAL_AUDIO_220_32_KEYS "rc-real-audio-220-32-keys" | ||
70 | #define RC_MAP_TBS_NEC "rc-tbs-nec" | ||
71 | #define RC_MAP_TERRATEC_CINERGY_XS "rc-terratec-cinergy-xs" | ||
72 | #define RC_MAP_TEVII_NEC "rc-tevii-nec" | ||
73 | #define RC_MAP_TT_1500 "rc-tt-1500" | ||
74 | #define RC_MAP_VIDEOMATE_S350 "rc-videomate-s350" | ||
75 | #define RC_MAP_VIDEOMATE_TV_PVR "rc-videomate-tv-pvr" | ||
76 | #define RC_MAP_WINFAST "rc-winfast" | ||
77 | #define RC_MAP_WINFAST_USBII_DELUXE "rc-winfast-usbii-deluxe" | ||
78 | /* | ||
79 | * Please, do not just append newer Remote Controller names at the end. | ||
80 | * The names should be ordered in alphabetical order | ||
81 | */ | ||