Moro Antti, Tried removing the command 85 after resume, but the result is that the demod doesn't lock after sleep. Curiously this only impacts HD or DVB-T2 channels. DVB-T SD channels are fine even after resume. Log of the testing here: http://paste.ubuntu.com/8271949/ Same thing happens after applying the "si2157: sleep hack" patch: my TT CT2-4400 does not lock on the second tune, ie. after sleep. Log of the testing of that patch is here: http://paste.ubuntu.com/8271869/ Cheers, -olli On 5 September 2014 21:54, Olli Salonen <olli.salonen@xxxxxx> wrote: > Moro, > > I'll test it once more when testing the "si2157 sleep hack" you > posted. Though I remember that the command 85 seemed to be the magic > trick that finally made it work - I agree it sounds a bit strange > considering it's run later on anyway. The proprietary driver seems to > do a command 85 after wake up, but of course that's not a guarantee of > anything. > > My sniff using the proprietary driver is here: > http://trsqr.net/olli/ct2-4400/ct2-4400-wakeup-tune-sleep.txt > > Cheers, > -olli > > On 5 September 2014 11:36, Antti Palosaari <crope@xxxxxx> wrote: >> Moikka >> Did you really need command 85 here? It will be given later in any case. For >> my Si2168 B40 there was no need for it. >> >> regards >> Antti >> >> On 08/25/2014 09:07 PM, Olli Salonen wrote: >>> >>> Add a variable to keep track if firmware is loaded or not and skip parts >>> of the >>> initialization if fw is already loaded. Resume from sleep with a different >>> command compared to initial power up and run command 85 after resume >>> command. >>> This behaviour is observed when using manufacturer provided binary-only >>> si2168 >>> driver for TechnoTrend CT2-4400. >>> >>> Signed-off-by: Olli Salonen <olli.salonen@xxxxxx> >>> --- >>> drivers/media/dvb-frontends/si2168.c | 31 >>> ++++++++++++++++++++++++++++--- >>> drivers/media/dvb-frontends/si2168_priv.h | 1 + >>> 2 files changed, 29 insertions(+), 3 deletions(-) >>> >>> diff --git a/drivers/media/dvb-frontends/si2168.c >>> b/drivers/media/dvb-frontends/si2168.c >>> index 55a4212..a0797fd 100644 >>> --- a/drivers/media/dvb-frontends/si2168.c >>> +++ b/drivers/media/dvb-frontends/si2168.c >>> @@ -363,6 +363,7 @@ static int si2168_init(struct dvb_frontend *fe) >>> >>> dev_dbg(&s->client->dev, "\n"); >>> >>> + /* initialize */ >>> memcpy(cmd.args, >>> "\xc0\x12\x00\x0c\x00\x0d\x16\x00\x00\x00\x00\x00\x00", 13); >>> cmd.wlen = 13; >>> cmd.rlen = 0; >>> @@ -370,6 +371,26 @@ static int si2168_init(struct dvb_frontend *fe) >>> if (ret) >>> goto err; >>> >>> + if (s->fw_loaded) { >>> + /* resume */ >>> + memcpy(cmd.args, "\xc0\x06\x08\x0f\x00\x20\x21\x01", 8); >>> + cmd.wlen = 8; >>> + cmd.rlen = 1; >>> + ret = si2168_cmd_execute(s, &cmd); >>> + if (ret) >>> + goto err; >>> + >>> + memcpy(cmd.args, "\x85", 1); >>> + cmd.wlen = 1; >>> + cmd.rlen = 1; >>> + ret = si2168_cmd_execute(s, &cmd); >>> + if (ret) >>> + goto err; >>> + >>> + goto warm; >>> + } >>> + >>> + /* power up */ >>> memcpy(cmd.args, "\xc0\x06\x01\x0f\x00\x20\x20\x01", 8); >>> cmd.wlen = 8; >>> cmd.rlen = 1; >>> @@ -466,9 +487,6 @@ static int si2168_init(struct dvb_frontend *fe) >>> if (ret) >>> goto err; >>> >>> - dev_info(&s->client->dev, "found a '%s' in warm state\n", >>> - si2168_ops.info.name); >>> - >>> /* set ts mode */ >>> memcpy(cmd.args, "\x14\x00\x01\x10\x10\x00", 6); >>> cmd.args[4] |= s->ts_mode; >>> @@ -478,6 +496,12 @@ static int si2168_init(struct dvb_frontend *fe) >>> if (ret) >>> goto err; >>> >>> + s->fw_loaded = true; >>> + >>> +warm: >>> + dev_info(&s->client->dev, "found a '%s' in warm state\n", >>> + si2168_ops.info.name); >>> + >>> s->active = true; >>> >>> return 0; >>> @@ -645,6 +669,7 @@ static int si2168_probe(struct i2c_client *client, >>> *config->i2c_adapter = s->adapter; >>> *config->fe = &s->fe; >>> s->ts_mode = config->ts_mode; >>> + s->fw_loaded = false; >>> >>> i2c_set_clientdata(client, s); >>> >>> diff --git a/drivers/media/dvb-frontends/si2168_priv.h >>> b/drivers/media/dvb-frontends/si2168_priv.h >>> index 0f83284..e13983e 100644 >>> --- a/drivers/media/dvb-frontends/si2168_priv.h >>> +++ b/drivers/media/dvb-frontends/si2168_priv.h >>> @@ -36,6 +36,7 @@ struct si2168 { >>> fe_delivery_system_t delivery_system; >>> fe_status_t fe_status; >>> bool active; >>> + bool fw_loaded; >>> u8 ts_mode; >>> }; >>> >>> >> >> -- >> http://palosaari.fi/ -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html