V4L/DVB (6852): xc2028: s-code offset should not modify internal control structure
Don't modify the control structure that was provided at attach when applying
an offset to the S-Code, otherwise it will be incorrect on subsequent tunes.
Signed-off-by: Chris Pascoe <c.pascoe@itee.uq.edu.au>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
diff --git a/drivers/media/video/tuner-xc2028.c b/drivers/media/video/tuner-xc2028.c
index 416c717..81cc7f6 100644
--- a/drivers/media/video/tuner-xc2028.c
+++ b/drivers/media/video/tuner-xc2028.c
@@ -956,6 +956,7 @@
struct xc2028_data *priv = fe->tuner_priv;
unsigned int type=0;
fe_bandwidth_t bw = BANDWIDTH_8_MHZ;
+ u16 demod = 0;
tuner_dbg("%s called\n", __FUNCTION__);
@@ -1009,10 +1010,10 @@
/* All S-code tables need a 200kHz shift */
if (priv->ctrl.demod)
- priv->ctrl.demod += 200;
+ demod = priv->ctrl.demod + 200;
return generic_set_freq(fe, p->frequency,
- T_DIGITAL_TV, type, 0, priv->ctrl.demod);
+ T_DIGITAL_TV, type, 0, demod);
}
static int xc2028_sleep(struct dvb_frontend *fe)