From: "Uwe Bugla" , 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 --- 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); _