Commit 71b6aaaf authored by Luis Alves's avatar Luis Alves Committed by Mauro Carvalho Chehab

[media] cx24117: Fix LNB set_voltage function

This patch should fix/enhance the set_voltage function for
the cx24117 demodulator.
Signed-off-by: default avatarLuis Alves <ljalvs@gmail.com>
Signed-off-by: default avatarMichael Krufky <mkrufky@linuxtv.org>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 9fa7c419
...@@ -917,22 +917,15 @@ static int cx24117_set_voltage(struct dvb_frontend *fe, ...@@ -917,22 +917,15 @@ static int cx24117_set_voltage(struct dvb_frontend *fe,
voltage == SEC_VOLTAGE_18 ? "SEC_VOLTAGE_18" : voltage == SEC_VOLTAGE_18 ? "SEC_VOLTAGE_18" :
"SEC_VOLTAGE_OFF"); "SEC_VOLTAGE_OFF");
/* Set GPIO direction */ /* Prepare a set GPIO logic level CMD */
cmd.args[0] = CMD_SET_GPIODIR; cmd.args[0] = CMD_SET_GPIOOUT;
cmd.args[1] = reg; cmd.args[2] = reg; /* mask */
cmd.args[2] = reg;
cmd.len = 3; cmd.len = 3;
ret = cx24117_cmd_execute(fe, &cmd);
if (ret)
return ret;
if ((voltage == SEC_VOLTAGE_13) || if ((voltage == SEC_VOLTAGE_13) ||
(voltage == SEC_VOLTAGE_18)) { (voltage == SEC_VOLTAGE_18)) {
/* Set GPIO logic level */ /* power on LNB */
cmd.args[0] = CMD_SET_GPIOOUT;
cmd.args[1] = reg; cmd.args[1] = reg;
cmd.args[2] = reg;
cmd.len = 3;
ret = cx24117_cmd_execute(fe, &cmd); ret = cx24117_cmd_execute(fe, &cmd);
if (ret != 0) if (ret != 0)
return ret; return ret;
...@@ -949,17 +942,17 @@ static int cx24117_set_voltage(struct dvb_frontend *fe, ...@@ -949,17 +942,17 @@ static int cx24117_set_voltage(struct dvb_frontend *fe,
cmd.args[1] = state->demod ? 0 : 1; cmd.args[1] = state->demod ? 0 : 1;
cmd.args[2] = (voltage == SEC_VOLTAGE_18 ? 0x01 : 0x00); cmd.args[2] = (voltage == SEC_VOLTAGE_18 ? 0x01 : 0x00);
cmd.len = 3; cmd.len = 3;
ret = cx24117_cmd_execute(fe, &cmd);
/* Min delay time before DiSEqC send */ /* Min delay time before DiSEqC send */
msleep(20); msleep(20);
} else { } else {
cmd.args[0] = CMD_SET_GPIOOUT; /* power off LNB */
cmd.args[1] = 0x00; cmd.args[1] = 0x00;
cmd.args[2] = reg; ret = cx24117_cmd_execute(fe, &cmd);
cmd.len = 3;
} }
return cx24117_cmd_execute(fe, &cmd); return ret;
} }
static int cx24117_set_tone(struct dvb_frontend *fe, static int cx24117_set_tone(struct dvb_frontend *fe,
...@@ -1277,6 +1270,16 @@ static int cx24117_initfe(struct dvb_frontend *fe) ...@@ -1277,6 +1270,16 @@ static int cx24117_initfe(struct dvb_frontend *fe)
cmd.args[2] = CX24117_OCC; cmd.args[2] = CX24117_OCC;
cmd.len = 3; cmd.len = 3;
ret = cx24117_cmd_execute_nolock(fe, &cmd); ret = cx24117_cmd_execute_nolock(fe, &cmd);
if (ret != 0)
goto exit;
/* Set GPIO direction */
/* Set as output - controls LNB power on/off */
cmd.args[0] = CMD_SET_GPIODIR;
cmd.args[1] = 0x30;
cmd.args[2] = 0x30;
cmd.len = 3;
ret = cx24117_cmd_execute_nolock(fe, &cmd);
exit: exit:
mutex_unlock(&state->priv->fe_lock); mutex_unlock(&state->priv->fe_lock);
......
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