[linux-dvb] Twinhan 1027 (once again)

Sergey Ivanov 123kash at gmail.com
Mon Jan 25 10:02:08 CET 2010


When v4l-dvb starts to support this card? You already have well tested patch
for this purpose. But it still "experimental". I had one doubt, i'm not sure
if we need all of those chips, that patch contain, cos this card has only
cx88x & mb86a16, so i exclude em, and it looks work.


diff -r 2a50a0a1c951 linux/drivers/media/video/cx88/cx88-cards.c
--- a/linux/drivers/media/video/cx88/cx88-cards.c    Sat Jan 23 00:14:32
2010 -0200
+++ b/linux/drivers/media/video/cx88/cx88-cards.c    Sun Jan 24 15:04:25
2010 +0300
@@ -2120,6 +2120,18 @@
         } },
         .mpeg           = CX88_MPEG_DVB,
     },
+    [CX88_BOARD_TWINHAN_VP1027_DVBS] = {
+            .name           = "Twinhan VP-1027 DVB-S",
+        .tuner_type     = TUNER_ABSENT,
+        .radio_type     = UNSET,
+        .tuner_addr     = ADDR_UNSET,
+        .radio_addr     = ADDR_UNSET,
+        .input          = {{
+               .type   = CX88_VMUX_DVB,
+               .vmux   = 0,
+            } },
+        .mpeg           = CX88_MPEG_DVB,
+    },
 };

 /* ------------------------------------------------------------------ */
@@ -2584,6 +2596,10 @@
         .subvendor = 0xb034,
         .subdevice = 0x3034,
         .card      = CX88_BOARD_PROF_7301,
+    }, {
+            .subvendor = 0x1822,
+                .subdevice = 0x0023,
+                .card      = CX88_BOARD_TWINHAN_VP1027_DVBS,
     },
 };

@@ -3075,6 +3091,13 @@
         cx_set(MO_GP1_IO, 0x10);
         mdelay(50);
         break;
+
+    case CX88_BOARD_TWINHAN_VP1027_DVBS:
+        cx_write(MO_GP0_IO, 0x00003230);
+        cx_write(MO_GP0_IO, 0x00003210);
+        msleep(1);
+        cx_write(MO_GP0_IO, 0x00001230);
+        break;
     }
 }

diff -r 2a50a0a1c951 linux/drivers/media/video/cx88/cx88-dvb.c
--- a/linux/drivers/media/video/cx88/cx88-dvb.c    Sat Jan 23 00:14:32 2010
-0200
+++ b/linux/drivers/media/video/cx88/cx88-dvb.c    Sun Jan 24 15:04:25 2010
+0300
@@ -57,6 +57,7 @@
 #include "stv0900.h"
 #include "stb6100.h"
 #include "stb6100_proc.h"
+#include "mb86a16.h"

 MODULE_DESCRIPTION("driver for cx2388x based DVB cards");
 MODULE_AUTHOR("Chris Pascoe <c.pascoe at itee.uq.edu.au>");
@@ -251,6 +252,10 @@
     .if2           = 45600,
 };

+static struct mb86a16_config twinhan_vp1027 = {
+    .demod_address  = 0x08,
+};
+
 #if defined(CONFIG_VIDEO_CX88_VP3054) ||
(defined(CONFIG_VIDEO_CX88_VP3054_MODULE) && defined(MODULE))
 static int dntv_live_dvbt_pro_demod_init(struct dvb_frontend* fe)
 {
@@ -446,6 +451,30 @@
     return 0;
 }

+static int vp1027_set_voltage(struct dvb_frontend *fe,
+                    fe_sec_voltage_t voltage)
+{
+    struct cx8802_dev *dev = fe->dvb->priv;
+    struct cx88_core *core = dev->core;
+    switch (voltage) {
+          case SEC_VOLTAGE_OFF:
+            dprintk(1, "LNB Voltage OFF\n");
+            cx_write(MO_GP0_IO, 0x00001230);
+            break;
+          case SEC_VOLTAGE_13:
+            dprintk(1, "LNB SEC Voltage=13\n");
+            cx_write(MO_GP0_IO, 0x00001220);
+            break;
+          case SEC_VOLTAGE_18:
+            dprintk(1, "LNB SEC Voltage=18\n");
+            cx_write(MO_GP0_IO, 0x00001222);
+            break;
+    }
+    if (core->prev_set_voltage)
+          return core->prev_set_voltage(fe, voltage);
+    return 0;
+};
+
 static struct cx24123_config geniatech_dvbs_config = {
     .demod_address = 0x55,
     .set_ts_params = cx24123_set_ts_param,
@@ -1210,6 +1239,17 @@
         }
         break;
         }
+    case CX88_BOARD_TWINHAN_VP1027_DVBS:
+        dev->ts_gen_cntrl = 0x00;
+        fe0->dvb.frontend = dvb_attach(mb86a16_attach,
+                        &twinhan_vp1027,
+                        &core->i2c_adap);
+        if (fe0->dvb.frontend) {
+            core->prev_set_voltage = fe0->dvb.frontend->ops.set_voltage;
+            fe0->dvb.frontend->ops.set_voltage = vp1027_set_voltage;
+        }
+            break;
+
     default:
         printk(KERN_ERR "%s/2: The frontend of your DVB/ATSC card isn't
supported yet\n",
                core->name);
diff -r 2a50a0a1c951 linux/drivers/media/video/cx88/cx88.h
--- a/linux/drivers/media/video/cx88/cx88.h    Sat Jan 23 00:14:32 2010
-0200
+++ b/linux/drivers/media/video/cx88/cx88.h    Sun Jan 24 15:04:25 2010
+0300
@@ -240,6 +240,7 @@
 #define CX88_BOARD_WINFAST_DTV1800H        81
 #define CX88_BOARD_WINFAST_DTV2000H_J      82
 #define CX88_BOARD_PROF_7301               83
+#define CX88_BOARD_TWINHAN_VP1027_DVBS     84

 enum cx88_itype {
     CX88_VMUX_COMPOSITE1 = 1,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.linuxtv.org/pipermail/linux-dvb/attachments/20100125/6f4c9efc/attachment.htm>


More information about the linux-dvb mailing list