diff options
author | Manu Abraham <manu@linuxtv.org> | 2006-02-26 22:09:29 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2006-02-26 22:09:29 -0500 |
commit | e7ac46469c247a931f760354deaed9cf10b75fde (patch) | |
tree | 3dd4158a80601bd5aad0160f96f6c33e213f0e9e | |
parent | 1e7eb89ba936fc1db54e247a336f3f55bdbc644d (diff) |
V4L/DVB (3389): Fix broken IF-OUT Relay handling
Fixed broken IF-OUT on pinnacle sat board.
Thanks to Edgar Toernig
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r-- | drivers/media/dvb/bt8xx/dvb-bt8xx.c | 15 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/cx24110.c | 10 | ||||
-rw-r--r-- | drivers/media/dvb/frontends/cx24110.h | 1 |
3 files changed, 26 insertions, 0 deletions
diff --git a/drivers/media/dvb/bt8xx/dvb-bt8xx.c b/drivers/media/dvb/bt8xx/dvb-bt8xx.c index 1649846f9ceb..f5bfcd2b3803 100644 --- a/drivers/media/dvb/bt8xx/dvb-bt8xx.c +++ b/drivers/media/dvb/bt8xx/dvb-bt8xx.c | |||
@@ -239,6 +239,20 @@ static int cx24108_pll_set(struct dvb_frontend* fe, struct dvb_frontend_paramete | |||
239 | 239 | ||
240 | static int pinnsat_pll_init(struct dvb_frontend* fe) | 240 | static int pinnsat_pll_init(struct dvb_frontend* fe) |
241 | { | 241 | { |
242 | struct dvb_bt8xx_card *card = fe->dvb->priv; | ||
243 | |||
244 | bttv_gpio_enable(card->bttv_nr, 1, 1); /* output */ | ||
245 | bttv_write_gpio(card->bttv_nr, 1, 1); /* relay on */ | ||
246 | |||
247 | return 0; | ||
248 | } | ||
249 | |||
250 | static int pinnsat_pll_sleep(struct dvb_frontend* fe) | ||
251 | { | ||
252 | struct dvb_bt8xx_card *card = fe->dvb->priv; | ||
253 | |||
254 | bttv_write_gpio(card->bttv_nr, 1, 0); /* relay off */ | ||
255 | |||
242 | return 0; | 256 | return 0; |
243 | } | 257 | } |
244 | 258 | ||
@@ -246,6 +260,7 @@ static struct cx24110_config pctvsat_config = { | |||
246 | .demod_address = 0x55, | 260 | .demod_address = 0x55, |
247 | .pll_init = pinnsat_pll_init, | 261 | .pll_init = pinnsat_pll_init, |
248 | .pll_set = cx24108_pll_set, | 262 | .pll_set = cx24108_pll_set, |
263 | .pll_sleep = pinnsat_pll_sleep, | ||
249 | }; | 264 | }; |
250 | 265 | ||
251 | static int microtune_mt7202dtf_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) | 266 | static int microtune_mt7202dtf_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) |
diff --git a/drivers/media/dvb/frontends/cx24110.c b/drivers/media/dvb/frontends/cx24110.c index cc68b7e83b5e..f3edf8b517dd 100644 --- a/drivers/media/dvb/frontends/cx24110.c +++ b/drivers/media/dvb/frontends/cx24110.c | |||
@@ -371,6 +371,15 @@ static int cx24110_initfe(struct dvb_frontend* fe) | |||
371 | return 0; | 371 | return 0; |
372 | } | 372 | } |
373 | 373 | ||
374 | static int cx24110_sleep(struct dvb_frontend *fe) | ||
375 | { | ||
376 | struct cx24110_state *state = fe->demodulator_priv; | ||
377 | |||
378 | if (state->config->pll_sleep) | ||
379 | return state->config->pll_sleep(fe); | ||
380 | return 0; | ||
381 | } | ||
382 | |||
374 | static int cx24110_set_voltage (struct dvb_frontend* fe, fe_sec_voltage_t voltage) | 383 | static int cx24110_set_voltage (struct dvb_frontend* fe, fe_sec_voltage_t voltage) |
375 | { | 384 | { |
376 | struct cx24110_state *state = fe->demodulator_priv; | 385 | struct cx24110_state *state = fe->demodulator_priv; |
@@ -642,6 +651,7 @@ static struct dvb_frontend_ops cx24110_ops = { | |||
642 | .release = cx24110_release, | 651 | .release = cx24110_release, |
643 | 652 | ||
644 | .init = cx24110_initfe, | 653 | .init = cx24110_initfe, |
654 | .sleep = cx24110_sleep, | ||
645 | .set_frontend = cx24110_set_frontend, | 655 | .set_frontend = cx24110_set_frontend, |
646 | .get_frontend = cx24110_get_frontend, | 656 | .get_frontend = cx24110_get_frontend, |
647 | .read_status = cx24110_read_status, | 657 | .read_status = cx24110_read_status, |
diff --git a/drivers/media/dvb/frontends/cx24110.h b/drivers/media/dvb/frontends/cx24110.h index b63ecf26421a..609ac642b406 100644 --- a/drivers/media/dvb/frontends/cx24110.h +++ b/drivers/media/dvb/frontends/cx24110.h | |||
@@ -35,6 +35,7 @@ struct cx24110_config | |||
35 | /* PLL maintenance */ | 35 | /* PLL maintenance */ |
36 | int (*pll_init)(struct dvb_frontend* fe); | 36 | int (*pll_init)(struct dvb_frontend* fe); |
37 | int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params); | 37 | int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params); |
38 | int (*pll_sleep)(struct dvb_frontend* fe); | ||
38 | }; | 39 | }; |
39 | 40 | ||
40 | extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config, | 41 | extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config, |