When v4l-dvb starts to support this card? You already have well tested patch for this purpose. But it still &quot;experimental&quot;. I had one doubt, i&#39;m not sure if we need all of those chips, that patch contain, cos this card has only cx88x &amp; mb86a16, so i exclude em, and it looks work.<br>
<br><br>diff -r 2a50a0a1c951 linux/drivers/media/video/cx88/cx88-cards.c<br>--- a/linux/drivers/media/video/cx88/cx88-cards.c    Sat Jan 23 00:14:32 2010 -0200<br>+++ b/linux/drivers/media/video/cx88/cx88-cards.c    Sun Jan 24 15:04:25 2010 +0300<br>
@@ -2120,6 +2120,18 @@<br>         } },<br>         .mpeg           = CX88_MPEG_DVB,<br>     },<br>+    [CX88_BOARD_TWINHAN_VP1027_DVBS] = {<br>+            .name           = &quot;Twinhan VP-1027 DVB-S&quot;,<br>+        .tuner_type     = TUNER_ABSENT,<br>
+        .radio_type     = UNSET,<br>+        .tuner_addr     = ADDR_UNSET,<br>+        .radio_addr     = ADDR_UNSET,<br>+        .input          = {{<br>+               .type   = CX88_VMUX_DVB,<br>+               .vmux   = 0,<br>
+            } },<br>+        .mpeg           = CX88_MPEG_DVB,<br>+    },<br> };<br> <br> /* ------------------------------------------------------------------ */<br>@@ -2584,6 +2596,10 @@<br>         .subvendor = 0xb034,<br>
         .subdevice = 0x3034,<br>         .card      = CX88_BOARD_PROF_7301,<br>+    }, {<br>+            .subvendor = 0x1822,<br>+                .subdevice = 0x0023,<br>+                .card      = CX88_BOARD_TWINHAN_VP1027_DVBS,<br>
     },<br> };<br> <br>@@ -3075,6 +3091,13 @@<br>         cx_set(MO_GP1_IO, 0x10);<br>         mdelay(50);<br>         break;<br>+<br>+    case CX88_BOARD_TWINHAN_VP1027_DVBS:<br>+        cx_write(MO_GP0_IO, 0x00003230);<br>
+        cx_write(MO_GP0_IO, 0x00003210);<br>+        msleep(1);<br>+        cx_write(MO_GP0_IO, 0x00001230);<br>+        break;<br>     }<br> }<br> <br>diff -r 2a50a0a1c951 linux/drivers/media/video/cx88/cx88-dvb.c<br>--- a/linux/drivers/media/video/cx88/cx88-dvb.c    Sat Jan 23 00:14:32 2010 -0200<br>
+++ b/linux/drivers/media/video/cx88/cx88-dvb.c    Sun Jan 24 15:04:25 2010 +0300<br>@@ -57,6 +57,7 @@<br> #include &quot;stv0900.h&quot;<br> #include &quot;stb6100.h&quot;<br> #include &quot;stb6100_proc.h&quot;<br>+#include &quot;mb86a16.h&quot;<br>
 <br> MODULE_DESCRIPTION(&quot;driver for cx2388x based DVB cards&quot;);<br> MODULE_AUTHOR(&quot;Chris Pascoe &lt;<a href="mailto:c.pascoe@itee.uq.edu.au">c.pascoe@itee.uq.edu.au</a>&gt;&quot;);<br>@@ -251,6 +252,10 @@<br>
     .if2           = 45600,<br> };<br> <br>+static struct mb86a16_config twinhan_vp1027 = {<br>+    .demod_address  = 0x08,<br>+};<br>+<br> #if defined(CONFIG_VIDEO_CX88_VP3054) || (defined(CONFIG_VIDEO_CX88_VP3054_MODULE) &amp;&amp; defined(MODULE))<br>
 static int dntv_live_dvbt_pro_demod_init(struct dvb_frontend* fe)<br> {<br>@@ -446,6 +451,30 @@<br>     return 0;<br> }<br> <br>+static int vp1027_set_voltage(struct dvb_frontend *fe,<br>+                    fe_sec_voltage_t voltage)<br>
+{<br>+    struct cx8802_dev *dev = fe-&gt;dvb-&gt;priv;<br>+    struct cx88_core *core = dev-&gt;core;<br>+    switch (voltage) {<br>+          case SEC_VOLTAGE_OFF:<br>+            dprintk(1, &quot;LNB Voltage OFF\n&quot;);<br>
+            cx_write(MO_GP0_IO, 0x00001230);<br>+            break;<br>+          case SEC_VOLTAGE_13:<br>+            dprintk(1, &quot;LNB SEC Voltage=13\n&quot;);<br>+            cx_write(MO_GP0_IO, 0x00001220);<br>+            break;<br>
+          case SEC_VOLTAGE_18:<br>+            dprintk(1, &quot;LNB SEC Voltage=18\n&quot;);<br>+            cx_write(MO_GP0_IO, 0x00001222);<br>+            break;<br>+    }<br>+    if (core-&gt;prev_set_voltage)<br>+          return core-&gt;prev_set_voltage(fe, voltage);<br>
+    return 0;<br>+};<br>+<br> static struct cx24123_config geniatech_dvbs_config = {<br>     .demod_address = 0x55,<br>     .set_ts_params = cx24123_set_ts_param,<br>@@ -1210,6 +1239,17 @@<br>         }<br>         break;<br>
         }<br>+    case CX88_BOARD_TWINHAN_VP1027_DVBS:<br>+        dev-&gt;ts_gen_cntrl = 0x00;<br>+        fe0-&gt;dvb.frontend = dvb_attach(mb86a16_attach,<br>+                        &amp;twinhan_vp1027,<br>+                        &amp;core-&gt;i2c_adap);<br>
+        if (fe0-&gt;dvb.frontend) {<br>+            core-&gt;prev_set_voltage = fe0-&gt;dvb.frontend-&gt;ops.set_voltage;<br>+            fe0-&gt;dvb.frontend-&gt;ops.set_voltage = vp1027_set_voltage;<br>+        }<br>+            break;<br>
+<br>     default:<br>         printk(KERN_ERR &quot;%s/2: The frontend of your DVB/ATSC card isn&#39;t supported yet\n&quot;,<br>                core-&gt;name);<br>diff -r 2a50a0a1c951 linux/drivers/media/video/cx88/cx88.h<br>
--- a/linux/drivers/media/video/cx88/cx88.h    Sat Jan 23 00:14:32 2010 -0200<br>+++ b/linux/drivers/media/video/cx88/cx88.h    Sun Jan 24 15:04:25 2010 +0300<br>@@ -240,6 +240,7 @@<br> #define CX88_BOARD_WINFAST_DTV1800H        81<br>
 #define CX88_BOARD_WINFAST_DTV2000H_J      82<br> #define CX88_BOARD_PROF_7301               83<br>+#define CX88_BOARD_TWINHAN_VP1027_DVBS     84<br> <br> enum cx88_itype {<br>     CX88_VMUX_COMPOSITE1 = 1,<br><br>