
From: "Uwe Bugla" <uwe.bugla@gmx.de>,
      Peter Hettkamp

I transformed Peter's attempt into a kernel-compatible patch.

The dvb frontend cx24110 is given back a send burst function which is
needed by the dvbstream-engine of MPlayer 1.0pre6a, for example.

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/media/dvb/frontends/cx24110.c |   24 ++++++++++++++++++++++++
 1 files changed, 24 insertions(+)

diff -puN drivers/media/dvb/frontends/cx24110.c~cx24110-conexant-frontend-update drivers/media/dvb/frontends/cx24110.c
--- 25/drivers/media/dvb/frontends/cx24110.c~cx24110-conexant-frontend-update	2005-03-07 22:19:19.000000000 -0800
+++ 25-akpm/drivers/media/dvb/frontends/cx24110.c	2005-03-07 22:19:19.000000000 -0800
@@ -403,6 +403,26 @@ static int cx24110_set_voltage (struct d
 	};
 }
 
+static int cx24110_diseqc_send_burst (struct dvb_frontend* fe, fe_sec_mini_cmd_t burst)
+{
+	int rv, bit, i;
+	struct cx24110_state *state = (struct cx24110_state*) fe->demodulator_priv;
+
+	if(burst==SEC_MINI_A) {bit=0x00;}
+	else if(burst==SEC_MINI_B) {bit=0x08;}
+	else return -EINVAL;
+
+	rv = cx24110_readreg(state, 0x77);
+	cx24110_writereg(state, 0x77, rv|0x04);
+
+	rv = cx24110_readreg(state, 0x76);
+	cx24110_writereg(state, 0x76, ((rv & 0x90) | 0x40 | bit));
+	for (i=500; i-- > 0 && !(cx24110_readreg(state,0x76)&0x40);)
+              ; /* wait for LNB ready */
+
+	return 0;
+}
+
 static int cx24110_send_diseqc_msg(struct dvb_frontend* fe,
 				    struct dvb_diseqc_master_cmd *cmd)
 {
@@ -412,6 +432,9 @@ static int cx24110_send_diseqc_msg(struc
 	for (i = 0; i < cmd->msg_len; i++)
 		cx24110_writereg(state, 0x79 + i, cmd->msg[i]);
 
+	rv = cx24110_readreg(state, 0x77);
+	cx24110_writereg(state, 0x77, rv|0x04);
+
 	rv = cx24110_readreg(state, 0x76);
 
 	cx24110_writereg(state, 0x76, ((rv & 0x90) | 0x40) | ((cmd->msg_len-3) & 3));
@@ -634,6 +657,7 @@ static struct dvb_frontend_ops cx24110_o
 	.diseqc_send_master_cmd = cx24110_send_diseqc_msg,
 	.set_tone = cx24110_set_tone,
 	.set_voltage = cx24110_set_voltage,
+	.diseqc_send_burst = cx24110_diseqc_send_burst,
 };
 
 module_param(debug, int, 0644);
_
