aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManuel Capinha <mcapinha@gmail.com>2005-06-24 01:04:53 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-24 03:06:38 -0400
commit239df2e2b0e1f4f69fdf76fb67e865824029e8ab (patch)
tree57088068f1f464c9d1c71f9a4e9dccfcd5106c66
parentd81ef559daf2a8afa9292035d58b00e7cb23dd1a (diff)
[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>
-rw-r--r--drivers/media/common/ir-common.c33
-rw-r--r--drivers/media/video/cx88/cx88-cards.c21
-rw-r--r--drivers/media/video/cx88/cx88-input.c7
-rw-r--r--drivers/media/video/cx88/cx88.h3
-rw-r--r--drivers/media/video/ir-kbd-gpio.c32
-rw-r--r--include/media/ir-common.h1
6 files changed, 64 insertions, 33 deletions
diff --git a/drivers/media/common/ir-common.c b/drivers/media/common/ir-common.c
index 84a49d2ec919..e5636ef181bb 100644
--- a/drivers/media/common/ir-common.c
+++ b/drivers/media/common/ir-common.c
@@ -213,6 +213,39 @@ IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE] = {
213}; 213};
214EXPORT_SYMBOL(ir_codes_hauppauge_new); 214EXPORT_SYMBOL(ir_codes_hauppauge_new);
215 215
216IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = {
217 [ 2 ] = KEY_KP0,
218 [ 1 ] = KEY_KP1,
219 [ 11 ] = KEY_KP2,
220 [ 27 ] = KEY_KP3,
221 [ 5 ] = KEY_KP4,
222 [ 9 ] = KEY_KP5,
223 [ 21 ] = KEY_KP6,
224 [ 6 ] = KEY_KP7,
225 [ 10 ] = KEY_KP8,
226 [ 18 ] = KEY_KP9,
227
228 [ 3 ] = KEY_TUNER, // TV/FM
229 [ 7 ] = KEY_SEARCH, // scan
230 [ 28 ] = KEY_ZOOM, // full screen
231 [ 30 ] = KEY_POWER,
232 [ 23 ] = KEY_VOLUMEDOWN,
233 [ 31 ] = KEY_VOLUMEUP,
234 [ 20 ] = KEY_CHANNELDOWN,
235 [ 22 ] = KEY_CHANNELUP,
236 [ 24 ] = KEY_MUTE,
237
238 [ 0 ] = KEY_LIST, // source
239 [ 19 ] = KEY_INFO, // loop
240 [ 16 ] = KEY_LAST, // +100
241 [ 13 ] = KEY_CLEAR, // reset
242 [ 12 ] = BTN_RIGHT, // fun++
243 [ 4 ] = BTN_LEFT, // fun--
244 [ 14 ] = KEY_GOTO, // function
245 [ 15 ] = KEY_STOP, // freeze
246};
247EXPORT_SYMBOL(ir_codes_pixelview);
248
216/* -------------------------------------------------------------------------- */ 249/* -------------------------------------------------------------------------- */
217 250
218static void ir_input_key_event(struct input_dev *dev, struct ir_input_state *ir) 251static void ir_input_key_event(struct input_dev *dev, struct ir_input_state *ir)
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c
index 98e40026aa4d..1c036cc36fe1 100644
--- a/drivers/media/video/cx88/cx88-cards.c
+++ b/drivers/media/video/cx88/cx88-cards.c
@@ -628,6 +628,27 @@ struct cx88_board cx88_boards[] = {
628 .gpio1 = 0x0000e07f, 628 .gpio1 = 0x0000e07f,
629 }} 629 }}
630 }, 630 },
631 [CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO] = {
632 .name = "PixelView PlayTV Ultra Pro (Stereo)",
633 .tuner_type = 38,
634 .input = {{
635 .type = CX88_VMUX_TELEVISION,
636 .vmux = 0,
637 .gpio0 = 0xbf61, // internal decoder
638 },{
639 .type = CX88_VMUX_COMPOSITE1,
640 .vmux = 1,
641 .gpio0 = 0xbf63,
642 },{
643 .type = CX88_VMUX_SVIDEO,
644 .vmux = 2,
645 .gpio0 = 0xbf63,
646 }},
647 .radio = {
648 .type = CX88_RADIO,
649 .gpio0 = 0xbf60,
650 },
651 },
631}; 652};
632const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); 653const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
633 654
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c
index af6ad8cdbdb7..fbf21dbe2511 100644
--- a/drivers/media/video/cx88/cx88-input.c
+++ b/drivers/media/video/cx88/cx88-input.c
@@ -261,6 +261,13 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci)
261 ir->mask_keydown = 0x02; 261 ir->mask_keydown = 0x02;
262 ir->polling = 5; // ms 262 ir->polling = 5; // ms
263 break; 263 break;
264 case CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO:
265 ir_codes = ir_codes_pixelview;
266 ir->gpio_addr = MO_GP1_IO;
267 ir->mask_keycode = 0x1f;
268 ir->mask_keyup = 0x80;
269 ir->polling = 1; // ms
270 break;
264 } 271 }
265 if (NULL == ir_codes) { 272 if (NULL == ir_codes) {
266 kfree(ir); 273 kfree(ir);
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h
index 0ea24b72d927..7fca1f500c56 100644
--- a/drivers/media/video/cx88/cx88.h
+++ b/drivers/media/video/cx88/cx88.h
@@ -162,7 +162,8 @@ extern struct sram_channel cx88_sram_channels[];
162#define CX88_BOARD_HAUPPAUGE_ROSLYN 24 162#define CX88_BOARD_HAUPPAUGE_ROSLYN 24
163#define CX88_BOARD_DIGITALLOGIC_MEC 25 163#define CX88_BOARD_DIGITALLOGIC_MEC 25
164#define CX88_BOARD_IODATA_GVBCTV7E 26 164#define CX88_BOARD_IODATA_GVBCTV7E 26
165#define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q 27 165#define CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO 27
166#define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q 28
166 167
167enum cx88_itype { 168enum cx88_itype {
168 CX88_VMUX_COMPOSITE1 = 1, 169 CX88_VMUX_COMPOSITE1 = 1,
diff --git a/drivers/media/video/ir-kbd-gpio.c b/drivers/media/video/ir-kbd-gpio.c
index ab6620de4b3b..a9d4b2ad14e0 100644
--- a/drivers/media/video/ir-kbd-gpio.c
+++ b/drivers/media/video/ir-kbd-gpio.c
@@ -114,38 +114,6 @@ static IR_KEYTAB_TYPE ir_codes_avermedia_dvbt[IR_KEYTAB_SIZE] = {
114 [ 0x3e ] = KEY_VOLUMEUP, // 'volume +' 114 [ 0x3e ] = KEY_VOLUMEUP, // 'volume +'
115}; 115};
116 116
117static IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = {
118 [ 2 ] = KEY_KP0,
119 [ 1 ] = KEY_KP1,
120 [ 11 ] = KEY_KP2,
121 [ 27 ] = KEY_KP3,
122 [ 5 ] = KEY_KP4,
123 [ 9 ] = KEY_KP5,
124 [ 21 ] = KEY_KP6,
125 [ 6 ] = KEY_KP7,
126 [ 10 ] = KEY_KP8,
127 [ 18 ] = KEY_KP9,
128
129 [ 3 ] = KEY_TUNER, // TV/FM
130 [ 7 ] = KEY_SEARCH, // scan
131 [ 28 ] = KEY_ZOOM, // full screen
132 [ 30 ] = KEY_POWER,
133 [ 23 ] = KEY_VOLUMEDOWN,
134 [ 31 ] = KEY_VOLUMEUP,
135 [ 20 ] = KEY_CHANNELDOWN,
136 [ 22 ] = KEY_CHANNELUP,
137 [ 24 ] = KEY_MUTE,
138
139 [ 0 ] = KEY_LIST, // source
140 [ 19 ] = KEY_INFO, // loop
141 [ 16 ] = KEY_LAST, // +100
142 [ 13 ] = KEY_CLEAR, // reset
143 [ 12 ] = BTN_RIGHT, // fun++
144 [ 4 ] = BTN_LEFT, // fun--
145 [ 14 ] = KEY_GOTO, // function
146 [ 15 ] = KEY_STOP, // freeze
147};
148
149/* Attila Kondoros <attila.kondoros@chello.hu> */ 117/* Attila Kondoros <attila.kondoros@chello.hu> */
150static IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = { 118static IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = {
151 119
diff --git a/include/media/ir-common.h b/include/media/ir-common.h
index 62c963a52d86..b5fa6c585e2d 100644
--- a/include/media/ir-common.h
+++ b/include/media/ir-common.h
@@ -50,6 +50,7 @@ extern IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE];
50extern IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE]; 50extern IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE];
51extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE]; 51extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE];
52extern IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE]; 52extern IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE];
53extern IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE];
53 54
54void ir_input_init(struct input_dev *dev, struct ir_input_state *ir, 55void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
55 int ir_type, IR_KEYTAB_TYPE *ir_codes); 56 int ir_type, IR_KEYTAB_TYPE *ir_codes);