[PATCH] v4l: 712: added analog support for ati hdtv wonder
authorKirk Lapray <kirk.lapray@gmail.com>
Wed, 9 Nov 2005 05:37:04 +0000 (21:37 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Wed, 9 Nov 2005 15:56:14 +0000 (07:56 -0800)
- 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>
Documentation/video4linux/CARDLIST.cx88
Documentation/video4linux/CARDLIST.tuner
drivers/media/video/cx88/cx88-cards.c
drivers/media/video/cx88/cx88.h
drivers/media/video/tuner-simple.c
include/media/tuner.h

index 8a14e3f..ca46fbf 100644 (file)
@@ -32,3 +32,4 @@
  31 -> DViCO FusionHDTV 5 Gold                             [18ac:d500]
  32 -> AverMedia UltraTV Media Center PCI 550              [1461:8011]
  33 -> Kworld V-Stream Xpert DVD
+ 34 -> ATI HDTV Wonder                                     [1002:a101]
index 0e2ea49..ec840ca 100644 (file)
@@ -66,3 +66,4 @@ tuner=64 - LG TDVS-H062F/TUA6034
 tuner=65 - Ymec TVF66T5-B/DFF
 tuner=66 - LG NTSC (TALN mini series)
 tuner=67 - Philips TD1316 Hybrid Tuner
+tuner=68 - Philips TUV1236D ATSC/NTSC dual in
index 888d25d..3884407 100644 (file)
@@ -823,6 +823,35 @@ struct cx88_board cx88_boards[] = {
                         .gpio3  = 0x00100000,
                  }},
        },
+       [CX88_BOARD_ATI_HDTVWONDER] = {
+               .name           = "ATI HDTV Wonder",
+               .tuner_type     = TUNER_PHILIPS_TUV1236D,
+               .radio_type     = UNSET,
+               .tuner_addr     = ADDR_UNSET,
+               .radio_addr     = ADDR_UNSET,
+               .input          = {{
+                       .type   = CX88_VMUX_TELEVISION,
+                       .vmux   = 0,
+                       .gpio0  = 0x00000ff7,
+                       .gpio1  = 0x000000ff,
+                       .gpio2  = 0x00000001,
+                       .gpio3  = 0x00000000,
+               },{
+                       .type   = CX88_VMUX_COMPOSITE1,
+                       .vmux   = 1,
+                       .gpio0  = 0x00000ffe,
+                       .gpio1  = 0x000000ff,
+                       .gpio2  = 0x00000001,
+                       .gpio3  = 0x00000000,
+               },{
+                       .type   = CX88_VMUX_SVIDEO,
+                       .vmux   = 2,
+                       .gpio0  = 0x00000ffe,
+                       .gpio1  = 0x000000ff,
+                       .gpio2  = 0x00000001,
+                       .gpio3  = 0x00000000,
+               }},
+       },
 };
 const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);
 
@@ -958,6 +987,10 @@ struct cx88_subid cx88_subids[] = {
                .subvendor = 0x1461,
                .subdevice = 0x8011,
                .card      = CX88_BOARD_AVERMEDIA_ULTRATV_MC_550,
+       },{
+               .subvendor = PCI_VENDOR_ID_ATI,
+               .subdevice = 0xa101,
+               .card      = CX88_BOARD_ATI_HDTVWONDER,
        },
 };
 const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
@@ -1159,6 +1192,22 @@ void cx88_card_setup(struct cx88_core *core)
                cx_clear(MO_GP0_IO, 0x00000007);
                cx_set(MO_GP2_IO, 0x00000101);
                break;
+       case CX88_BOARD_ATI_HDTVWONDER:
+               if (0 == core->i2c_rc) {
+                       /* enable tuner */
+                       int i;
+                       u8 buffer[12];
+                       core->i2c_client.addr = 0x0a;
+                       buffer[0] = 0x10; buffer[1] = 0x12; buffer[2] = 0x13; buffer[3] = 0x04;
+                       buffer[4] = 0x16; buffer[5] = 0x00; buffer[6] = 0x14; buffer[7] = 0x04;
+                       buffer[8] = 0x14; buffer[9] = 0x00; buffer[10] = 0x17; buffer[11] = 0x00;
+
+                       for (i = 0; i < 6; i++)
+                               if (2 != i2c_master_send(&core->i2c_client,&buffer[i*2],2))
+                                       printk(KERN_WARNING "%s: Unable to enable tuner(%i).\n",
+                                               core->name, i);
+               }
+               break;
        }
        if (cx88_boards[core->board].radio.type == CX88_RADIO)
                core->has_radio = 1;
index 9b62922..cc2197a 100644 (file)
@@ -176,6 +176,7 @@ extern struct sram_channel cx88_sram_channels[];
 #define CX88_BOARD_DVICO_FUSIONHDTV_5_GOLD 31
 #define CX88_BOARD_AVERMEDIA_ULTRATV_MC_550 32
 #define CX88_BOARD_KWORLD_VSTREAM_EXPERT_DVD 33
+#define CX88_BOARD_ATI_HDTVWONDER          34
 
 enum cx88_itype {
        CX88_VMUX_COMPOSITE1 = 1,
index b75ad2d..e67d9e7 100644 (file)
@@ -233,7 +233,7 @@ static struct tunertype tuners[] = {
        { "Ymec TVision TVF-5533MF", Philips, NTSC,
          16*160.00,16*454.00,0x01,0x02,0x04,0x8e,732},
 
-       /* 60-67 */
+       /* 60-68 */
        { "Thomson DDT 7611 (ATSC/NTSC)", THOMSON, ATSC,
          16*157.25,16*454.00,0x39,0x3a,0x3c,0x8e,732},
        { "Tena TNF9533-D/IF/TNF9533-B/DF", Philips, PAL,
@@ -250,6 +250,8 @@ static struct tunertype tuners[] = {
          16*137.25,16*373.25,0x01,0x02,0x08,0x8e,732 },
        { "Philips TD1316 Hybrid Tuner", Philips, PAL,
          16*160.00,16*442.00,0xa1,0xa2,0xa4,0xc8,623 },
+       { "Philips TUV1236D ATSC/NTSC dual in", Philips, ATSC,
+         16*157.25,16*454.00,0x01,0x02,0x03,0xce,732 },
 };
 
 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)
                /* Set the charge pump for fast tuning */
                tun->config |= TUNER_CHARGE_PUMP;
                break;
+
+       case TUNER_PHILIPS_TUV1236D:
+               /* 0x40 -> ATSC antenna input 1 */
+               /* 0x48 -> ATSC antenna input 2 */
+               /* 0x00 -> NTSC antenna input 1 */
+               /* 0x08 -> NTSC antenna input 2 */
+               config &= ~0x40;
+               if (t->std & V4L2_STD_ATSC)
+                       config |= 0x40;
+               /* FIXME: input */
+               break;
        }
 
        /*
index 97e16bd..7cc74b1 100644 (file)
 #define TUNER_LG_NTSC_TALN_MINI                66
 #define TUNER_PHILIPS_TD1316           67
 
+#define TUNER_PHILIPS_TUV1236D         68      /* ATI HDTV Wonder */
+
 #define NOTUNER 0
 #define PAL     1      /* PAL_BG */
 #define PAL_I   2