Commit e955f959 authored by Brad Love's avatar Brad Love Committed by Mauro Carvalho Chehab

media: si2157: Better check for running tuner in init

Getting the Xtal trim property to check if running is less error prone.
Reset if_frequency if state is unknown.

Replaces the previous "garbage check".
Signed-off-by: default avatarBrad Love <brad@nextdimension.cc>
Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent 5741f4af
...@@ -81,24 +81,23 @@ static int si2157_init(struct dvb_frontend *fe) ...@@ -81,24 +81,23 @@ static int si2157_init(struct dvb_frontend *fe)
struct si2157_cmd cmd; struct si2157_cmd cmd;
const struct firmware *fw; const struct firmware *fw;
const char *fw_name; const char *fw_name;
unsigned int uitmp, chip_id; unsigned int chip_id, xtal_trim;
dev_dbg(&client->dev, "\n"); dev_dbg(&client->dev, "\n");
/* Returned IF frequency is garbage when firmware is not running */ /* Try to get Xtal trim property, to verify tuner still running */
memcpy(cmd.args, "\x15\x00\x06\x07", 4); memcpy(cmd.args, "\x15\x00\x04\x02", 4);
cmd.wlen = 4; cmd.wlen = 4;
cmd.rlen = 4; cmd.rlen = 4;
ret = si2157_cmd_execute(client, &cmd); ret = si2157_cmd_execute(client, &cmd);
if (ret)
goto err;
uitmp = cmd.args[2] << 0 | cmd.args[3] << 8; xtal_trim = cmd.args[2] | (cmd.args[3] << 8);
dev_dbg(&client->dev, "if_frequency kHz=%u\n", uitmp);
if (uitmp == dev->if_frequency / 1000) if (ret == 0 && xtal_trim < 16)
goto warm; goto warm;
dev->if_frequency = 0; /* we no longer know current tuner state */
/* power up */ /* power up */
if (dev->chiptype == SI2157_CHIPTYPE_SI2146) { if (dev->chiptype == SI2157_CHIPTYPE_SI2146) {
memcpy(cmd.args, "\xc0\x05\x01\x00\x00\x0b\x00\x00\x01", 9); memcpy(cmd.args, "\xc0\x05\x01\x00\x00\x0b\x00\x00\x01", 9);
......
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