[media] dvb-frontends/cxd2841er: make lock wait in set_fe_tc() optional
authorDaniel Scheller <d.scheller@gmx.net>
Sun, 9 Apr 2017 19:38:21 +0000 (16:38 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 20 Jun 2017 12:55:07 +0000 (09:55 -0300)
Don't wait for FE_HAS_LOCK in set_frontend_tc() and thus don't hammer the
lock status register with inquiries when CXD2841ER_NO_WAIT_LOCK is set
in the configuration, which also unneccessarily blocks applications until
a TS LOCK has been acquired. Rather, API and applications will check for
a TS LOCK by utilising the tune fe_op, read_status and get_frontend ops,
which is sufficient.

Signed-off-by: Daniel Scheller <d.scheller@gmx.net>
Acked-by: Abylay Ospan <aospan@netup.ru>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/dvb-frontends/cxd2841er.c
drivers/media/dvb-frontends/cxd2841er.h

index 61f74fe..0522ceb 100644 (file)
@@ -3460,6 +3460,10 @@ static int cxd2841er_set_frontend_tc(struct dvb_frontend *fe)
                cxd2841er_tuner_set(fe);
 
        cxd2841er_tune_done(priv);
+
+       if (priv->flags & CXD2841ER_NO_WAIT_LOCK)
+               goto done;
+
        timeout = 2500;
        while (timeout > 0) {
                ret = cxd2841er_read_status_tc(fe, &status);
index 061e551..d77b59f 100644 (file)
@@ -29,6 +29,7 @@
 #define CXD2841ER_TS_SERIAL    4       /* bit 2 */
 #define CXD2841ER_ASCOT                8       /* bit 3 */
 #define CXD2841ER_EARLY_TUNE   16      /* bit 4 */
+#define CXD2841ER_NO_WAIT_LOCK 32      /* bit 5 */
 
 enum cxd2841er_xtal {
        SONY_XTAL_20500, /* 20.5 MHz */