stv090x: Multistream support
PATCH 1/1 stv090x: Multistream support
Multistream support for stv090x
Signed-off-by Evgeny Plehov <[email protected]>
drivers/media/dvb-frontends/stv090x.c +32 -0
@@ -3425,6 +3425,33 @@ err:return -1 ; } +static int stv090x_set_mis (struct stv090x_state *state,int mis) +{ +u32 reg; + +if (mis <0 || mis >255 ) { +dprintk (FE_DEBUG ,1 ,"Disable MIS filtering" ); + reg =STV090x_READ_DEMOD (state,PDELCTRL1 ); +STV090x_SETFIELD_Px (reg,FILTER_EN_FIELD ,0x00 ); +if (STV090x_WRITE_DEMOD (state,PDELCTRL1 , reg) <0 ) + goto err; + }else { +dprintk (FE_DEBUG ,1 ,"Enable MIS filtering - %d" , mis); + reg =STV090x_READ_DEMOD (state,PDELCTRL1 ); +STV090x_SETFIELD_Px (reg,FILTER_EN_FIELD ,0x01 ); +if (STV090x_WRITE_DEMOD (state,PDELCTRL1 , reg) <0 ) + goto err; +if (STV090x_WRITE_DEMOD (state,ISIENTRY , mis) <0 ) + goto err; +if (STV090x_WRITE_DEMOD (state,ISIBITENA ,0xff ) <0 ) + goto err; + } +return 0 ; +err: +dprintk (FE_ERROR ,1 ,"I/O error" ); +return -1 ; +} +static enum dvbfe_search stv090x_search (struct dvb_frontend *fe) {struct stv090x_state *state = fe->demodulator_priv;
@@ -3447,6 +3474,8 @@ static enum dvbfe_search stv090x_search(struct dvb_frontend *fe) state->search_range =5000000 ; } +stv090x_set_mis (state, props->stream_id); +if (stv090x_algo (state) == STV090x_RANGEOK) {dprintk (FE_DEBUG ,1 ,"Search success!" );return DVBFE_ALGO_SEARCH_SUCCESS ;
@@ -4798,6 +4827,9 @@ struct dvb_frontend *stv090x_attach(const struct stv090x_config *config, } } +if (state->internal->dev_ver >=0x30 ) + state->frontend.ops.info.caps |=FE_CAN_MULTISTREAM ; +/* workaround for stuck DiSEqC output */ if (config->diseqc_envelope_mode)stv090x_send_diseqc_burst (&state->frontend,SEC_MINI_A );