aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorManu Abraham <manu@linuxtv.org>2006-02-26 22:09:29 -0500
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-02-26 22:09:29 -0500
commite7ac46469c247a931f760354deaed9cf10b75fde (patch)
tree3dd4158a80601bd5aad0160f96f6c33e213f0e9e
parent1e7eb89ba936fc1db54e247a336f3f55bdbc644d (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.c15
-rw-r--r--drivers/media/dvb/frontends/cx24110.c10
-rw-r--r--drivers/media/dvb/frontends/cx24110.h1
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
240static int pinnsat_pll_init(struct dvb_frontend* fe) 240static 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
250static 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
251static int microtune_mt7202dtf_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) 266static 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
374static 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
374static int cx24110_set_voltage (struct dvb_frontend* fe, fe_sec_voltage_t voltage) 383static 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
40extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config, 41extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config,