#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,
_______________________________________________ linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb