From: Manuel Capinha The following patch adds support for the PixelView Ultra Pro video capture card in v4l. - It removes the remote control key definitions from ir-kbd-gpio.c and moves them to ir-common.c so that they can be shared between bt878 and cx88 based cards. - The patch also moves the FUSIONHDTV_3_GOLD_Q card from number 27 to 28 to regain compatibility with the V4L cvs. Signed-off-by: Andrew Morton --- drivers/media/common/ir-common.c | 33 +++++++++++++++++++++++++++++++++ drivers/media/video/cx88/cx88-cards.c | 21 +++++++++++++++++++++ drivers/media/video/cx88/cx88-input.c | 7 +++++++ drivers/media/video/cx88/cx88.h | 3 ++- drivers/media/video/ir-kbd-gpio.c | 32 -------------------------------- include/media/ir-common.h | 1 + 6 files changed, 64 insertions(+), 33 deletions(-) diff -puN drivers/media/common/ir-common.c~v4l-add-support-for-pixelview-ultra-pro drivers/media/common/ir-common.c --- 25/drivers/media/common/ir-common.c~v4l-add-support-for-pixelview-ultra-pro Thu Jun 2 16:50:24 2005 +++ 25-akpm/drivers/media/common/ir-common.c Thu Jun 2 16:50:24 2005 @@ -213,6 +213,39 @@ IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR }; EXPORT_SYMBOL(ir_codes_hauppauge_new); +IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = { + [ 2 ] = KEY_KP0, + [ 1 ] = KEY_KP1, + [ 11 ] = KEY_KP2, + [ 27 ] = KEY_KP3, + [ 5 ] = KEY_KP4, + [ 9 ] = KEY_KP5, + [ 21 ] = KEY_KP6, + [ 6 ] = KEY_KP7, + [ 10 ] = KEY_KP8, + [ 18 ] = KEY_KP9, + + [ 3 ] = KEY_TUNER, // TV/FM + [ 7 ] = KEY_SEARCH, // scan + [ 28 ] = KEY_ZOOM, // full screen + [ 30 ] = KEY_POWER, + [ 23 ] = KEY_VOLUMEDOWN, + [ 31 ] = KEY_VOLUMEUP, + [ 20 ] = KEY_CHANNELDOWN, + [ 22 ] = KEY_CHANNELUP, + [ 24 ] = KEY_MUTE, + + [ 0 ] = KEY_LIST, // source + [ 19 ] = KEY_INFO, // loop + [ 16 ] = KEY_LAST, // +100 + [ 13 ] = KEY_CLEAR, // reset + [ 12 ] = BTN_RIGHT, // fun++ + [ 4 ] = BTN_LEFT, // fun-- + [ 14 ] = KEY_GOTO, // function + [ 15 ] = KEY_STOP, // freeze +}; +EXPORT_SYMBOL(ir_codes_pixelview); + /* -------------------------------------------------------------------------- */ static void ir_input_key_event(struct input_dev *dev, struct ir_input_state *ir) diff -puN drivers/media/video/cx88/cx88-cards.c~v4l-add-support-for-pixelview-ultra-pro drivers/media/video/cx88/cx88-cards.c --- 25/drivers/media/video/cx88/cx88-cards.c~v4l-add-support-for-pixelview-ultra-pro Thu Jun 2 16:50:24 2005 +++ 25-akpm/drivers/media/video/cx88/cx88-cards.c Thu Jun 2 16:50:24 2005 @@ -628,6 +628,27 @@ struct cx88_board cx88_boards[] = { .gpio1 = 0x0000e07f, }} }, + [CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO] = { + .name = "PixelView PlayTV Ultra Pro (Stereo)", + .tuner_type = 38, + .input = {{ + .type = CX88_VMUX_TELEVISION, + .vmux = 0, + .gpio0 = 0xbf61, // internal decoder + },{ + .type = CX88_VMUX_COMPOSITE1, + .vmux = 1, + .gpio0 = 0xbf63, + },{ + .type = CX88_VMUX_SVIDEO, + .vmux = 2, + .gpio0 = 0xbf63, + }}, + .radio = { + .type = CX88_RADIO, + .gpio0 = 0xbf60, + }, + }, }; const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); diff -puN drivers/media/video/cx88/cx88.h~v4l-add-support-for-pixelview-ultra-pro drivers/media/video/cx88/cx88.h --- 25/drivers/media/video/cx88/cx88.h~v4l-add-support-for-pixelview-ultra-pro Thu Jun 2 16:50:24 2005 +++ 25-akpm/drivers/media/video/cx88/cx88.h Thu Jun 2 16:50:24 2005 @@ -162,7 +162,8 @@ extern struct sram_channel cx88_sram_cha #define CX88_BOARD_HAUPPAUGE_ROSLYN 24 #define CX88_BOARD_DIGITALLOGIC_MEC 25 #define CX88_BOARD_IODATA_GVBCTV7E 26 -#define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q 27 +#define CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO 27 +#define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q 28 enum cx88_itype { CX88_VMUX_COMPOSITE1 = 1, diff -puN drivers/media/video/cx88/cx88-input.c~v4l-add-support-for-pixelview-ultra-pro drivers/media/video/cx88/cx88-input.c --- 25/drivers/media/video/cx88/cx88-input.c~v4l-add-support-for-pixelview-ultra-pro Thu Jun 2 16:50:24 2005 +++ 25-akpm/drivers/media/video/cx88/cx88-input.c Thu Jun 2 16:50:24 2005 @@ -261,6 +261,13 @@ int cx88_ir_init(struct cx88_core *core, ir->mask_keydown = 0x02; ir->polling = 5; // ms break; + case CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO: + ir_codes = ir_codes_pixelview; + ir->gpio_addr = MO_GP1_IO; + ir->mask_keycode = 0x1f; + ir->mask_keyup = 0x80; + ir->polling = 1; // ms + break; } if (NULL == ir_codes) { kfree(ir); diff -puN drivers/media/video/ir-kbd-gpio.c~v4l-add-support-for-pixelview-ultra-pro drivers/media/video/ir-kbd-gpio.c --- 25/drivers/media/video/ir-kbd-gpio.c~v4l-add-support-for-pixelview-ultra-pro Thu Jun 2 16:50:24 2005 +++ 25-akpm/drivers/media/video/ir-kbd-gpio.c Thu Jun 2 16:50:24 2005 @@ -114,38 +114,6 @@ static IR_KEYTAB_TYPE ir_codes_avermedia [ 0x3e ] = KEY_VOLUMEUP, // 'volume +' }; -static IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = { - [ 2 ] = KEY_KP0, - [ 1 ] = KEY_KP1, - [ 11 ] = KEY_KP2, - [ 27 ] = KEY_KP3, - [ 5 ] = KEY_KP4, - [ 9 ] = KEY_KP5, - [ 21 ] = KEY_KP6, - [ 6 ] = KEY_KP7, - [ 10 ] = KEY_KP8, - [ 18 ] = KEY_KP9, - - [ 3 ] = KEY_TUNER, // TV/FM - [ 7 ] = KEY_SEARCH, // scan - [ 28 ] = KEY_ZOOM, // full screen - [ 30 ] = KEY_POWER, - [ 23 ] = KEY_VOLUMEDOWN, - [ 31 ] = KEY_VOLUMEUP, - [ 20 ] = KEY_CHANNELDOWN, - [ 22 ] = KEY_CHANNELUP, - [ 24 ] = KEY_MUTE, - - [ 0 ] = KEY_LIST, // source - [ 19 ] = KEY_INFO, // loop - [ 16 ] = KEY_LAST, // +100 - [ 13 ] = KEY_CLEAR, // reset - [ 12 ] = BTN_RIGHT, // fun++ - [ 4 ] = BTN_LEFT, // fun-- - [ 14 ] = KEY_GOTO, // function - [ 15 ] = KEY_STOP, // freeze -}; - /* Attila Kondoros */ static IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = { diff -puN include/media/ir-common.h~v4l-add-support-for-pixelview-ultra-pro include/media/ir-common.h --- 25/include/media/ir-common.h~v4l-add-support-for-pixelview-ultra-pro Thu Jun 2 16:50:24 2005 +++ 25-akpm/include/media/ir-common.h Thu Jun 2 16:50:24 2005 @@ -50,6 +50,7 @@ extern IR_KEYTAB_TYPE ir_codes_rc5_tv[IR extern IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE]; extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE]; extern IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE]; +extern IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE]; void ir_input_init(struct input_dev *dev, struct ir_input_state *ir, int ir_type, IR_KEYTAB_TYPE *ir_codes); _