aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKirk Lapray <kirk.lapray@gmail.com>2005-11-09 00:37:04 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2005-11-09 10:56:14 -0500
commite976f93725ce16b4a493d40a6dd3bccbd74b9a8a (patch)
treea50459ae4835b8371469a918deb5f93a65594114
parentcf583ac40d06825bc850dc4f47627d7661aaa4f8 (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>
-rw-r--r--Documentation/video4linux/CARDLIST.cx881
-rw-r--r--Documentation/video4linux/CARDLIST.tuner1
-rw-r--r--drivers/media/video/cx88/cx88-cards.c49
-rw-r--r--drivers/media/video/cx88/cx88.h1
-rw-r--r--drivers/media/video/tuner-simple.c15
-rw-r--r--include/media/tuner.h2
6 files changed, 68 insertions, 1 deletions
diff --git a/Documentation/video4linux/CARDLIST.cx88 b/Documentation/video4linux/CARDLIST.cx88
index 8a14e3f44ca2..ca46fbf489d5 100644
--- a/Documentation/video4linux/CARDLIST.cx88
+++ b/Documentation/video4linux/CARDLIST.cx88
@@ -32,3 +32,4 @@
32 31 -> DViCO FusionHDTV 5 Gold [18ac:d500] 32 31 -> DViCO FusionHDTV 5 Gold [18ac:d500]
33 32 -> AverMedia UltraTV Media Center PCI 550 [1461:8011] 33 32 -> AverMedia UltraTV Media Center PCI 550 [1461:8011]
34 33 -> Kworld V-Stream Xpert DVD 34 33 -> Kworld V-Stream Xpert DVD
35 34 -> ATI HDTV Wonder [1002:a101]
diff --git a/Documentation/video4linux/CARDLIST.tuner b/Documentation/video4linux/CARDLIST.tuner
index 0e2ea497ad7f..ec840ca6f455 100644
--- a/Documentation/video4linux/CARDLIST.tuner
+++ b/Documentation/video4linux/CARDLIST.tuner
@@ -66,3 +66,4 @@ tuner=64 - LG TDVS-H062F/TUA6034
66tuner=65 - Ymec TVF66T5-B/DFF 66tuner=65 - Ymec TVF66T5-B/DFF
67tuner=66 - LG NTSC (TALN mini series) 67tuner=66 - LG NTSC (TALN mini series)
68tuner=67 - Philips TD1316 Hybrid Tuner 68tuner=67 - Philips TD1316 Hybrid Tuner
69tuner=68 - Philips TUV1236D ATSC/NTSC dual in
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};
827const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards); 856const 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};
963const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids); 996const 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
180enum cx88_itype { 181enum 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
255unsigned const int tuner_count = ARRAY_SIZE(tuners); 257unsigned 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 /*
diff --git a/include/media/tuner.h b/include/media/tuner.h
index 97e16bddf651..7cc74b1bb6ea 100644
--- a/include/media/tuner.h
+++ b/include/media/tuner.h
@@ -112,6 +112,8 @@
112#define TUNER_LG_NTSC_TALN_MINI 66 112#define TUNER_LG_NTSC_TALN_MINI 66
113#define TUNER_PHILIPS_TD1316 67 113#define TUNER_PHILIPS_TD1316 67
114 114
115#define TUNER_PHILIPS_TUV1236D 68 /* ATI HDTV Wonder */
116
115#define NOTUNER 0 117#define NOTUNER 0
116#define PAL 1 /* PAL_BG */ 118#define PAL 1 /* PAL_BG */
117#define PAL_I 2 119#define PAL_I 2