diff options
author | Mauro Carvalho Chehab <mchehab@brturbo.com.br> | 2005-07-07 20:58:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-07-07 21:24:03 -0400 |
commit | a82decf64d34e79a0cc622997866c754350f18f8 (patch) | |
tree | 7841c828bdd03cc476067bf1f9b192613f111ae0 | |
parent | a2f552f5edc13e18b75f11fb1b08bbcad67fd362 (diff) |
[PATCH] v4l: cx88 update
- Add support for ADS Tech Instant TV DVB-T PCI.
- Remove obsoleted config options.
- Fix DViCO Board names
- Remove CABLE type setting from DViCO FusionHDTV3 Gold-T.
- Fix compilation with gcc4.0.
- V4L2_TUNER_CAP_LOW implemented according with V4L2 API for Radio.
- radio range is now defined on tuner-core.c. Cleaning up.
- Fix a bug on frequency report for cx88 based cards.
- Added support for changing radio mode stereo/mono.
- Add remove for MSI TV@nywhere.
Signed-off-by: Jorik Jonker <jorik@dnd.utwente.nl>.
Signed-off-by: Didier Caillaud <mailing.cld@free.fr>
Signed-off-by: Benoit Laniel <benoit.laniel@gmail.com>.
Signed-off-by: Nickolay V Shmyrev <nshmyrev@yandex.ru>
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>
-rw-r--r-- | drivers/media/video/cx88/cx88-cards.c | 50 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-core.c | 19 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-dvb.c | 3 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-input.c | 96 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88-video.c | 57 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 9 |
6 files changed, 169 insertions, 65 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index b3fb04356b71..f9e4cb196874 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: cx88-cards.c,v 1.76 2005/06/08 01:28:09 mchehab Exp $ | 2 | * $Id: cx88-cards.c,v 1.82 2005/06/28 04:33:53 mkrufky Exp $ |
3 | * | 3 | * |
4 | * device driver for Conexant 2388x based TV cards | 4 | * device driver for Conexant 2388x based TV cards |
5 | * card-specific stuff. | 5 | * card-specific stuff. |
@@ -401,7 +401,7 @@ struct cx88_board cx88_boards[] = { | |||
401 | .dvb = 1, | 401 | .dvb = 1, |
402 | }, | 402 | }, |
403 | [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1] = { | 403 | [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1] = { |
404 | .name = "DVICO FusionHDTV DVB-T1", | 404 | .name = "DViCO FusionHDTV DVB-T1", |
405 | .tuner_type = TUNER_ABSENT, /* No analog tuner */ | 405 | .tuner_type = TUNER_ABSENT, /* No analog tuner */ |
406 | .radio_type = UNSET, | 406 | .radio_type = UNSET, |
407 | .tuner_addr = ADDR_UNSET, | 407 | .tuner_addr = ADDR_UNSET, |
@@ -445,8 +445,8 @@ struct cx88_board cx88_boards[] = { | |||
445 | .gpio0 = 0x000007f8, | 445 | .gpio0 = 0x000007f8, |
446 | }, | 446 | }, |
447 | }, | 447 | }, |
448 | [CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD] = { | 448 | [CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q] = { |
449 | .name = "DViCO - FusionHDTV 3 Gold", | 449 | .name = "DViCO FusionHDTV 3 Gold-Q", |
450 | .tuner_type = TUNER_MICROTUNE_4042FI5, | 450 | .tuner_type = TUNER_MICROTUNE_4042FI5, |
451 | .radio_type = UNSET, | 451 | .radio_type = UNSET, |
452 | .tuner_addr = ADDR_UNSET, | 452 | .tuner_addr = ADDR_UNSET, |
@@ -464,6 +464,9 @@ struct cx88_board cx88_boards[] = { | |||
464 | GPIO[3] selects RF input connector on tuner module | 464 | GPIO[3] selects RF input connector on tuner module |
465 | 0 - RF connector labeled CABLE | 465 | 0 - RF connector labeled CABLE |
466 | 1 - RF connector labeled ANT | 466 | 1 - RF connector labeled ANT |
467 | GPIO[4] selects high RF for QAM256 mode | ||
468 | 0 - normal RF | ||
469 | 1 - high RF | ||
467 | */ | 470 | */ |
468 | .input = {{ | 471 | .input = {{ |
469 | .type = CX88_VMUX_TELEVISION, | 472 | .type = CX88_VMUX_TELEVISION, |
@@ -520,7 +523,7 @@ struct cx88_board cx88_boards[] = { | |||
520 | .blackbird = 1, | 523 | .blackbird = 1, |
521 | }, | 524 | }, |
522 | [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS] = { | 525 | [CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PLUS] = { |
523 | .name = "DVICO FusionHDTV DVB-T Plus", | 526 | .name = "DViCO FusionHDTV DVB-T Plus", |
524 | .tuner_type = TUNER_ABSENT, /* No analog tuner */ | 527 | .tuner_type = TUNER_ABSENT, /* No analog tuner */ |
525 | .radio_type = UNSET, | 528 | .radio_type = UNSET, |
526 | .tuner_addr = ADDR_UNSET, | 529 | .tuner_addr = ADDR_UNSET, |
@@ -700,21 +703,17 @@ struct cx88_board cx88_boards[] = { | |||
700 | }, | 703 | }, |
701 | }, | 704 | }, |
702 | [CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T] = { | 705 | [CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T] = { |
703 | .name = "DViCO - FusionHDTV 3 Gold-T", | 706 | .name = "DViCO FusionHDTV 3 Gold-T", |
704 | .tuner_type = TUNER_THOMSON_DTT7611, | 707 | .tuner_type = TUNER_THOMSON_DTT7611, |
705 | .radio_type = UNSET, | 708 | .radio_type = UNSET, |
706 | .tuner_addr = ADDR_UNSET, | 709 | .tuner_addr = ADDR_UNSET, |
707 | .radio_addr = ADDR_UNSET, | 710 | .radio_addr = ADDR_UNSET, |
708 | /* See DViCO FusionHDTV 3 Gold for GPIO documentation. */ | 711 | /* See DViCO FusionHDTV 3 Gold-Q for GPIO documentation. */ |
709 | .input = {{ | 712 | .input = {{ |
710 | .type = CX88_VMUX_TELEVISION, | 713 | .type = CX88_VMUX_TELEVISION, |
711 | .vmux = 0, | 714 | .vmux = 0, |
712 | .gpio0 = 0x0f0d, | 715 | .gpio0 = 0x0f0d, |
713 | },{ | 716 | },{ |
714 | .type = CX88_VMUX_CABLE, | ||
715 | .vmux = 0, | ||
716 | .gpio0 = 0x0f05, | ||
717 | },{ | ||
718 | .type = CX88_VMUX_COMPOSITE1, | 717 | .type = CX88_VMUX_COMPOSITE1, |
719 | .vmux = 1, | 718 | .vmux = 1, |
720 | .gpio0 = 0x0f00, | 719 | .gpio0 = 0x0f00, |
@@ -724,6 +723,25 @@ struct cx88_board cx88_boards[] = { | |||
724 | .gpio0 = 0x0f00, | 723 | .gpio0 = 0x0f00, |
725 | }}, | 724 | }}, |
726 | }, | 725 | }, |
726 | [CX88_BOARD_ADSTECH_DVB_T_PCI] = { | ||
727 | .name = "ADS Tech Instant TV DVB-T PCI", | ||
728 | .tuner_type = TUNER_ABSENT, | ||
729 | .radio_type = UNSET, | ||
730 | .tuner_addr = ADDR_UNSET, | ||
731 | .radio_addr = ADDR_UNSET, | ||
732 | .input = {{ | ||
733 | .type = CX88_VMUX_COMPOSITE1, | ||
734 | .vmux = 1, | ||
735 | .gpio0 = 0x0700, | ||
736 | .gpio2 = 0x0101, | ||
737 | },{ | ||
738 | .type = CX88_VMUX_SVIDEO, | ||
739 | .vmux = 2, | ||
740 | .gpio0 = 0x0700, | ||
741 | .gpio2 = 0x0101, | ||
742 | }}, | ||
743 | .dvb = 1, | ||
744 | }, | ||
727 | }; | 745 | }; |
728 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); | 746 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); |
729 | 747 | ||
@@ -794,7 +812,7 @@ struct cx88_subid cx88_subids[] = { | |||
794 | },{ | 812 | },{ |
795 | .subvendor = 0x18ac, | 813 | .subvendor = 0x18ac, |
796 | .subdevice = 0xd810, | 814 | .subdevice = 0xd810, |
797 | .card = CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD, | 815 | .card = CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q, |
798 | },{ | 816 | },{ |
799 | .subvendor = 0x18ac, | 817 | .subvendor = 0x18ac, |
800 | .subdevice = 0xd820, | 818 | .subdevice = 0xd820, |
@@ -843,7 +861,11 @@ struct cx88_subid cx88_subids[] = { | |||
843 | .subvendor = 0x10fc, | 861 | .subvendor = 0x10fc, |
844 | .subdevice = 0xd035, | 862 | .subdevice = 0xd035, |
845 | .card = CX88_BOARD_IODATA_GVBCTV7E, | 863 | .card = CX88_BOARD_IODATA_GVBCTV7E, |
846 | } | 864 | },{ |
865 | .subvendor = 0x1421, | ||
866 | .subdevice = 0x0334, | ||
867 | .card = CX88_BOARD_ADSTECH_DVB_T_PCI, | ||
868 | }, | ||
847 | }; | 869 | }; |
848 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); | 870 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); |
849 | 871 | ||
diff --git a/drivers/media/video/cx88/cx88-core.c b/drivers/media/video/cx88/cx88-core.c index c046a23537d3..96cb0ff33bbd 100644 --- a/drivers/media/video/cx88/cx88-core.c +++ b/drivers/media/video/cx88/cx88-core.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: cx88-core.c,v 1.28 2005/06/12 04:19:19 mchehab Exp $ | 2 | * $Id: cx88-core.c,v 1.31 2005/06/22 22:58:04 mchehab Exp $ |
3 | * | 3 | * |
4 | * device driver for Conexant 2388x based TV cards | 4 | * device driver for Conexant 2388x based TV cards |
5 | * driver core | 5 | * driver core |
@@ -545,12 +545,14 @@ void cx88_sram_channel_dump(struct cx88_core *core, | |||
545 | core->name,cx_read(ch->cnt2_reg)); | 545 | core->name,cx_read(ch->cnt2_reg)); |
546 | } | 546 | } |
547 | 547 | ||
548 | /* Used only on cx88-core */ | ||
548 | static char *cx88_pci_irqs[32] = { | 549 | static char *cx88_pci_irqs[32] = { |
549 | "vid", "aud", "ts", "vip", "hst", "5", "6", "tm1", | 550 | "vid", "aud", "ts", "vip", "hst", "5", "6", "tm1", |
550 | "src_dma", "dst_dma", "risc_rd_err", "risc_wr_err", | 551 | "src_dma", "dst_dma", "risc_rd_err", "risc_wr_err", |
551 | "brdg_err", "src_dma_err", "dst_dma_err", "ipb_dma_err", | 552 | "brdg_err", "src_dma_err", "dst_dma_err", "ipb_dma_err", |
552 | "i2c", "i2c_rack", "ir_smp", "gpio0", "gpio1" | 553 | "i2c", "i2c_rack", "ir_smp", "gpio0", "gpio1" |
553 | }; | 554 | }; |
555 | /* Used only on cx88-video */ | ||
554 | char *cx88_vid_irqs[32] = { | 556 | char *cx88_vid_irqs[32] = { |
555 | "y_risci1", "u_risci1", "v_risci1", "vbi_risc1", | 557 | "y_risci1", "u_risci1", "v_risci1", "vbi_risc1", |
556 | "y_risci2", "u_risci2", "v_risci2", "vbi_risc2", | 558 | "y_risci2", "u_risci2", "v_risci2", "vbi_risc2", |
@@ -558,6 +560,7 @@ char *cx88_vid_irqs[32] = { | |||
558 | "y_sync", "u_sync", "v_sync", "vbi_sync", | 560 | "y_sync", "u_sync", "v_sync", "vbi_sync", |
559 | "opc_err", "par_err", "rip_err", "pci_abort", | 561 | "opc_err", "par_err", "rip_err", "pci_abort", |
560 | }; | 562 | }; |
563 | /* Used only on cx88-mpeg */ | ||
561 | char *cx88_mpeg_irqs[32] = { | 564 | char *cx88_mpeg_irqs[32] = { |
562 | "ts_risci1", NULL, NULL, NULL, | 565 | "ts_risci1", NULL, NULL, NULL, |
563 | "ts_risci2", NULL, NULL, NULL, | 566 | "ts_risci2", NULL, NULL, NULL, |
@@ -1006,21 +1009,7 @@ int cx88_set_tvnorm(struct cx88_core *core, struct cx88_tvnorm *norm) | |||
1006 | set_tvaudio(core); | 1009 | set_tvaudio(core); |
1007 | 1010 | ||
1008 | // tell i2c chips | 1011 | // tell i2c chips |
1009 | #ifdef V4L2_I2C_CLIENTS | ||
1010 | cx88_call_i2c_clients(core,VIDIOC_S_STD,&norm->id); | 1012 | cx88_call_i2c_clients(core,VIDIOC_S_STD,&norm->id); |
1011 | #else | ||
1012 | { | ||
1013 | struct video_channel c; | ||
1014 | memset(&c,0,sizeof(c)); | ||
1015 | c.channel = core->input; | ||
1016 | c.norm = VIDEO_MODE_PAL; | ||
1017 | if ((norm->id & (V4L2_STD_NTSC_M|V4L2_STD_NTSC_M_JP))) | ||
1018 | c.norm = VIDEO_MODE_NTSC; | ||
1019 | if (norm->id & V4L2_STD_SECAM) | ||
1020 | c.norm = VIDEO_MODE_SECAM; | ||
1021 | cx88_call_i2c_clients(core,VIDIOCSCHAN,&c); | ||
1022 | } | ||
1023 | #endif | ||
1024 | 1013 | ||
1025 | // done | 1014 | // done |
1026 | return 0; | 1015 | return 0; |
diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c index 1a259c3966cd..82cc1538c105 100644 --- a/drivers/media/video/cx88/cx88-dvb.c +++ b/drivers/media/video/cx88/cx88-dvb.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: cx88-dvb.c,v 1.33 2005/06/12 04:19:19 mchehab Exp $ | 2 | * $Id: cx88-dvb.c,v 1.36 2005/06/21 06:08:12 mkrufky Exp $ |
3 | * | 3 | * |
4 | * device driver for Conexant 2388x based TV cards | 4 | * device driver for Conexant 2388x based TV cards |
5 | * MPEG Transport Stream (DVB) routines | 5 | * MPEG Transport Stream (DVB) routines |
@@ -231,6 +231,7 @@ static int dvb_register(struct cx8802_dev *dev) | |||
231 | break; | 231 | break; |
232 | case CX88_BOARD_KWORLD_DVB_T: | 232 | case CX88_BOARD_KWORLD_DVB_T: |
233 | case CX88_BOARD_DNTV_LIVE_DVB_T: | 233 | case CX88_BOARD_DNTV_LIVE_DVB_T: |
234 | case CX88_BOARD_ADSTECH_DVB_T_PCI: | ||
234 | dev->core->pll_addr = 0x61; | 235 | dev->core->pll_addr = 0x61; |
235 | dev->core->pll_desc = &dvb_pll_unknown_1; | 236 | dev->core->pll_desc = &dvb_pll_unknown_1; |
236 | dev->dvb.frontend = mt352_attach(&dntv_live_dvbt_config, | 237 | dev->dvb.frontend = mt352_attach(&dntv_live_dvbt_config, |
diff --git a/drivers/media/video/cx88/cx88-input.c b/drivers/media/video/cx88/cx88-input.c index dc0dcf249aac..bdc26e75ab5f 100644 --- a/drivers/media/video/cx88/cx88-input.c +++ b/drivers/media/video/cx88/cx88-input.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: cx88-input.c,v 1.11 2005/05/22 20:57:56 nsh Exp $ | 2 | * $Id: cx88-input.c,v 1.13 2005/06/13 16:07:46 nsh Exp $ |
3 | * | 3 | * |
4 | * Device driver for GPIO attached remote control interfaces | 4 | * Device driver for GPIO attached remote control interfaces |
5 | * on Conexant 2388x based TV/DVB cards. | 5 | * on Conexant 2388x based TV/DVB cards. |
@@ -125,6 +125,86 @@ static IR_KEYTAB_TYPE ir_codes_iodata_bctv7e[IR_KEYTAB_SIZE] = { | |||
125 | 125 | ||
126 | /* ---------------------------------------------------------------------- */ | 126 | /* ---------------------------------------------------------------------- */ |
127 | 127 | ||
128 | /* ADS Tech Instant TV DVB-T PCI Remote */ | ||
129 | static IR_KEYTAB_TYPE ir_codes_adstech_dvb_t_pci[IR_KEYTAB_SIZE] = { | ||
130 | [ 0x5b ] = KEY_POWER, | ||
131 | [ 0x5f ] = KEY_MUTE, | ||
132 | [ 0x57 ] = KEY_1, | ||
133 | [ 0x4f ] = KEY_2, | ||
134 | [ 0x53 ] = KEY_3, | ||
135 | [ 0x56 ] = KEY_4, | ||
136 | [ 0x4e ] = KEY_5, | ||
137 | [ 0x5e ] = KEY_6, | ||
138 | [ 0x54 ] = KEY_7, | ||
139 | [ 0x4c ] = KEY_8, | ||
140 | [ 0x5c ] = KEY_9, | ||
141 | [ 0x4d ] = KEY_0, | ||
142 | [ 0x55 ] = KEY_GOTO, | ||
143 | [ 0x5d ] = KEY_SEARCH, | ||
144 | [ 0x17 ] = KEY_EPG, // Guide | ||
145 | [ 0x1f ] = KEY_MENU, | ||
146 | [ 0x0f ] = KEY_UP, | ||
147 | [ 0x46 ] = KEY_DOWN, | ||
148 | [ 0x16 ] = KEY_LEFT, | ||
149 | [ 0x1e ] = KEY_RIGHT, | ||
150 | [ 0x0e ] = KEY_SELECT, // Enter | ||
151 | [ 0x5a ] = KEY_INFO, | ||
152 | [ 0x52 ] = KEY_EXIT, | ||
153 | [ 0x59 ] = KEY_PREVIOUS, | ||
154 | [ 0x51 ] = KEY_NEXT, | ||
155 | [ 0x58 ] = KEY_REWIND, | ||
156 | [ 0x50 ] = KEY_FORWARD, | ||
157 | [ 0x44 ] = KEY_PLAYPAUSE, | ||
158 | [ 0x07 ] = KEY_STOP, | ||
159 | [ 0x1b ] = KEY_RECORD, | ||
160 | [ 0x13 ] = KEY_TUNER, // Live | ||
161 | [ 0x0a ] = KEY_A, | ||
162 | [ 0x12 ] = KEY_B, | ||
163 | [ 0x03 ] = KEY_PROG1, // 1 | ||
164 | [ 0x01 ] = KEY_PROG2, // 2 | ||
165 | [ 0x00 ] = KEY_PROG3, // 3 | ||
166 | [ 0x06 ] = KEY_DVD, | ||
167 | [ 0x48 ] = KEY_AUX, // Photo | ||
168 | [ 0x40 ] = KEY_VIDEO, | ||
169 | [ 0x19 ] = KEY_AUDIO, // Music | ||
170 | [ 0x0b ] = KEY_CHANNELUP, | ||
171 | [ 0x08 ] = KEY_CHANNELDOWN, | ||
172 | [ 0x15 ] = KEY_VOLUMEUP, | ||
173 | [ 0x1c ] = KEY_VOLUMEDOWN, | ||
174 | }; | ||
175 | |||
176 | /* ---------------------------------------------------------------------- */ | ||
177 | |||
178 | /* MSI TV@nywhere remote */ | ||
179 | static IR_KEYTAB_TYPE ir_codes_msi_tvanywhere[IR_KEYTAB_SIZE] = { | ||
180 | [ 0x00 ] = KEY_0, /* '0' */ | ||
181 | [ 0x01 ] = KEY_1, /* '1' */ | ||
182 | [ 0x02 ] = KEY_2, /* '2' */ | ||
183 | [ 0x03 ] = KEY_3, /* '3' */ | ||
184 | [ 0x04 ] = KEY_4, /* '4' */ | ||
185 | [ 0x05 ] = KEY_5, /* '5' */ | ||
186 | [ 0x06 ] = KEY_6, /* '6' */ | ||
187 | [ 0x07 ] = KEY_7, /* '7' */ | ||
188 | [ 0x08 ] = KEY_8, /* '8' */ | ||
189 | [ 0x09 ] = KEY_9, /* '9' */ | ||
190 | [ 0x0c ] = KEY_MUTE, /* 'Mute' */ | ||
191 | [ 0x0f ] = KEY_SCREEN, /* 'Full Screen' */ | ||
192 | [ 0x10 ] = KEY_F, /* 'Funtion' */ | ||
193 | [ 0x11 ] = KEY_T, /* 'Time shift' */ | ||
194 | [ 0x12 ] = KEY_POWER, /* 'Power' */ | ||
195 | [ 0x13 ] = KEY_MEDIA, /* 'MTS' */ | ||
196 | [ 0x14 ] = KEY_SLOW, /* 'Slow' */ | ||
197 | [ 0x16 ] = KEY_REWIND, /* 'backward <<' */ | ||
198 | [ 0x17 ] = KEY_ENTER, /* 'Return' */ | ||
199 | [ 0x18 ] = KEY_FASTFORWARD, /* 'forward >>' */ | ||
200 | [ 0x1a ] = KEY_CHANNELUP, /* 'Channel+' */ | ||
201 | [ 0x1b ] = KEY_VOLUMEUP, /* 'Volume+' */ | ||
202 | [ 0x1e ] = KEY_CHANNELDOWN, /* 'Channel-' */ | ||
203 | [ 0x1f ] = KEY_VOLUMEDOWN, /* 'Volume-' */ | ||
204 | }; | ||
205 | |||
206 | /* ---------------------------------------------------------------------- */ | ||
207 | |||
128 | struct cx88_IR { | 208 | struct cx88_IR { |
129 | struct cx88_core *core; | 209 | struct cx88_core *core; |
130 | struct input_dev input; | 210 | struct input_dev input; |
@@ -269,6 +349,20 @@ int cx88_ir_init(struct cx88_core *core, struct pci_dev *pci) | |||
269 | ir->mask_keyup = 0x80; | 349 | ir->mask_keyup = 0x80; |
270 | ir->polling = 1; // ms | 350 | ir->polling = 1; // ms |
271 | break; | 351 | break; |
352 | case CX88_BOARD_ADSTECH_DVB_T_PCI: | ||
353 | ir_codes = ir_codes_adstech_dvb_t_pci; | ||
354 | ir->gpio_addr = MO_GP1_IO; | ||
355 | ir->mask_keycode = 0xbf; | ||
356 | ir->mask_keyup = 0x40; | ||
357 | ir->polling = 50; // ms | ||
358 | break; | ||
359 | case CX88_BOARD_MSI_TVANYWHERE_MASTER: | ||
360 | ir_codes = ir_codes_msi_tvanywhere; | ||
361 | ir->gpio_addr = MO_GP1_IO; | ||
362 | ir->mask_keycode = 0x1f; | ||
363 | ir->mask_keyup = 0x40; | ||
364 | ir->polling = 1; | ||
365 | break; | ||
272 | } | 366 | } |
273 | 367 | ||
274 | if (NULL == ir_codes) { | 368 | if (NULL == ir_codes) { |
diff --git a/drivers/media/video/cx88/cx88-video.c b/drivers/media/video/cx88/cx88-video.c index e4ca7350df15..cd5c2615d8c5 100644 --- a/drivers/media/video/cx88/cx88-video.c +++ b/drivers/media/video/cx88/cx88-video.c | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: cx88-video.c,v 1.63 2005/06/12 04:19:19 mchehab Exp $ | 2 | * $Id: cx88-video.c,v 1.70 2005/06/20 03:36:00 mkrufky Exp $ |
3 | * | 3 | * |
4 | * device driver for Conexant 2388x based TV cards | 4 | * device driver for Conexant 2388x based TV cards |
5 | * video4linux video interface | 5 | * video4linux video interface |
@@ -1351,9 +1351,6 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
1351 | V4L2_CAP_STREAMING | | 1351 | V4L2_CAP_STREAMING | |
1352 | V4L2_CAP_VBI_CAPTURE | | 1352 | V4L2_CAP_VBI_CAPTURE | |
1353 | #if 0 | 1353 | #if 0 |
1354 | V4L2_TUNER_CAP_LOW | | ||
1355 | #endif | ||
1356 | #if 0 | ||
1357 | V4L2_CAP_VIDEO_OVERLAY | | 1354 | V4L2_CAP_VIDEO_OVERLAY | |
1358 | #endif | 1355 | #endif |
1359 | 0; | 1356 | 0; |
@@ -1475,7 +1472,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
1475 | } | 1472 | } |
1476 | break; | 1473 | break; |
1477 | case 1: | 1474 | case 1: |
1478 | if (CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD == core->board) { | 1475 | if (CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q == core->board) { |
1479 | strcpy(a->name,"Line In"); | 1476 | strcpy(a->name,"Line In"); |
1480 | a->capability = V4L2_AUDCAP_STEREO; | 1477 | a->capability = V4L2_AUDCAP_STEREO; |
1481 | return 0; | 1478 | return 0; |
@@ -1588,11 +1585,11 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
1588 | { | 1585 | { |
1589 | struct v4l2_frequency *f = arg; | 1586 | struct v4l2_frequency *f = arg; |
1590 | 1587 | ||
1588 | memset(f,0,sizeof(*f)); | ||
1589 | |||
1591 | if (UNSET == core->tuner_type) | 1590 | if (UNSET == core->tuner_type) |
1592 | return -EINVAL; | 1591 | return -EINVAL; |
1593 | if (f->tuner != 0) | 1592 | |
1594 | return -EINVAL; | ||
1595 | memset(f,0,sizeof(*f)); | ||
1596 | f->type = fh->radio ? V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV; | 1593 | f->type = fh->radio ? V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV; |
1597 | f->frequency = dev->freq; | 1594 | f->frequency = dev->freq; |
1598 | return 0; | 1595 | return 0; |
@@ -1612,11 +1609,7 @@ static int video_do_ioctl(struct inode *inode, struct file *file, | |||
1612 | down(&dev->lock); | 1609 | down(&dev->lock); |
1613 | dev->freq = f->frequency; | 1610 | dev->freq = f->frequency; |
1614 | cx88_newstation(core); | 1611 | cx88_newstation(core); |
1615 | #ifdef V4L2_I2C_CLIENTS | ||
1616 | cx88_call_i2c_clients(dev->core,VIDIOC_S_FREQUENCY,f); | 1612 | cx88_call_i2c_clients(dev->core,VIDIOC_S_FREQUENCY,f); |
1617 | #else | ||
1618 | cx88_call_i2c_clients(dev->core,VIDIOCSFREQ,&dev->freq); | ||
1619 | #endif | ||
1620 | up(&dev->lock); | 1613 | up(&dev->lock); |
1621 | return 0; | 1614 | return 0; |
1622 | } | 1615 | } |
@@ -1714,11 +1707,7 @@ static int radio_do_ioctl(struct inode *inode, struct file *file, | |||
1714 | sizeof(cap->card)); | 1707 | sizeof(cap->card)); |
1715 | sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci)); | 1708 | sprintf(cap->bus_info,"PCI:%s", pci_name(dev->pci)); |
1716 | cap->version = CX88_VERSION_CODE; | 1709 | cap->version = CX88_VERSION_CODE; |
1717 | cap->capabilities = V4L2_CAP_TUNER | 1710 | cap->capabilities = V4L2_CAP_TUNER; |
1718 | #if 0 | ||
1719 | | V4L2_TUNER_CAP_LOW | ||
1720 | #endif | ||
1721 | ; | ||
1722 | return 0; | 1711 | return 0; |
1723 | } | 1712 | } |
1724 | case VIDIOC_G_TUNER: | 1713 | case VIDIOC_G_TUNER: |
@@ -1730,19 +1719,8 @@ static int radio_do_ioctl(struct inode *inode, struct file *file, | |||
1730 | 1719 | ||
1731 | memset(t,0,sizeof(*t)); | 1720 | memset(t,0,sizeof(*t)); |
1732 | strcpy(t->name, "Radio"); | 1721 | strcpy(t->name, "Radio"); |
1733 | t->rangelow = (int)(65*16); | ||
1734 | t->rangehigh = (int)(108*16); | ||
1735 | 1722 | ||
1736 | #ifdef V4L2_I2C_CLIENTS | ||
1737 | cx88_call_i2c_clients(dev->core,VIDIOC_G_TUNER,t); | 1723 | cx88_call_i2c_clients(dev->core,VIDIOC_G_TUNER,t); |
1738 | #else | ||
1739 | { | ||
1740 | struct video_tuner vt; | ||
1741 | memset(&vt,0,sizeof(vt)); | ||
1742 | cx88_call_i2c_clients(dev,VIDIOCGTUNER,&vt); | ||
1743 | t->signal = vt.signal; | ||
1744 | } | ||
1745 | #endif | ||
1746 | return 0; | 1724 | return 0; |
1747 | } | 1725 | } |
1748 | case VIDIOC_ENUMINPUT: | 1726 | case VIDIOC_ENUMINPUT: |
@@ -1775,8 +1753,29 @@ static int radio_do_ioctl(struct inode *inode, struct file *file, | |||
1775 | *id = 0; | 1753 | *id = 0; |
1776 | return 0; | 1754 | return 0; |
1777 | } | 1755 | } |
1778 | case VIDIOC_S_AUDIO: | 1756 | case VIDIOCSTUNER: |
1757 | { | ||
1758 | struct video_tuner *v = arg; | ||
1759 | |||
1760 | if (v->tuner) /* Only tuner 0 */ | ||
1761 | return -EINVAL; | ||
1762 | |||
1763 | cx88_call_i2c_clients(dev->core,VIDIOCSTUNER,v); | ||
1764 | return 0; | ||
1765 | } | ||
1779 | case VIDIOC_S_TUNER: | 1766 | case VIDIOC_S_TUNER: |
1767 | { | ||
1768 | struct v4l2_tuner *t = arg; | ||
1769 | |||
1770 | if (0 != t->index) | ||
1771 | return -EINVAL; | ||
1772 | |||
1773 | cx88_call_i2c_clients(dev->core,VIDIOC_S_TUNER,t); | ||
1774 | |||
1775 | return 0; | ||
1776 | } | ||
1777 | |||
1778 | case VIDIOC_S_AUDIO: | ||
1780 | case VIDIOC_S_INPUT: | 1779 | case VIDIOC_S_INPUT: |
1781 | case VIDIOC_S_STD: | 1780 | case VIDIOC_S_STD: |
1782 | return 0; | 1781 | return 0; |
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index 867e988a5a93..0c5311f7e624 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * $Id: cx88.h,v 1.62 2005/06/12 04:19:19 mchehab Exp $ | 2 | * $Id: cx88.h,v 1.66 2005/06/22 22:58:04 mchehab Exp $ |
3 | * | 3 | * |
4 | * v4l2 device driver for cx2388x based TV cards | 4 | * v4l2 device driver for cx2388x based TV cards |
5 | * | 5 | * |
@@ -51,8 +51,6 @@ | |||
51 | /* ----------------------------------------------------------- */ | 51 | /* ----------------------------------------------------------- */ |
52 | /* defines and enums */ | 52 | /* defines and enums */ |
53 | 53 | ||
54 | #define V4L2_I2C_CLIENTS 1 | ||
55 | |||
56 | #define FORMAT_FLAGS_PACKED 0x01 | 54 | #define FORMAT_FLAGS_PACKED 0x01 |
57 | #define FORMAT_FLAGS_PLANAR 0x02 | 55 | #define FORMAT_FLAGS_PLANAR 0x02 |
58 | 56 | ||
@@ -159,7 +157,7 @@ extern struct sram_channel cx88_sram_channels[]; | |||
159 | #define CX88_BOARD_KWORLD_DVB_T 14 | 157 | #define CX88_BOARD_KWORLD_DVB_T 14 |
160 | #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1 15 | 158 | #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T1 15 |
161 | #define CX88_BOARD_KWORLD_LTV883 16 | 159 | #define CX88_BOARD_KWORLD_LTV883 16 |
162 | #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD 17 | 160 | #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q 17 |
163 | #define CX88_BOARD_HAUPPAUGE_DVB_T1 18 | 161 | #define CX88_BOARD_HAUPPAUGE_DVB_T1 18 |
164 | #define CX88_BOARD_CONEXANT_DVB_T1 19 | 162 | #define CX88_BOARD_CONEXANT_DVB_T1 19 |
165 | #define CX88_BOARD_PROVIDEO_PV259 20 | 163 | #define CX88_BOARD_PROVIDEO_PV259 20 |
@@ -167,10 +165,11 @@ extern struct sram_channel cx88_sram_channels[]; | |||
167 | #define CX88_BOARD_PCHDTV_HD3000 22 | 165 | #define CX88_BOARD_PCHDTV_HD3000 22 |
168 | #define CX88_BOARD_DNTV_LIVE_DVB_T 23 | 166 | #define CX88_BOARD_DNTV_LIVE_DVB_T 23 |
169 | #define CX88_BOARD_HAUPPAUGE_ROSLYN 24 | 167 | #define CX88_BOARD_HAUPPAUGE_ROSLYN 24 |
170 | #define CX88_BOARD_DIGITALLOGIC_MEC 25 | 168 | #define CX88_BOARD_DIGITALLOGIC_MEC 25 |
171 | #define CX88_BOARD_IODATA_GVBCTV7E 26 | 169 | #define CX88_BOARD_IODATA_GVBCTV7E 26 |
172 | #define CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO 27 | 170 | #define CX88_BOARD_PIXELVIEW_PLAYTV_ULTRA_PRO 27 |
173 | #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T 28 | 171 | #define CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_T 28 |
172 | #define CX88_BOARD_ADSTECH_DVB_T_PCI 29 | ||
174 | 173 | ||
175 | enum cx88_itype { | 174 | enum cx88_itype { |
176 | CX88_VMUX_COMPOSITE1 = 1, | 175 | CX88_VMUX_COMPOSITE1 = 1, |