dvb-frontend/mxl5xx: add support for physical layer scrambling
Subsystems (2)
PATCH 1/1 dvb-frontend/mxl5xx: add support for physical layer scrambling
From: Daniel Scheller <[email protected]>
The MaxLinear MxL5xx has support for physical layer scrambling, which was recently added to the DVB core via the new scrambling_sequence_index property. Add required bits to the mxl5xx driver.
Picked up from dddvb master, commit 5c032058b9ba ("add support for PLS") by Ralph Metzler <[email protected]>, adapted to the different naming of the pls property (pls vs. scrambling_sequence_index).
Cc Ralph Metzler <[email protected]>
Signed-off-by Daniel Scheller <[email protected]>
---
NB, I'm also prepping up another set of patches that enable the stv0910 driver to handle the recently added PLS support.
drivers/media/dvb-frontends/mxl5xx.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-)
drivers/media/dvb-frontends/mxl5xx.c +33 -1
@@ -380,6 +380,38 @@ static int get_algo(struct dvb_frontend *fe)return DVBFE_ALGO_HW ; } +static u32 gold2root (u32 gold) +{ +u32 x, g, tmp = gold; + +if (tmp >=0x3ffff ) + tmp =0 ; +for (g =0 , x =1 ; g < tmp; g++) + x = (((x ^ (x >>7 )) &1 ) <<17 ) | (x >>1 ); +return x; +} + +static int cfg_scrambler (struct mxl *state,u32 gold) +{ +u32 root; +u8 buf[26 ] = { +MXL_HYDRA_PLID_CMD_WRITE ,24 , +0 ,MXL_HYDRA_DEMOD_SCRAMBLE_CODE_CMD ,0 ,0 , + state->demod,0 ,0 ,0 , +0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 , +0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 , + }; + + root =gold2root (gold); + + buf[25 ] = (root >>24 ) &0xff ; + buf[24 ] = (root >>16 ) &0xff ; + buf[23 ] = (root >>8 ) &0xff ; + buf[22 ] = root &0xff ; + +return send_command (state,sizeof (buf), buf); +} +static int cfg_demod_abort_tune (struct mxl *state) {struct MXL_HYDRA_DEMOD_ABORT_TUNE_T abort_tune_cmd;
@@ -437,7 +469,7 @@ static int set_parameters(struct dvb_frontend *fe) demod_chan_cfg.roll_off =MXL_HYDRA_ROLLOFF_AUTO ; demod_chan_cfg.modulation_scheme =MXL_HYDRA_MOD_AUTO ; demod_chan_cfg.pilots =MXL_HYDRA_PILOTS_AUTO ; -/* cfg_scrambler(state); */ +cfg_scrambler (state, p->scrambling_sequence_index);break ;default :return -EINVAL ;
Signature · 1 line
2.13.6