diff options
author | Andrew de Quincey <adq_dvb@lidskialf.net> | 2006-04-18 16:47:12 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-06-25 00:59:18 -0400 |
commit | 8dec073225b0926a26656f416a8d32573205a78f (patch) | |
tree | 0ab93538c8e369bd7f52c5348d0a5db9a550ec4f /drivers/media/dvb | |
parent | 4e2eccae27d13d756826533e7cd1214b5825d97c (diff) |
V4L/DVB (3890): Add support for non-attached tuners to zl10353
Add no_tuner setting like in mt352.
Update to use correct tuner API calls.
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')
-rw-r--r-- | drivers/media/dvb/frontends/zl10353.c | 24 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/zl10353.h | 3 |
2 files changed, 26 insertions, 1 deletions
diff --git a/drivers/media/dvb/frontends/zl10353.c b/drivers/media/dvb/frontends/zl10353.c index 73fe40b50fc4..1234eb0070d6 100644 --- a/drivers/media/dvb/frontends/zl10353.c +++ b/drivers/media/dvb/frontends/zl10353.c | |||
@@ -125,6 +125,8 @@ static int zl10353_sleep(struct dvb_frontend *fe) | |||
125 | static int zl10353_set_parameters(struct dvb_frontend *fe, | 125 | static int zl10353_set_parameters(struct dvb_frontend *fe, |
126 | struct dvb_frontend_parameters *param) | 126 | struct dvb_frontend_parameters *param) |
127 | { | 127 | { |
128 | struct zl10353_state *state = fe->demodulator_priv; | ||
129 | |||
128 | u8 pllbuf[6] = { 0x67 }; | 130 | u8 pllbuf[6] = { 0x67 }; |
129 | 131 | ||
130 | /* These settings set "auto-everything" and start the FSM. */ | 132 | /* These settings set "auto-everything" and start the FSM. */ |
@@ -141,12 +143,32 @@ static int zl10353_set_parameters(struct dvb_frontend *fe, | |||
141 | zl10353_single_write(fe, 0x66, 0xE9); | 143 | zl10353_single_write(fe, 0x66, 0xE9); |
142 | zl10353_single_write(fe, 0x62, 0x0A); | 144 | zl10353_single_write(fe, 0x62, 0x0A); |
143 | 145 | ||
146 | // if there is no attached secondary tuner, we call set_params to program | ||
147 | // a potential tuner attached somewhere else | ||
148 | if (state->config.no_tuner) { | ||
149 | if (fe->ops->tuner_ops.set_params) { | ||
150 | fe->ops->tuner_ops.set_params(fe, param); | ||
151 | if (fe->ops->i2c_gate_ctrl) fe->ops->i2c_gate_ctrl(fe, 0); | ||
152 | } | ||
153 | } | ||
154 | |||
155 | // if pllbuf is defined, retrieve the settings | ||
144 | if (fe->ops->tuner_ops.pllbuf) { | 156 | if (fe->ops->tuner_ops.pllbuf) { |
145 | fe->ops->tuner_ops.pllbuf(fe, param, pllbuf+1, 5); | 157 | fe->ops->tuner_ops.pllbuf(fe, param, pllbuf+1, 5); |
146 | pllbuf[1] <<= 1; | 158 | pllbuf[1] <<= 1; |
147 | zl10353_write(fe, pllbuf, sizeof(pllbuf)); | 159 | } else { |
160 | // fake pllbuf settings | ||
161 | pllbuf[1] = 0x61 << 1; | ||
162 | pllbuf[2] = 0; | ||
163 | pllbuf[3] = 0; | ||
164 | pllbuf[3] = 0; | ||
165 | pllbuf[4] = 0; | ||
148 | } | 166 | } |
149 | 167 | ||
168 | // there is no call to _just_ start decoding, so we send the pllbuf anyway | ||
169 | // even if there isn't a PLL attached to the secondary bus | ||
170 | zl10353_write(fe, pllbuf, sizeof(pllbuf)); | ||
171 | |||
150 | zl10353_single_write(fe, 0x70, 0x01); | 172 | zl10353_single_write(fe, 0x70, 0x01); |
151 | udelay(250); | 173 | udelay(250); |
152 | zl10353_single_write(fe, 0xE4, 0x00); | 174 | zl10353_single_write(fe, 0xE4, 0x00); |
diff --git a/drivers/media/dvb/frontends/zl10353.h b/drivers/media/dvb/frontends/zl10353.h index 63c36ec02adf..9770cb840cfc 100644 --- a/drivers/media/dvb/frontends/zl10353.h +++ b/drivers/media/dvb/frontends/zl10353.h | |||
@@ -28,6 +28,9 @@ struct zl10353_config | |||
28 | { | 28 | { |
29 | /* demodulator's I2C address */ | 29 | /* demodulator's I2C address */ |
30 | u8 demod_address; | 30 | u8 demod_address; |
31 | |||
32 | /* set if no pll is connected to the secondary i2c bus */ | ||
33 | int no_tuner; | ||
31 | }; | 34 | }; |
32 | 35 | ||
33 | extern struct dvb_frontend* zl10353_attach(const struct zl10353_config *config, | 36 | extern struct dvb_frontend* zl10353_attach(const struct zl10353_config *config, |