diff options
author | Andrew de Quincey <adq_dvb@lidskialf.net> | 2006-04-18 16:47:10 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-06-25 00:58:42 -0400 |
commit | e9f9c0d87b1d532b82618bc154246e2dba20934b (patch) | |
tree | 295476e0cc4dbe0308a2888ddef4a1de85f492cb /drivers/media/dvb/frontends/sp8870.c | |
parent | 085542dc8611d969ef698120c98288e24d5f4f9d (diff) |
V4L/DVB (3857): Convert sp8870 to refactored tuner code
Convert to tuner_ops calls.
Remove pll function pointers from structure.
Remove unneeded tuner calls.
Add i2c gate control function.
Signed-off-by: Andrew de Quincey <adq_dvb@lidskialf.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'drivers/media/dvb/frontends/sp8870.c')
-rw-r--r-- | drivers/media/dvb/frontends/sp8870.c | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/drivers/media/dvb/frontends/sp8870.c b/drivers/media/dvb/frontends/sp8870.c index 73829e647e50..4d553c0dabb3 100644 --- a/drivers/media/dvb/frontends/sp8870.c +++ b/drivers/media/dvb/frontends/sp8870.c | |||
@@ -262,9 +262,10 @@ static int sp8870_set_frontend_parameters (struct dvb_frontend* fe, | |||
262 | sp8870_microcontroller_stop(state); | 262 | sp8870_microcontroller_stop(state); |
263 | 263 | ||
264 | // set tuner parameters | 264 | // set tuner parameters |
265 | sp8870_writereg(state, 0x206, 0x001); | 265 | if (fe->ops->tuner_ops.set_params) { |
266 | state->config->pll_set(fe, p); | 266 | fe->ops->tuner_ops.set_params(fe, p); |
267 | sp8870_writereg(state, 0x206, 0x000); | 267 | if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); |
268 | } | ||
268 | 269 | ||
269 | // sample rate correction bit [23..17] | 270 | // sample rate correction bit [23..17] |
270 | sp8870_writereg(state, 0x0319, 0x000A); | 271 | sp8870_writereg(state, 0x0319, 0x000A); |
@@ -349,13 +350,6 @@ static int sp8870_init (struct dvb_frontend* fe) | |||
349 | sp8870_writereg(state, 0x0D00, 0x010); | 350 | sp8870_writereg(state, 0x0D00, 0x010); |
350 | sp8870_writereg(state, 0x0D01, 0x000); | 351 | sp8870_writereg(state, 0x0D01, 0x000); |
351 | 352 | ||
352 | /* setup PLL */ | ||
353 | if (state->config->pll_init) { | ||
354 | sp8870_writereg(state, 0x206, 0x001); | ||
355 | state->config->pll_init(fe); | ||
356 | sp8870_writereg(state, 0x206, 0x000); | ||
357 | } | ||
358 | |||
359 | return 0; | 353 | return 0; |
360 | } | 354 | } |
361 | 355 | ||
@@ -541,6 +535,17 @@ static int sp8870_get_tune_settings(struct dvb_frontend* fe, struct dvb_frontend | |||
541 | return 0; | 535 | return 0; |
542 | } | 536 | } |
543 | 537 | ||
538 | static int sp8870_i2c_gate_ctrl(struct dvb_frontend* fe, int enable) | ||
539 | { | ||
540 | struct sp8870_state* state = fe->demodulator_priv; | ||
541 | |||
542 | if (enable) { | ||
543 | return sp8870_writereg(state, 0x206, 0x001); | ||
544 | } else { | ||
545 | return sp8870_writereg(state, 0x206, 0x000); | ||
546 | } | ||
547 | } | ||
548 | |||
544 | static void sp8870_release(struct dvb_frontend* fe) | 549 | static void sp8870_release(struct dvb_frontend* fe) |
545 | { | 550 | { |
546 | struct sp8870_state* state = fe->demodulator_priv; | 551 | struct sp8870_state* state = fe->demodulator_priv; |
@@ -597,6 +602,7 @@ static struct dvb_frontend_ops sp8870_ops = { | |||
597 | 602 | ||
598 | .init = sp8870_init, | 603 | .init = sp8870_init, |
599 | .sleep = sp8870_sleep, | 604 | .sleep = sp8870_sleep, |
605 | .i2c_gate_ctrl = sp8870_i2c_gate_ctrl, | ||
600 | 606 | ||
601 | .set_frontend = sp8870_set_frontend, | 607 | .set_frontend = sp8870_set_frontend, |
602 | .get_tune_settings = sp8870_get_tune_settings, | 608 | .get_tune_settings = sp8870_get_tune_settings, |