diff options
author | Manuel Capinha <mcapinha@gmail.com> | 2005-06-24 01:04:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-24 03:06:38 -0400 |
commit | 239df2e2b0e1f4f69fdf76fb67e865824029e8ab (patch) | |
tree | 57088068f1f464c9d1c71f9a4e9dccfcd5106c66 | |
parent | d81ef559daf2a8afa9292035d58b00e7cb23dd1a (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.c | 33 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 21 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-input.c | 7 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 3 | ||||
-rw-r--r-- | drivers/media/video/ir-kbd-gpio.c | 32 | ||||
-rw-r--r-- | include/media/ir-common.h | 1 |
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 | }; |
214 | EXPORT_SYMBOL(ir_codes_hauppauge_new); | 214 | EXPORT_SYMBOL(ir_codes_hauppauge_new); |
215 | 215 | ||
216 | IR_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 | }; | ||
247 | EXPORT_SYMBOL(ir_codes_pixelview); | ||
248 | |||
216 | /* -------------------------------------------------------------------------- */ | 249 | /* -------------------------------------------------------------------------- */ |
217 | 250 | ||
218 | static void ir_input_key_event(struct input_dev *dev, struct ir_input_state *ir) | 251 | static 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 | }; |
632 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); | 653 | const 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 | ||
167 | enum cx88_itype { | 168 | enum 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 | ||
117 | static 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> */ |
150 | static IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = { | 118 | static 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]; | |||
50 | extern IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE]; | 50 | extern IR_KEYTAB_TYPE ir_codes_winfast[IR_KEYTAB_SIZE]; |
51 | extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE]; | 51 | extern IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE]; |
52 | extern IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE]; | 52 | extern IR_KEYTAB_TYPE ir_codes_hauppauge_new[IR_KEYTAB_SIZE]; |
53 | extern IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE]; | ||
53 | 54 | ||
54 | void ir_input_init(struct input_dev *dev, struct ir_input_state *ir, | 55 | void 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); |