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 | 28 ++++++++++++++++++++++++++ 1 files changed, 28 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 Thu Mar 10 15:36:38 2005 +++ 25-akpm/drivers/media/dvb/frontends/cx24110.c Thu Mar 10 15:36:41 2005 @@ -403,6 +403,30 @@ 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 = 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 +436,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 +661,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); _