[linux-dvb] [PATCH] Geniatech Digistar support/Digiwave 103g

Saqeb Akhter johoja at gmail.com
Sun Jun 25 21:08:02 CEST 2006


#Sign-off:Saqeb Akhter
#Changes: Fix set_voltage bug? , Geniatech Digistar support aka Digiwave
103g
diff -r 914c7104feef linux/drivers/media/dvb/frontends/cx24123.c
--- a/linux/drivers/media/dvb/frontends/cx24123.c    Sun Jun 25 12:47:36
2006
+++ b/linux/drivers/media/dvb/frontends/cx24123.c    Sun Jun 25 15:06:26
2006
@@ -681,10 +681,10 @@
     switch (voltage) {
     case SEC_VOLTAGE_13:
         dprintk("%s: setting voltage 13V\n", __FUNCTION__);
-        return cx24123_writereg(state, 0x29, val | 0x80);
+        return cx24123_writereg(state, 0x29, val & 0x7f);
     case SEC_VOLTAGE_18:
         dprintk("%s: setting voltage 18V\n", __FUNCTION__);
-        return cx24123_writereg(state, 0x29, val & 0x7f);
+        return cx24123_writereg(state, 0x29, val | 0x80);
     default:
         return -EINVAL;
     };
diff -r 914c7104feef linux/drivers/media/video/cx88/cx88-cards.c
--- a/linux/drivers/media/video/cx88/cx88-cards.c    Sun Jun 25 12:47:36
2006
+++ b/linux/drivers/media/video/cx88/cx88-cards.c    Sun Jun 25 15:06:26
2006
@@ -1227,6 +1227,24 @@
         }},
         .dvb            = 1,
     },
+
+[CX88_BOARD_GENIATECH_DVBS] = {
+              .name    = "Geniatech DVB-S",
+              .tuner_type    = TUNER_ABSENT,
+              .radio_type    = UNSET,
+              .tuner_addr    = ADDR_UNSET,
+              .radio_addr    = ADDR_UNSET,
+              .input  = {{
+                     .type  = CX88_VMUX_DVB,
+                     .vmux  = 0,
+              },{
+                     .type  = CX88_VMUX_COMPOSITE1,
+                     .vmux  = 1,
+              }},
+             .dvb      = 1,
+       },
+
+
 };
 const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);

@@ -1472,6 +1490,12 @@
         .subvendor = 0x18ac,
         .subdevice = 0xd800, /* FusionHDTV 3 Gold (original revision) */
         .card      = CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q,
+    },{
+
+         .subvendor = 0x14f1,
+         .subdevice = 0x0084,
+                .card      = CX88_BOARD_GENIATECH_DVBS,
+
     },
 };
 const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);
diff -r 914c7104feef linux/drivers/media/video/cx88/cx88-dvb.c
--- a/linux/drivers/media/video/cx88/cx88-dvb.c    Sun Jun 25 12:47:36 2006
+++ b/linux/drivers/media/video/cx88/cx88-dvb.c    Sun Jun 25 15:06:26 2006
@@ -497,6 +497,29 @@
     return 0;
 }

+static int geniatech_dvbs_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:
+              printk("%s: LNB Voltage OFF\n", __func__);
+              cx_write(MO_GP0_IO, 0x0000efff);
+              break;
+       default:
+              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,
+};
+
+
 static struct cx24123_config hauppauge_novas_config = {
     .demod_address        = 0x55,
     .set_ts_params        = cx24123_set_ts_param,
@@ -761,6 +784,16 @@
             dev->dvb.frontend->ops.set_voltage =
kworld_dvbs_100_set_voltage;
         }
         break;
+
+
+    case CX88_BOARD_GENIATECH_DVBS:
+              dev->dvb.frontend = cx24123_attach(&geniatech_dvbs_config,
+                     &dev->core->i2c_adap);
+              if (dev->dvb.frontend) {
+             dev->core->prev_set_voltage = dev->dvb.frontend->
ops.set_voltage;
+                     dev->dvb.frontend->ops.set_voltage =
geniatech_dvbs_set_voltage;
+             }
+              break;
 #endif
     default:
         printk("%s: The frontend of your DVB/ATSC card isn't supported
yet\n",
diff -r 914c7104feef linux/drivers/media/video/cx88/cx88.h
--- a/linux/drivers/media/video/cx88/cx88.h    Sun Jun 25 12:47:36 2006
+++ b/linux/drivers/media/video/cx88/cx88.h    Sun Jun 25 15:06:26 2006
@@ -204,6 +204,7 @@
 #define CX88_BOARD_PIXELVIEW_PLAYTV_P7000  49
 #define CX88_BOARD_NPGTECH_REALTV_TOP10FM  50
 #define CX88_BOARD_WINFAST_DTV2000H        51
+#define CX88_BOARD_GENIATECH_DVBS         52

 enum cx88_itype {
     CX88_VMUX_COMPOSITE1 = 1,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.linuxtv.org/pipermail/linux-dvb/attachments/20060625/50e9a3c2/attachment.htm


More information about the linux-dvb mailing list