[media] Sanity check when initializing DVB-S/S2 demodulator
authorAbylay Ospan <aospan@netup.ru>
Tue, 5 Apr 2016 18:02:37 +0000 (15:02 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 7 Jun 2016 15:12:25 +0000 (12:12 -0300)
Avoid error message:
cxd2841er_read_status_s(): invalid state 1
Always force demod to shutdown state before initializing

Signed-off-by: Abylay Ospan <aospan@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-frontends/cxd2841er.c

index b87d99066d44a9165df38a6ac103829b7b647ccc..94613af6900dc0955600d76132b944437ff98f4a 100644 (file)
@@ -3133,6 +3133,18 @@ static int cxd2841er_init_s(struct dvb_frontend *fe)
 {
        struct cxd2841er_priv *priv = fe->demodulator_priv;
 
+       /* sanity. force demod to SHUTDOWN state */
+       if (priv->state == STATE_SLEEP_S) {
+               dev_dbg(&priv->i2c->dev, "%s() forcing sleep->shutdown\n",
+                               __func__);
+               cxd2841er_sleep_s_to_shutdown(priv);
+       } else if (priv->state == STATE_ACTIVE_S) {
+               dev_dbg(&priv->i2c->dev, "%s() forcing active->sleep->shutdown\n",
+                               __func__);
+               cxd2841er_active_s_to_sleep_s(priv);
+               cxd2841er_sleep_s_to_shutdown(priv);
+       }
+
        dev_dbg(&priv->i2c->dev, "%s()\n", __func__);
        cxd2841er_shutdown_to_sleep_s(priv);
        /* SONY_DEMOD_CONFIG_SAT_IFAGCNEG set to 1 */