V4L/DVB (4160): Use device specific algorithms
authorManu Abraham <abraham.manu@gmail.com>
Wed, 21 Jun 2006 13:27:31 +0000 (10:27 -0300)
committerMauro Carvalho Chehab <mchehab@infradead.org>
Sun, 25 Jun 2006 05:05:15 +0000 (02:05 -0300)
Signed-off-by: Manu Abraham <manu@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
drivers/media/dvb/dvb-core/dvb_frontend.c
drivers/media/dvb/dvb-core/dvb_frontend.h

index b8b28b375e60db27d359d31cdff244841f270e1d..3152a54a2539ea2aef88abafe350186597961c4d 100644 (file)
@@ -72,6 +72,8 @@ MODULE_PARM_DESC(dvb_powerdown_on_sleep, "0: do not power down, 1: turn LNB volt
 #define FESTATE_SEARCHING_FAST (FESTATE_TUNING_FAST | FESTATE_ZIGZAG_FAST)
 #define FESTATE_SEARCHING_SLOW (FESTATE_TUNING_SLOW | FESTATE_ZIGZAG_SLOW)
 #define FESTATE_LOSTLOCK (FESTATE_ZIGZAG_FAST | FESTATE_ZIGZAG_SLOW)
+
+#define FE_ALGO_HW             1
 /*
  * FESTATE_IDLE. No tuning parameters have been supplied and the loop is idling.
  * FESTATE_RETUNE. Parameters have been supplied, but we have not yet performed the first tune.
@@ -554,7 +556,7 @@ static int dvb_frontend_thread(void *data)
                }
 
                /* do an iteration of the tuning loop */
-               if (fe->ops.tune) {
+               if (fe->ops.get_frontend_algo(fe) == FE_ALGO_HW) {
                        /* have we been asked to retune? */
                        params = NULL;
                        if (fepriv->state & FESTATE_RETUNE) {
index fee52baa148af5490e92c7a70918f9f47249d32f..2887e2b862a4436d1002a5dcee6ffafb1b5aba1f 100644 (file)
@@ -102,6 +102,8 @@ struct dvb_frontend_ops {
                    unsigned int mode_flags,
                    int *delay,
                    fe_status_t *status);
+       /* get frontend tuning algorithm from the module */
+       int (*get_frontend_algo)(struct dvb_frontend *fe);
 
        /* these two are only used for the swzigzag code */
        int (*set_frontend)(struct dvb_frontend* fe, struct dvb_frontend_parameters* params);