V4L/DVB (7742): cx88: Add support for the DViCO FusionHDTV_7_GOLD digital modes
authorSteven Toth <stoth@hauppauge.com>
Fri, 25 Apr 2008 06:46:43 +0000 (03:46 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sat, 26 Apr 2008 12:29:56 +0000 (09:29 -0300)
The S5H1411 demodulator is now enabled.

Signed-off-by: Steven Toth <stoth@hauppauge.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/video/cx88/Kconfig
drivers/media/video/cx88/cx88-cards.c
drivers/media/video/cx88/cx88-dvb.c

index bcf6d9b..27635cd 100644 (file)
@@ -58,6 +58,7 @@ config VIDEO_CX88_DVB
        select DVB_CX24123 if !DVB_FE_CUSTOMISE
        select DVB_ISL6421 if !DVB_FE_CUSTOMISE
        select TUNER_SIMPLE if !DVB_FE_CUSTOMISE
+       select DVB_S5H1411 if !DVB_FE_CUSTOMISE
        ---help---
          This adds support for DVB/ATSC cards based on the
          Conexant 2388x chip.
index 620159d..2b6b283 100644 (file)
@@ -1591,6 +1591,7 @@ static const struct cx88_board cx88_boards[] = {
                        .vmux   = 2,
                        .gpio0  = 0x16d9,
                }},
+               .mpeg           = CX88_MPEG_DVB,
        },
        [CX88_BOARD_PROLINK_PV_8000GT] = {
                .name           = "Prolink Pixelview MPEG 8000GT",
index f1251b8..1c7fe68 100644 (file)
@@ -47,6 +47,7 @@
 #include "isl6421.h"
 #include "tuner-simple.h"
 #include "tda9887.h"
+#include "s5h1411.h"
 
 MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
 MODULE_AUTHOR("Chris Pascoe <c.pascoe@itee.uq.edu.au>");
@@ -463,6 +464,22 @@ static struct zl10353_config cx88_geniatech_x8000_mt = {
        .no_tuner = 1,
 };
 
+static struct s5h1411_config dvico_fusionhdtv7_config = {
+       .output_mode   = S5H1411_SERIAL_OUTPUT,
+       .gpio          = S5H1411_GPIO_ON,
+       .mpeg_timing   = S5H1411_MPEGTIMING_CONTINOUS_NONINVERTING_CLOCK,
+       .qam_if        = S5H1411_IF_44000,
+       .vsb_if        = S5H1411_IF_44000,
+       .inversion     = S5H1411_INVERSION_OFF,
+       .status_mode   = S5H1411_DEMODLOCKING
+};
+
+static struct xc5000_config dvico_fusionhdtv7_tuner_config = {
+       .i2c_address    = 0xc2 >> 1,
+       .if_khz         = 5380,
+       .tuner_callback = cx88_tuner_callback,
+};
+
 static int attach_xc3028(u8 addr, struct cx8802_dev *dev)
 {
        struct dvb_frontend *fe;
@@ -844,6 +861,21 @@ static int dvb_register(struct cx8802_dev *dev)
                if (attach_xc3028(0x61, dev) < 0)
                        return -EINVAL;
                break;
+       case CX88_BOARD_DVICO_FUSIONHDTV_7_GOLD:
+               dev->dvb.frontend = dvb_attach(s5h1411_attach,
+                                              &dvico_fusionhdtv7_config,
+                                              &dev->core->i2c_adap);
+               if (dev->dvb.frontend != NULL) {
+                       /* tuner_config.video_dev must point to
+                        * i2c_adap.algo_data
+                        */
+                       dvico_fusionhdtv7_tuner_config.priv =
+                                               dev->core->i2c_adap.algo_data;
+                       dvb_attach(xc5000_attach, dev->dvb.frontend,
+                                  &dev->core->i2c_adap,
+                                  &dvico_fusionhdtv7_tuner_config);
+               }
+               break;
        default:
                printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card isn't supported yet\n",
                       dev->core->name);