#Sign-off:Saqeb Akhter<br>#Changes: Fix set_voltage bug? , Geniatech Digistar support aka Digiwave 103g<br>diff -r 914c7104feef linux/drivers/media/dvb/frontends/cx24123.c<br>--- a/linux/drivers/media/dvb/frontends/cx24123.c&nbsp;&nbsp;&nbsp; Sun Jun 25 12:47:36 2006
<br>+++ b/linux/drivers/media/dvb/frontends/cx24123.c&nbsp;&nbsp;&nbsp; Sun Jun 25 15:06:26 2006<br>@@ -681,10 +681,10 @@<br>&nbsp;&nbsp;&nbsp;&nbsp; switch (voltage) {<br>&nbsp;&nbsp;&nbsp;&nbsp; case SEC_VOLTAGE_13:<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dprintk(&quot;%s: setting voltage 13V\n&quot;, __FUNCTION__);
<br>-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return cx24123_writereg(state, 0x29, val | 0x80);<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return cx24123_writereg(state, 0x29, val &amp; 0x7f);<br>&nbsp;&nbsp;&nbsp;&nbsp; case SEC_VOLTAGE_18:<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dprintk(&quot;%s: setting voltage 18V\n&quot;, __FUNCTION__);
<br>-&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return cx24123_writereg(state, 0x29, val &amp; 0x7f);<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return cx24123_writereg(state, 0x29, val | 0x80);<br>&nbsp;&nbsp;&nbsp;&nbsp; default:<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return -EINVAL;<br>&nbsp;&nbsp;&nbsp;&nbsp; };<br>diff -r 914c7104feef linux/drivers/media/video/cx88/cx88-
cards.c<br>--- a/linux/drivers/media/video/cx88/cx88-cards.c&nbsp;&nbsp;&nbsp; Sun Jun 25 12:47:36 2006<br>+++ b/linux/drivers/media/video/cx88/cx88-cards.c&nbsp;&nbsp;&nbsp; Sun Jun 25 15:06:26 2006<br>@@ -1227,6 +1227,24 @@<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }},<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; .dvb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 1,
<br>&nbsp;&nbsp;&nbsp;&nbsp; },<br>+<br>+[CX88_BOARD_GENIATECH_DVBS] = {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .name&nbsp;&nbsp;&nbsp; = &quot;Geniatech DVB-S&quot;,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .tuner_type&nbsp;&nbsp;&nbsp; = TUNER_ABSENT,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .radio_type&nbsp;&nbsp;&nbsp; = UNSET,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .tuner_addr&nbsp;&nbsp;&nbsp; = ADDR_UNSET,
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .radio_addr&nbsp;&nbsp;&nbsp; = ADDR_UNSET,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .input&nbsp; = {{<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .type&nbsp; = CX88_VMUX_DVB,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .vmux&nbsp; = 0,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },{<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .type&nbsp; = CX88_VMUX_COMPOSITE1,
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .vmux&nbsp; = 1,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }},<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .dvb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 1,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; },<br>+<br>+<br>&nbsp;};<br>&nbsp;const unsigned int cx88_bcount = ARRAY_SIZE(cx88_boards);<br>&nbsp;<br>@@ -1472,6 +1490,12 @@<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; .subvendor = 0x18ac,
<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; .subdevice = 0xd800, /* FusionHDTV 3 Gold (original revision) */<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; .card&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = CX88_BOARD_DVICO_FUSIONHDTV_3_GOLD_Q,<br>+&nbsp;&nbsp;&nbsp; },{<br>+<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;.subvendor = 0x14f1,<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;.subdevice = 0x0084,
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;.card&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = CX88_BOARD_GENIATECH_DVBS,<br>+<br>&nbsp;&nbsp;&nbsp;&nbsp; },<br>&nbsp;};<br>&nbsp;const unsigned int cx88_idcount = ARRAY_SIZE(cx88_subids);<br>diff -r 914c7104feef linux/drivers/media/video/cx88/cx88-dvb.c<br>--- a/linux/drivers/media/video/cx88/cx88-
dvb.c&nbsp;&nbsp;&nbsp; Sun Jun 25 12:47:36 2006<br>+++ b/linux/drivers/media/video/cx88/cx88-dvb.c&nbsp;&nbsp;&nbsp; Sun Jun 25 15:06:26 2006<br>@@ -497,6 +497,29 @@<br>&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>&nbsp;}<br>&nbsp;<br>+static int geniatech_dvbs_set_voltage(struct dvb_frontend *fe, fe_sec_voltage_t voltage)
<br>+{<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct cx8802_dev *dev= fe-&gt;dvb-&gt;priv;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct cx88_core *core = dev-&gt;core;<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; switch (voltage) {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; case SEC_VOLTAGE_OFF:<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printk(&quot;%s: LNB Voltage OFF\n&quot;, __func__);
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cx_write(MO_GP0_IO, 0x0000efff);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default:<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>+&nbsp;&nbsp;&nbsp; if (core-&gt;prev_set_voltage)<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; return core-&gt;prev_set_voltage(fe, voltage);
<br>+return 0;<br>+}<br>+<br>+static struct cx24123_config geniatech_dvbs_config = {<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .demod_address&nbsp; = 0x55,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .set_ts_params&nbsp; = cx24123_set_ts_param,<br>+};<br>+<br>+<br>&nbsp;static struct cx24123_config hauppauge_novas_config = {
<br>&nbsp;&nbsp;&nbsp;&nbsp; .demod_address&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; = 0x55,<br>&nbsp;&nbsp;&nbsp;&nbsp; .set_ts_params&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; = cx24123_set_ts_param,<br>@@ -761,6 +784,16 @@<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; dev-&gt;dvb.frontend-&gt;ops.set_voltage = kworld_dvbs_100_set_voltage;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; break;<br>+<br>+<br>+&nbsp;&nbsp;&nbsp; case CX88_BOARD_GENIATECH_DVBS:<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dev-&gt;dvb.frontend = cx24123_attach(&amp;geniatech_dvbs_config,<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;dev-&gt;core-&gt;i2c_adap);<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dev-&gt;
dvb.frontend) {<br>+&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; dev-&gt;core-&gt;prev_set_voltage = dev-&gt;dvb.frontend-&gt;ops.set_voltage;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dev-&gt;dvb.frontend-&gt;ops.set_voltage = geniatech_dvbs_set_voltage;<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<br>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;#endif<br>&nbsp;&nbsp;&nbsp;&nbsp; default:<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printk(&quot;%s: The frontend of your DVB/ATSC card isn't supported yet\n&quot;,<br>diff -r 914c7104feef linux/drivers/media/video/cx88/cx88.h<br>--- a/linux/drivers/media/video/cx88/cx88.h&nbsp;&nbsp;&nbsp; Sun Jun 25 12:47:36 2006
<br>+++ b/linux/drivers/media/video/cx88/cx88.h&nbsp;&nbsp;&nbsp; Sun Jun 25 15:06:26 2006<br>@@ -204,6 +204,7 @@<br>&nbsp;#define CX88_BOARD_PIXELVIEW_PLAYTV_P7000&nbsp; 49<br>&nbsp;#define CX88_BOARD_NPGTECH_REALTV_TOP10FM&nbsp; 50<br>&nbsp;#define CX88_BOARD_WINFAST_DTV2000H&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51
<br>+#define CX88_BOARD_GENIATECH_DVBS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 52<br>&nbsp;<br>&nbsp;enum cx88_itype {<br>&nbsp;&nbsp;&nbsp;&nbsp; CX88_VMUX_COMPOSITE1 = 1,<br><br>