diff options
author | Andy Walls <awalls@radix.net> | 2009-07-28 10:44:05 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-09-12 11:18:25 -0400 |
commit | 1b6e59e3f48eecdab97bdd1568422e22f7d2f4f5 (patch) | |
tree | 20bc019fe092d4ac7cf2ce21d4e70963618082e7 | |
parent | 157da2762c610073e76329bb030e993fb4c2cc77 (diff) |
V4L/DVB (12366): ir-kbd-i2c: Allow use of ir-kdb-i2c internal get_key funcs and set ir_type
This patch augments the init data passed by bridge drivers to
ir-kbd-i2c, so that the ir_type can be set explicitly, and so
ir-kbd-i2c internal get_key functions can be reused without
requiring symbols from ir-kbd-i2c in the bridge driver.
Signed-off-by: Andy Walls <awalls@radix.net>
Reviewed-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Douglas Schilling Landgraf <dougsland@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/video/ir-kbd-i2c.c | 31 | ||||
-rw-r--r-- | include/media/ir-kbd-i2c.h | 17 |
2 files changed, 47 insertions, 1 deletions
diff --git a/drivers/media/video/ir-kbd-i2c.c b/drivers/media/video/ir-kbd-i2c.c index 6e4a2341edf8..f144acc400cd 100644 --- a/drivers/media/video/ir-kbd-i2c.c +++ b/drivers/media/video/ir-kbd-i2c.c | |||
@@ -392,7 +392,36 @@ static int ir_probe(struct i2c_client *client, const struct i2c_device_id *id) | |||
392 | 392 | ||
393 | ir_codes = init_data->ir_codes; | 393 | ir_codes = init_data->ir_codes; |
394 | name = init_data->name; | 394 | name = init_data->name; |
395 | ir->get_key = init_data->get_key; | 395 | if (init_data->type) |
396 | ir_type = init_data->type; | ||
397 | |||
398 | switch (init_data->internal_get_key_func) { | ||
399 | case IR_KBD_GET_KEY_CUSTOM: | ||
400 | /* The bridge driver provided us its own function */ | ||
401 | ir->get_key = init_data->get_key; | ||
402 | break; | ||
403 | case IR_KBD_GET_KEY_PIXELVIEW: | ||
404 | ir->get_key = get_key_pixelview; | ||
405 | break; | ||
406 | case IR_KBD_GET_KEY_PV951: | ||
407 | ir->get_key = get_key_pv951; | ||
408 | break; | ||
409 | case IR_KBD_GET_KEY_HAUP: | ||
410 | ir->get_key = get_key_haup; | ||
411 | break; | ||
412 | case IR_KBD_GET_KEY_KNC1: | ||
413 | ir->get_key = get_key_knc1; | ||
414 | break; | ||
415 | case IR_KBD_GET_KEY_FUSIONHDTV: | ||
416 | ir->get_key = get_key_fusionhdtv; | ||
417 | break; | ||
418 | case IR_KBD_GET_KEY_HAUP_XVR: | ||
419 | ir->get_key = get_key_haup_xvr; | ||
420 | break; | ||
421 | case IR_KBD_GET_KEY_AVERMEDIA_CARDBUS: | ||
422 | ir->get_key = get_key_avermedia_cardbus; | ||
423 | break; | ||
424 | } | ||
396 | } | 425 | } |
397 | 426 | ||
398 | /* Make sure we are all setup before going on */ | 427 | /* Make sure we are all setup before going on */ |
diff --git a/include/media/ir-kbd-i2c.h b/include/media/ir-kbd-i2c.h index 3ad4ed5402fb..defef3b18dfd 100644 --- a/include/media/ir-kbd-i2c.h +++ b/include/media/ir-kbd-i2c.h | |||
@@ -20,10 +20,27 @@ struct IR_i2c { | |||
20 | int (*get_key)(struct IR_i2c*, u32*, u32*); | 20 | int (*get_key)(struct IR_i2c*, u32*, u32*); |
21 | }; | 21 | }; |
22 | 22 | ||
23 | enum ir_kbd_get_key_fn { | ||
24 | IR_KBD_GET_KEY_CUSTOM = 0, | ||
25 | IR_KBD_GET_KEY_PIXELVIEW, | ||
26 | IR_KBD_GET_KEY_PV951, | ||
27 | IR_KBD_GET_KEY_HAUP, | ||
28 | IR_KBD_GET_KEY_KNC1, | ||
29 | IR_KBD_GET_KEY_FUSIONHDTV, | ||
30 | IR_KBD_GET_KEY_HAUP_XVR, | ||
31 | IR_KBD_GET_KEY_AVERMEDIA_CARDBUS, | ||
32 | }; | ||
33 | |||
23 | /* Can be passed when instantiating an ir_video i2c device */ | 34 | /* Can be passed when instantiating an ir_video i2c device */ |
24 | struct IR_i2c_init_data { | 35 | struct IR_i2c_init_data { |
25 | IR_KEYTAB_TYPE *ir_codes; | 36 | IR_KEYTAB_TYPE *ir_codes; |
26 | const char *name; | 37 | const char *name; |
38 | int type; /* IR_TYPE_RC5, IR_TYPE_PD, etc */ | ||
39 | /* | ||
40 | * Specify either a function pointer or a value indicating one of | ||
41 | * ir_kbd_i2c's internal get_key functions | ||
42 | */ | ||
27 | int (*get_key)(struct IR_i2c*, u32*, u32*); | 43 | int (*get_key)(struct IR_i2c*, u32*, u32*); |
44 | enum ir_kbd_get_key_fn internal_get_key_func; | ||
28 | }; | 45 | }; |
29 | #endif | 46 | #endif |