[media] si2157: avoid firmware loading if it has been loaded previously

Add a variable into state to keep track if firmware has been loaded or not.
Skip firmware loading in case it is already loaded (resume from sleep).

Signed-off-by: Olli Salonen <olli.salonen@iki.fi>
Signed-off-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
Olli Salonen 2014-08-25 15:07:03 -03:00 committed by Mauro Carvalho Chehab
parent 0e38233d32
commit 4cbf6ed910
2 changed files with 10 additions and 2 deletions

View File

@ -89,7 +89,10 @@ static int si2157_init(struct dvb_frontend *fe)
dev_dbg(&s->client->dev, "\n");
/* configure? */
if (s->fw_loaded)
goto warm;
/* power up */
memcpy(cmd.args, "\xc0\x00\x0c\x00\x00\x01\x01\x01\x01\x01\x01\x02\x00\x00\x01", 15);
cmd.wlen = 15;
cmd.rlen = 1;
@ -176,9 +179,12 @@ static int si2157_init(struct dvb_frontend *fe)
if (ret)
goto err;
s->active = true;
s->fw_loaded = true;
warm:
s->active = true;
return 0;
err:
if (fw)
release_firmware(fw);
@ -320,6 +326,7 @@ static int si2157_probe(struct i2c_client *client,
s->client = client;
s->fe = cfg->fe;
s->inversion = cfg->inversion;
s->fw_loaded = false;
mutex_init(&s->i2c_mutex);
/* check if the tuner is there */

View File

@ -26,6 +26,7 @@ struct si2157 {
struct i2c_client *client;
struct dvb_frontend *fe;
bool active;
bool fw_loaded;
bool inversion;
};