V4L/DVB (11791): xc5000: do not sleep after digital tuning
authorDevin Heitmueller <devin.heitmueller@gmail.com>
Sun, 16 Nov 2008 23:48:31 +0000 (20:48 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 16 Jun 2009 21:21:05 +0000 (18:21 -0300)
Don't sleep for 400ms polling the tuner's lock if in digital mode (since the
xc5000 lock status registers appear to only be reliable in analog mode)

Signed-off-by: Devin Heitmueller <devin.heitmueller@gmail.com>
Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/common/tuners/xc5000.c

index bf2fdb3..c9e72ae 100644 (file)
@@ -490,7 +490,9 @@ static u16 WaitForLock(struct xc5000_priv *priv)
        return lockState;
 }
 
-static int xc_tune_channel(struct xc5000_priv *priv, u32 freq_hz)
+#define XC_TUNE_ANALOG  0
+#define XC_TUNE_DIGITAL 1
+static int xc_tune_channel(struct xc5000_priv *priv, u32 freq_hz, int mode)
 {
        int found = 0;
 
@@ -499,8 +501,10 @@ static int xc_tune_channel(struct xc5000_priv *priv, u32 freq_hz)
        if (xc_set_RF_frequency(priv, freq_hz) != XC_RESULT_SUCCESS)
                return 0;
 
-       if (WaitForLock(priv) == 1)
-               found = 1;
+       if (mode == XC_TUNE_ANALOG) {
+               if (WaitForLock(priv) == 1)
+                       found = 1;
+       }
 
        return found;
 }
@@ -662,7 +666,7 @@ static int xc5000_set_params(struct dvb_frontend *fe,
                return -EIO;
        }
 
-       xc_tune_channel(priv, priv->freq_hz);
+       xc_tune_channel(priv, priv->freq_hz, XC_TUNE_DIGITAL);
 
        if (debug)
                xc_debug_dump(priv);
@@ -769,7 +773,7 @@ tune_channel:
                return -EREMOTEIO;
        }
 
-       xc_tune_channel(priv, priv->freq_hz);
+       xc_tune_channel(priv, priv->freq_hz, XC_TUNE_ANALOG);
 
        if (debug)
                xc_debug_dump(priv);