diff options
author | Kirk Lapray <kirk.lapray@gmail.com> | 2005-11-09 00:37:04 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-09 10:56:14 -0500 |
commit | e976f93725ce16b4a493d40a6dd3bccbd74b9a8a (patch) | |
tree | a50459ae4835b8371469a918deb5f93a65594114 /drivers/media | |
parent | cf583ac40d06825bc850dc4f47627d7661aaa4f8 (diff) |
[PATCH] v4l: 712: added analog support for ati hdtv wonder
- Added analog support for ATI HDTV Wonder
Signed-off-by: Kirk Lapray <kirk.lapray@gmail.com>
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/cx88/cx88-cards.c | 49 | ||||
-rw-r--r-- | drivers/media/video/cx88/cx88.h | 1 | ||||
-rw-r--r-- | drivers/media/video/tuner-simple.c | 15 |
3 files changed, 64 insertions, 1 deletions
diff --git a/drivers/media/video/cx88/cx88-cards.c b/drivers/media/video/cx88/cx88-cards.c index 888d25d48416..388440789dfb 100644 --- a/drivers/media/video/cx88/cx88-cards.c +++ b/drivers/media/video/cx88/cx88-cards.c | |||
@@ -823,6 +823,35 @@ struct cx88_board cx88_boards[] = { | |||
823 | .gpio3 = 0x00100000, | 823 | .gpio3 = 0x00100000, |
824 | }}, | 824 | }}, |
825 | }, | 825 | }, |
826 | [CX88_BOARD_ATI_HDTVWONDER] = { | ||
827 | .name = "ATI HDTV Wonder", | ||
828 | .tuner_type = TUNER_PHILIPS_TUV1236D, | ||
829 | .radio_type = UNSET, | ||
830 | .tuner_addr = ADDR_UNSET, | ||
831 | .radio_addr = ADDR_UNSET, | ||
832 | .input = {{ | ||
833 | .type = CX88_VMUX_TELEVISION, | ||
834 | .vmux = 0, | ||
835 | .gpio0 = 0x00000ff7, | ||
836 | .gpio1 = 0x000000ff, | ||
837 | .gpio2 = 0x00000001, | ||
838 | .gpio3 = 0x00000000, | ||
839 | },{ | ||
840 | .type = CX88_VMUX_COMPOSITE1, | ||
841 | .vmux = 1, | ||
842 | .gpio0 = 0x00000ffe, | ||
843 | .gpio1 = 0x000000ff, | ||
844 | .gpio2 = 0x00000001, | ||
845 | .gpio3 = 0x00000000, | ||
846 | },{ | ||
847 | .type = CX88_VMUX_SVIDEO, | ||
848 | .vmux = 2, | ||
849 | .gpio0 = 0x00000ffe, | ||
850 | .gpio1 = 0x000000ff, | ||
851 | .gpio2 = 0x00000001, | ||
852 | .gpio3 = 0x00000000, | ||
853 | }}, | ||
854 | }, | ||
826 | }; | 855 | }; |
827 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); | 856 | const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); |
828 | 857 | ||
@@ -958,6 +987,10 @@ struct cx88_subid cx88_subids[] = { | |||
958 | .subvendor = 0x1461, | 987 | .subvendor = 0x1461, |
959 | .subdevice = 0x8011, | 988 | .subdevice = 0x8011, |
960 | .card = CX88_BOARD_AVERMEDIA_ULTRATV_MC_550, | 989 | .card = CX88_BOARD_AVERMEDIA_ULTRATV_MC_550, |
990 | },{ | ||
991 | .subvendor = PCI_VENDOR_ID_ATI, | ||
992 | .subdevice = 0xa101, | ||
993 | .card = CX88_BOARD_ATI_HDTVWONDER, | ||
961 | }, | 994 | }, |
962 | }; | 995 | }; |
963 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); | 996 | const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); |
@@ -1159,6 +1192,22 @@ void cx88_card_setup(struct cx88_core *core) | |||
1159 | cx_clear(MO_GP0_IO, 0x00000007); | 1192 | cx_clear(MO_GP0_IO, 0x00000007); |
1160 | cx_set(MO_GP2_IO, 0x00000101); | 1193 | cx_set(MO_GP2_IO, 0x00000101); |
1161 | break; | 1194 | break; |
1195 | case CX88_BOARD_ATI_HDTVWONDER: | ||
1196 | if (0 == core->i2c_rc) { | ||
1197 | /* enable tuner */ | ||
1198 | int i; | ||
1199 | u8 buffer[12]; | ||
1200 | core->i2c_client.addr = 0x0a; | ||
1201 | buffer[0] = 0x10; buffer[1] = 0x12; buffer[2] = 0x13; buffer[3] = 0x04; | ||
1202 | buffer[4] = 0x16; buffer[5] = 0x00; buffer[6] = 0x14; buffer[7] = 0x04; | ||
1203 | buffer[8] = 0x14; buffer[9] = 0x00; buffer[10] = 0x17; buffer[11] = 0x00; | ||
1204 | |||
1205 | for (i = 0; i < 6; i++) | ||
1206 | if (2 != i2c_master_send(&core->i2c_client,&buffer[i*2],2)) | ||
1207 | printk(KERN_WARNING "%s: Unable to enable tuner(%i).\n", | ||
1208 | core->name, i); | ||
1209 | } | ||
1210 | break; | ||
1162 | } | 1211 | } |
1163 | if (cx88_boards[core->board].radio.type == CX88_RADIO) | 1212 | if (cx88_boards[core->board].radio.type == CX88_RADIO) |
1164 | core->has_radio = 1; | 1213 | core->has_radio = 1; |
diff --git a/drivers/media/video/cx88/cx88.h b/drivers/media/video/cx88/cx88.h index 9b629221e799..cc2197a85d01 100644 --- a/drivers/media/video/cx88/cx88.h +++ b/drivers/media/video/cx88/cx88.h | |||
@@ -176,6 +176,7 @@ extern struct sram_channel cx88_sram_channels[]; | |||
176 | #define CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD 31 | 176 | #define CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD 31 |
177 | #define CX88_BOARD_AVERMEDIA_ULTRATV_MC_550 32 | 177 | #define CX88_BOARD_AVERMEDIA_ULTRATV_MC_550 32 |
178 | #define CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD 33 | 178 | #define CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD 33 |
179 | #define CX88_BOARD_ATI_HDTVWONDER 34 | ||
179 | 180 | ||
180 | enum cx88_itype { | 181 | enum cx88_itype { |
181 | CX88_VMUX_COMPOSITE1 = 1, | 182 | CX88_VMUX_COMPOSITE1 = 1, |
diff --git a/drivers/media/video/tuner-simple.c b/drivers/media/video/tuner-simple.c index b75ad2d4488a..e67d9e77c755 100644 --- a/drivers/media/video/tuner-simple.c +++ b/drivers/media/video/tuner-simple.c | |||
@@ -233,7 +233,7 @@ static struct tunertype tuners[] = { | |||
233 | { "Ymec TVision TVF-5533MF", Philips, NTSC, | 233 | { "Ymec TVision TVF-5533MF", Philips, NTSC, |
234 | 16*160.00,16*454.00,0x01,0x02,0x04,0x8e,732}, | 234 | 16*160.00,16*454.00,0x01,0x02,0x04,0x8e,732}, |
235 | 235 | ||
236 | /* 60-67 */ | 236 | /* 60-68 */ |
237 | { "Thomson DDT 7611 (ATSC/NTSC)", THOMSON, ATSC, | 237 | { "Thomson DDT 7611 (ATSC/NTSC)", THOMSON, ATSC, |
238 | 16*157.25,16*454.00,0x39,0x3a,0x3c,0x8e,732}, | 238 | 16*157.25,16*454.00,0x39,0x3a,0x3c,0x8e,732}, |
239 | { "Tena TNF9533-D/IF/TNF9533-B/DF", Philips, PAL, | 239 | { "Tena TNF9533-D/IF/TNF9533-B/DF", Philips, PAL, |
@@ -250,6 +250,8 @@ static struct tunertype tuners[] = { | |||
250 | 16*137.25,16*373.25,0x01,0x02,0x08,0x8e,732 }, | 250 | 16*137.25,16*373.25,0x01,0x02,0x08,0x8e,732 }, |
251 | { "Philips TD1316 Hybrid Tuner", Philips, PAL, | 251 | { "Philips TD1316 Hybrid Tuner", Philips, PAL, |
252 | 16*160.00,16*442.00,0xa1,0xa2,0xa4,0xc8,623 }, | 252 | 16*160.00,16*442.00,0xa1,0xa2,0xa4,0xc8,623 }, |
253 | { "Philips TUV1236D ATSC/NTSC dual in", Philips, ATSC, | ||
254 | 16*157.25,16*454.00,0x01,0x02,0x03,0xce,732 }, | ||
253 | }; | 255 | }; |
254 | 256 | ||
255 | unsigned const int tuner_count = ARRAY_SIZE(tuners); | 257 | unsigned const int tuner_count = ARRAY_SIZE(tuners); |
@@ -375,6 +377,17 @@ static void default_set_tv_freq(struct i2c_client *c, unsigned int freq) | |||
375 | /* Set the charge pump for fast tuning */ | 377 | /* Set the charge pump for fast tuning */ |
376 | tun->config |= TUNER_CHARGE_PUMP; | 378 | tun->config |= TUNER_CHARGE_PUMP; |
377 | break; | 379 | break; |
380 | |||
381 | case TUNER_PHILIPS_TUV1236D: | ||
382 | /* 0x40 -> ATSC antenna input 1 */ | ||
383 | /* 0x48 -> ATSC antenna input 2 */ | ||
384 | /* 0x00 -> NTSC antenna input 1 */ | ||
385 | /* 0x08 -> NTSC antenna input 2 */ | ||
386 | config &= ~0x40; | ||
387 | if (t->std & V4L2_STD_ATSC) | ||
388 | config |= 0x40; | ||
389 | /* FIXME: input */ | ||
390 | break; | ||
378 | } | 391 | } |
379 | 392 | ||
380 | /* | 393 | /* |