Browse Source

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>
Chris Pascoe 17 years ago
parent
commit
ad35ce9e3e
1 changed files with 3 additions and 2 deletions
  1. 3 2
      drivers/media/video/tuner-xc2028.c

+ 3 - 2
drivers/media/video/tuner-xc2028.c

@@ -956,6 +956,7 @@ static int xc2028_set_params(struct dvb_frontend *fe,
 	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 @@ static int xc2028_set_params(struct dvb_frontend *fe,
 
 	/* 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)