mirror of https://gitee.com/openkylin/linux.git
[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);
|
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)
|
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,
|
.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);
|
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->mask_keydown = 0x02;
|
||||||
ir->polling = 5; // ms
|
ir->polling = 5; // ms
|
||||||
break;
|
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) {
|
if (NULL == ir_codes) {
|
||||||
kfree(ir);
|
kfree(ir);
|
||||||
|
|
|
@ -162,7 +162,8 @@ extern struct sram_channel cx88_sram_channels[];
|
||||||
#define CX88_BOARD_HAUPPAUGE_ROSLYN 24
|
#define CX88_BOARD_HAUPPAUGE_ROSLYN 24
|
||||||
#define CX88_BOARD_DIGITALLOGIC_MEC 25
|
#define CX88_BOARD_DIGITALLOGIC_MEC 25
|
||||||
#define CX88_BOARD_IODATA_GVBCTV7E 26
|
#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 {
|
enum cx88_itype {
|
||||||
CX88_VMUX_COMPOSITE1 = 1,
|
CX88_VMUX_COMPOSITE1 = 1,
|
||||||
|
|
|
@ -114,38 +114,6 @@ static IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE] = {
|
||||||
[ 0x3e ] = KEY_VOLUMEUP, // 'volume +'
|
[ 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> */
|
/* Attila Kondoros <attila.kondoros@chello.hu> */
|
||||||
static IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = {
|
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_winfast[IR_KEYTAB_SIZE];
|
||||||
extern IR_KEYTAB_TYPE ir_codes_empty[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_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,
|
void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
|
||||||
int ir_type, IR_KEYTAB_TYPE *ir_codes);
|
int ir_type, IR_KEYTAB_TYPE *ir_codes);
|
||||||
|
|
Loading…
Reference in New Issue