V4L/DVB (7287): cx88: add analog support for DVICO FusionHDTV7 Gold
authorSteven Toth <stoth@hauppauge.com>
Tue, 22 Apr 2008 17:45:34 +0000 (14:45 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Thu, 24 Apr 2008 17:07:46 +0000 (14:07 -0300)
Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Documentation/video4linux/CARDLIST.cx88
drivers/media/video/cx88/cx88-cards.c
drivers/media/video/cx88/cx88.h

index 423da1543815716f44aec1fcc1cb2701a3b9ce3f..b5f2134f16647798656bef5a927de1986205c0fe 100644 (file)
@@ -63,3 +63,4 @@
  62 -> PowerColor Real Angel 330                           [14f1:ea3d]
  63 -> Geniatech X8000-MT DVBT                             [14f1:8852]
  64 -> DViCO FusionHDTV DVB-T PRO                          [18ac:db30]
+ 65 -> DVICO FusionHDTV7 Gold                              [18ac:d610]
index bf58f350e2693b6da762ca8f771b955aa152fc30..8e29e48a86f3033c29a7cbf223fbdc027056f188 100644 (file)
@@ -1571,6 +1571,26 @@ static const struct cx88_board cx88_boards[] = {
               } },
               .mpeg           = CX88_MPEG_DVB,
        },
+       [CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD] = {
+               .name           = "DVICO FusionHDTV7 Gold",
+               .tuner_type     = TUNER_XC5000,
+               .radio_type     = UNSET,
+               .tuner_addr     = ADDR_UNSET,
+               .radio_addr     = ADDR_UNSET,
+               .input          = {{
+                       .type   = CX88_VMUX_TELEVISION,
+                       .vmux   = 0,
+                       .gpio0  = 0x37df,
+               },{
+                       .type   = CX88_VMUX_COMPOSITE1,
+                       .vmux   = 1,
+                       .gpio0  = 0x37df,
+               },{
+                       .type   = CX88_VMUX_SVIDEO,
+                       .vmux   = 2,
+                       .gpio0  = 0x37df,
+               }},
+       },
 };
 
 /* ------------------------------------------------------------------ */
@@ -1908,6 +1928,10 @@ static const struct cx88_subid cx88_subids[] = {
                .subvendor = 0x14f1,
                .subdevice = 0x8852,
                .card      = CX88_BOARD_GENIATECH_X8000_MT,
+       },{
+               .subvendor = 0x18ac,
+               .subdevice = 0xd610,
+               .card      = CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD,
        }
 };
 
@@ -2189,6 +2213,18 @@ static int cx88_xc5000_tuner_callback(void *priv, int command, int arg)
                        return -EINVAL;
                }
                break;
+       case CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD:
+               if (command == 0) { /* This is the reset command from xc5000 */
+                       cx_clear(MO_GP0_IO, 0x00000010);
+                       msleep(10);
+                       cx_set(MO_GP0_IO, 0x00000010);
+                       return 0;
+               } else {
+                       printk(KERN_ERR
+                               "xc5000: unknown tuner callback command.\n");
+                       return -EINVAL;
+               }
+               break;
        }
        return 0; /* Should never be here */
 }
@@ -2255,6 +2291,10 @@ static void cx88_card_setup_pre_i2c(struct cx88_core *core)
                cx_set(MO_GP0_IO, 0x00000080); /* 702 out of reset */
                udelay(1000);
                break;
+        case CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD:
+               /* Enable the xc5000 tuner */
+               cx_set(MO_GP0_IO, 0x00001010);
+               break;
        }
 }
 
index 9df3f198a4dfae2572b77070eec97717c3559a38..85a95a0a94d9f7688a96d7f8dc5a60e5e4c9aa7d 100644 (file)
@@ -217,6 +217,7 @@ extern struct sram_channel cx88_sram_channels[];
 #define CX88_BOARD_POWERCOLOR_REAL_ANGEL   62
 #define CX88_BOARD_GENIATECH_X8000_MT      63
 #define CX88_BOARD_DVICO_FUSIONHDTV_DVB_T_PRO 64
+#define CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD 65
 
 enum cx88_itype {
        CX88_VMUX_COMPOSITE1 = 1,