This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: dvb-frontend/mxl5xx: add support for physical layer scrambling
Author:  Daniel Scheller <d.schel...@gmx.net>
Date:    Wed Dec 20 11:29:48 2017 -0500

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 <r...@metzlerbros.de>, adapted to the different naming
of the pls property (pls vs. scrambling_sequence_index).

Cc: Ralph Metzler <r...@metzlerbros.de>
Signed-off-by: Daniel Scheller <d.schel...@gmx.net>
Signed-off-by: Mauro Carvalho Chehab <mche...@s-opensource.com>

 drivers/media/dvb-frontends/mxl5xx.c | 34 +++++++++++++++++++++++++++++++++-
 1 file changed, 33 insertions(+), 1 deletion(-)

---

diff --git a/drivers/media/dvb-frontends/mxl5xx.c 
b/drivers/media/dvb-frontends/mxl5xx.c
index e899821018a0..483ee7d6198e 100644
--- a/drivers/media/dvb-frontends/mxl5xx.c
+++ b/drivers/media/dvb-frontends/mxl5xx.c
@@ -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;

_______________________________________________
linuxtv-commits mailing list
linuxtv-commits@linuxtv.org
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to