Commit e7ac4646 authored by Manu Abraham's avatar Manu Abraham Committed by Mauro Carvalho Chehab

V4L/DVB (3389): Fix broken IF-OUT Relay handling

Fixed broken IF-OUT on pinnacle sat board.
Thanks to Edgar Toernig
Signed-off-by: default avatarManu Abraham <manu@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 1e7eb89b
...@@ -239,6 +239,20 @@ static int cx24108_pll_set(struct dvb_frontend* fe, struct dvb_frontend_paramete ...@@ -239,6 +239,20 @@ static int cx24108_pll_set(struct dvb_frontend* fe, struct dvb_frontend_paramete
static int pinnsat_pll_init(struct dvb_frontend* fe) static int pinnsat_pll_init(struct dvb_frontend* fe)
{ {
struct dvb_bt8xx_card *card = fe->dvb->priv;
bttv_gpio_enable(card->bttv_nr, 1, 1); /* output */
bttv_write_gpio(card->bttv_nr, 1, 1); /* relay on */
return 0;
}
static int pinnsat_pll_sleep(struct dvb_frontend* fe)
{
struct dvb_bt8xx_card *card = fe->dvb->priv;
bttv_write_gpio(card->bttv_nr, 1, 0); /* relay off */
return 0; return 0;
} }
...@@ -246,6 +260,7 @@ static struct cx24110_config pctvsat_config = { ...@@ -246,6 +260,7 @@ static struct cx24110_config pctvsat_config = {
.demod_address = 0x55, .demod_address = 0x55,
.pll_init = pinnsat_pll_init, .pll_init = pinnsat_pll_init,
.pll_set = cx24108_pll_set, .pll_set = cx24108_pll_set,
.pll_sleep = pinnsat_pll_sleep,
}; };
static int microtune_mt7202dtf_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params) static int microtune_mt7202dtf_pll_set(struct dvb_frontend* fe, struct dvb_frontend_parameters* params)
......
...@@ -371,6 +371,15 @@ static int cx24110_initfe(struct dvb_frontend* fe) ...@@ -371,6 +371,15 @@ static int cx24110_initfe(struct dvb_frontend* fe)
return 0; return 0;
} }
static int cx24110_sleep(struct dvb_frontend *fe)
{
struct cx24110_state *state = fe->demodulator_priv;
if (state->config->pll_sleep)
return state->config->pll_sleep(fe);
return 0;
}
static int cx24110_set_voltage (struct dvb_frontend* fe, fe_sec_voltage_t voltage) static int cx24110_set_voltage (struct dvb_frontend* fe, fe_sec_voltage_t voltage)
{ {
struct cx24110_state *state = fe->demodulator_priv; struct cx24110_state *state = fe->demodulator_priv;
...@@ -642,6 +651,7 @@ static struct dvb_frontend_ops cx24110_ops = { ...@@ -642,6 +651,7 @@ static struct dvb_frontend_ops cx24110_ops = {
.release = cx24110_release, .release = cx24110_release,
.init = cx24110_initfe, .init = cx24110_initfe,
.sleep = cx24110_sleep,
.set_frontend = cx24110_set_frontend, .set_frontend = cx24110_set_frontend,
.get_frontend = cx24110_get_frontend, .get_frontend = cx24110_get_frontend,
.read_status = cx24110_read_status, .read_status = cx24110_read_status,
......
...@@ -35,6 +35,7 @@ struct cx24110_config ...@@ -35,6 +35,7 @@ struct cx24110_config
/* PLL maintenance */ /* PLL maintenance */
int (*pll_init)(struct dvb_frontend* fe); int (*pll_init)(struct dvb_frontend* fe);
int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params); int (*pll_set)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);
int (*pll_sleep)(struct dvb_frontend* fe);
}; };
extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config, extern struct dvb_frontend* cx24110_attach(const struct cx24110_config* config,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment