[PATCH] v4l: add support for PixelView Ultra Pro
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 <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
d81ef559da
commit
239df2e2b0
|
@ -213,6 +213,39 @@ IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE] = {
|
|||
};
|
||||
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)
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -261,6 +261,13 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
|
|||
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);
|
||||
|
|
|
@ -162,7 +162,8 @@ extern struct sram_channel cx88_sram_channels[];
|
|||
#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,
|
||||
|
|
|
@ -114,38 +114,6 @@ static IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE] = {
|
|||
[ 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 <attila.kondoros@chello.hu> */
|
||||
static IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = {
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ extern IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE];
|
|||
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);
|
||||
|
|
Loading…
Reference in a new issue