V4L/DVB: xc3028: fix regression in firmware loading time
authorDevin Heitmueller <dheitmueller@kernellabs.com>
Tue, 19 Jan 2010 04:38:45 +0000 (01:38 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 18 May 2010 03:43:45 +0000 (00:43 -0300)
Fix a regression in the firmware loading time where it went from 1080 ms to
4700 ms.  This was noticed when the em28xx based HVR-950 took noticably longer
to load the driver.

Regression introduced in hg 12824.  The developer added an msleep() call with
an argument based on a newly introduced xc3028_ctrl field, which is left
initialized to zero for pretty much every board that is currently supported.

Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/common/tuners/tuner-xc2028.c

index 61a7e138c748dc5c481cd8de6a688e0091db7f33..b6ce528e1889f69bba7c514edb93092a3dec8478 100644 (file)
@@ -100,7 +100,8 @@ struct xc2028_data {
        if (size != _rc)                                                \
                tuner_info("i2c output error: rc = %d (should be %d)\n",\
                           _rc, (int)size);                             \
-       msleep(priv->ctrl.msleep);                                      \
+       if (priv->ctrl.msleep)                                          \
+               msleep(priv->ctrl.msleep);                              \
        _rc;                                                            \
 })
 
@@ -120,7 +121,8 @@ struct xc2028_data {
        if (isize != _rc)                                               \
                tuner_err("i2c input error: rc = %d (should be %d)\n",  \
                           _rc, (int)isize);                            \
-       msleep(priv->ctrl.msleep);                                      \
+       if (priv->ctrl.msleep)                                          \
+               msleep(priv->ctrl.msleep);                              \
        _rc;                                                            \
 })
 
@@ -131,7 +133,7 @@ struct xc2028_data {
                        (_rc = tuner_i2c_xfer_send(&priv->i2c_props,    \
                                                _val, sizeof(_val)))) { \
                tuner_err("Error on line %d: %d\n", __LINE__, _rc);     \
-       } else                                                          \
+       } else if (priv->ctrl.msleep)                                   \
                msleep(priv->ctrl.msleep);                              \
        _rc;                                                            \
 })
@@ -1009,7 +1011,8 @@ static int generic_set_freq(struct dvb_frontend *fe, u32 freq /* in HZ */,
           The reset CLK is needed only with tm6000.
           Driver should work fine even if this fails.
         */
-       msleep(priv->ctrl.msleep);
+       if (priv->ctrl.msleep)
+               msleep(priv->ctrl.msleep);
        do_tuner_callback(fe, XC2028_RESET_CLK, 1);
 
        msleep(10);