diff options
author | Ricardo Cerqueira <v4l\@cerqueira.org> | 2005-11-09 00:36:20 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-09 10:56:07 -0500 |
commit | cc9d8d49bb13fdcea521f907e120d3a7c7ce94f8 (patch) | |
tree | 6e032140664ea6822675749963ad2ea743d27ccf /drivers/media | |
parent | 87f0783159783a315c68a00e50706cd01aa10511 (diff) |
[PATCH] v4l: 635: add bttv card 137 conceptronic ctvfmi v2
- Add bttv card 137 - Conceptronic CTVFMi v2
Signed-off-by: Ricardo Cerqueira <v4l\@cerqueira.org>
Signed-off-by: Michael Krufky <mkrufky@m1k.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/video/bttv-cards.c | 15 | ||||
-rw-r--r-- | drivers/media/video/bttv.h | 1 | ||||
-rw-r--r-- | drivers/media/video/ir-kbd-gpio.c | 71 |
3 files changed, 87 insertions, 0 deletions
diff --git a/drivers/media/video/bttv-cards.c b/drivers/media/video/bttv-cards.c index 0881a17d5226..75033f06551f 100644 --- a/drivers/media/video/bttv-cards.c +++ b/drivers/media/video/bttv-cards.c | |||
@@ -2418,6 +2418,21 @@ struct tvcard bttv_tvcards[] = { | |||
2418 | .tuner_type = TUNER_YMEC_TVF66T5_B_DFF, | 2418 | .tuner_type = TUNER_YMEC_TVF66T5_B_DFF, |
2419 | .tuner_addr = 0xc1 >>1, | 2419 | .tuner_addr = 0xc1 >>1, |
2420 | .has_radio = 1, | 2420 | .has_radio = 1, |
2421 | },{ | ||
2422 | /* ---- card 0x89 ---------------------------------- */ | ||
2423 | .name = "Conceptronic CTVFMi v2", | ||
2424 | .video_inputs = 3, | ||
2425 | .audio_inputs = 1, | ||
2426 | .tuner = 0, | ||
2427 | .svhs = 2, | ||
2428 | .gpiomask = 0x001c0007, | ||
2429 | .muxsel = { 2, 3, 1, 1 }, | ||
2430 | .audiomux = { 0, 1, 2, 2, 3 }, | ||
2431 | .needs_tvaudio = 0, | ||
2432 | .pll = PLL_28, | ||
2433 | .tuner_type = TUNER_PHILIPS_FM1216ME_MK3, | ||
2434 | .tuner_addr = ADDR_UNSET, | ||
2435 | .has_remote = 1, | ||
2421 | }}; | 2436 | }}; |
2422 | 2437 | ||
2423 | static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); | 2438 | static const unsigned int bttv_num_tvcards = ARRAY_SIZE(bttv_tvcards); |
diff --git a/drivers/media/video/bttv.h b/drivers/media/video/bttv.h index d254e90e3bb9..dcdf9cde7857 100644 --- a/drivers/media/video/bttv.h +++ b/drivers/media/video/bttv.h | |||
@@ -137,6 +137,7 @@ | |||
137 | #define BTTV_ADLINK_RTV24 0x86 | 137 | #define BTTV_ADLINK_RTV24 0x86 |
138 | #define BTTV_DVICO_FUSIONHDTV_5_LITE 0x87 | 138 | #define BTTV_DVICO_FUSIONHDTV_5_LITE 0x87 |
139 | #define BTTV_ACORP_Y878F 0x88 | 139 | #define BTTV_ACORP_Y878F 0x88 |
140 | #define BTTV_CONCEPTRONIC_CTVFMI2 0x89 | ||
140 | 141 | ||
141 | /* i2c address list */ | 142 | /* i2c address list */ |
142 | #define I2C_TSA5522 0xc2 | 143 | #define I2C_TSA5522 0xc2 |
diff --git a/drivers/media/video/ir-kbd-gpio.c b/drivers/media/video/ir-kbd-gpio.c index 234151e48edc..1861d31f11b8 100644 --- a/drivers/media/video/ir-kbd-gpio.c +++ b/drivers/media/video/ir-kbd-gpio.c | |||
@@ -156,6 +156,71 @@ static IR_KEYTAB_TYPE ir_codes_apac_viewcomp[IR_KEYTAB_SIZE] = { | |||
156 | 156 | ||
157 | /* ---------------------------------------------------------------------- */ | 157 | /* ---------------------------------------------------------------------- */ |
158 | 158 | ||
159 | /* Ricardo Cerqueira <v4l@cerqueira.org> */ | ||
160 | /* Weird matching, since the remote has "uncommon" keys */ | ||
161 | |||
162 | static IR_KEYTAB_TYPE ir_codes_conceptronic[IR_KEYTAB_SIZE] = { | ||
163 | |||
164 | [ 30 ] = KEY_POWER, // power | ||
165 | [ 7 ] = KEY_SWITCHVIDEOMODE, // source | ||
166 | [ 28 ] = KEY_SEARCH, // scan | ||
167 | |||
168 | /* FIXME: duplicate keycodes? | ||
169 | * | ||
170 | * These four keys seem to share the same GPIO as CH+, CH-, <<< and >>> | ||
171 | * The GPIO values are | ||
172 | * 6397fb for both "Scan <" and "CH -", | ||
173 | * 639ffb for "Scan >" and "CH+", | ||
174 | * 6384fb for "Tune <" and "<<<", | ||
175 | * 638cfb for "Tune >" and ">>>", regardless of the mask. | ||
176 | * | ||
177 | * [ 23 ] = KEY_BACK, // fm scan << | ||
178 | * [ 31 ] = KEY_FORWARD, // fm scan >> | ||
179 | * | ||
180 | * [ 4 ] = KEY_LEFT, // fm tuning < | ||
181 | * [ 12 ] = KEY_RIGHT, // fm tuning > | ||
182 | * | ||
183 | * For now, these four keys are disabled. Pressing them will generate | ||
184 | * the CH+/CH-/<<</>>> events | ||
185 | */ | ||
186 | |||
187 | [ 3 ] = KEY_TUNER, // TV/FM | ||
188 | |||
189 | [ 0 ] = KEY_RECORD, | ||
190 | [ 8 ] = KEY_STOP, | ||
191 | [ 17 ] = KEY_PLAY, | ||
192 | |||
193 | [ 26 ] = KEY_PLAYPAUSE, // freeze | ||
194 | [ 25 ] = KEY_ZOOM, // zoom | ||
195 | [ 15 ] = KEY_TEXT, // min | ||
196 | |||
197 | [ 1 ] = KEY_KP1, | ||
198 | [ 11 ] = KEY_KP2, | ||
199 | [ 27 ] = KEY_KP3, | ||
200 | [ 5 ] = KEY_KP4, | ||
201 | [ 9 ] = KEY_KP5, | ||
202 | [ 21 ] = KEY_KP6, | ||
203 | [ 6 ] = KEY_KP7, | ||
204 | [ 10 ] = KEY_KP8, | ||
205 | [ 18 ] = KEY_KP9, | ||
206 | [ 2 ] = KEY_KP0, | ||
207 | [ 16 ] = KEY_LAST, // +100 | ||
208 | [ 19 ] = KEY_LIST, // recall | ||
209 | |||
210 | [ 31 ] = KEY_CHANNELUP, // chn down | ||
211 | [ 23 ] = KEY_CHANNELDOWN, // chn up | ||
212 | [ 22 ] = KEY_VOLUMEUP, // vol down | ||
213 | [ 20 ] = KEY_VOLUMEDOWN, // vol up | ||
214 | |||
215 | [ 4 ] = KEY_KPMINUS, // <<< | ||
216 | [ 14 ] = KEY_SETUP, // function | ||
217 | [ 12 ] = KEY_KPPLUS, // >>> | ||
218 | |||
219 | [ 13 ] = KEY_GOTO, // mts | ||
220 | [ 29 ] = KEY_REFRESH, // reset | ||
221 | [ 24 ] = KEY_MUTE // mute/unmute | ||
222 | }; | ||
223 | |||
159 | struct IR { | 224 | struct IR { |
160 | struct bttv_sub_device *sub; | 225 | struct bttv_sub_device *sub; |
161 | struct input_dev *input; | 226 | struct input_dev *input; |
@@ -329,6 +394,12 @@ static int ir_probe(struct device *dev) | |||
329 | ir->mask_keyup = 0x008000; | 394 | ir->mask_keyup = 0x008000; |
330 | ir->polling = 50; // ms | 395 | ir->polling = 50; // ms |
331 | break; | 396 | break; |
397 | case BTTV_CONCEPTRONIC_CTVFMI2: | ||
398 | ir_codes = ir_codes_conceptronic; | ||
399 | ir->mask_keycode = 0x001F00; | ||
400 | ir->mask_keyup = 0x006000; | ||
401 | ir->polling = 50; // ms | ||
402 | break; | ||
332 | } | 403 | } |
333 | if (NULL == ir_codes) { | 404 | if (NULL == ir_codes) { |
334 | kfree(ir); | 405 | kfree(ir); |