]> err.no Git - linux-2.6/blobdiff - drivers/media/dvb/dvb-core/dvb_frontend.c
V4L/DVB (4292): Fix DISEQC regression
[linux-2.6] / drivers / media / dvb / dvb-core / dvb_frontend.c
index 5e8bb41a088b56c59bcb7f16c8f36264e1d54374..57b34cda99f5a6f598b9786d42af22d58a19f70d 100644 (file)
@@ -526,7 +526,9 @@ static int dvb_frontend_thread(void *data)
        fepriv->delay = 3*HZ;
        fepriv->status = 0;
        fepriv->wakeup = 0;
-       fepriv->reinitialise = 1;
+       fepriv->reinitialise = 0;
+
+       dvb_frontend_init(fe);
 
        while (1) {
                up(&fepriv->sem);           /* is locked when we enter the thread... */
@@ -570,7 +572,8 @@ static int dvb_frontend_thread(void *data)
                                        dvb_frontend_add_event(fe, s);
                                        fepriv->status = s;
                                }
-                       }
+                       } else
+                               dvb_frontend_swzigzag(fe);
                } else
                        dvb_frontend_swzigzag(fe);
        }
@@ -975,6 +978,7 @@ static int dvb_frontend_ioctl(struct inode *inode, struct file *file,
 
        case FE_SET_FRONTEND_TUNE_MODE:
                fepriv->tune_mode_flags = (unsigned long) parg;
+               err = 0;
                break;
        };
 
@@ -1011,17 +1015,18 @@ static int dvb_frontend_open(struct inode *inode, struct file *file)
                return ret;
 
        if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
+
+               /* normal tune mode when opened R/W */
+               fepriv->tune_mode_flags &= ~FE_TUNE_MODE_ONESHOT;
+               fepriv->tone = -1;
+               fepriv->voltage = -1;
+
                ret = dvb_frontend_start (fe);
                if (ret)
                        dvb_generic_release (inode, file);
 
                /*  empty event queue */
                fepriv->events.eventr = fepriv->events.eventw = 0;
-
-               /* normal tune mode when opened R/W */
-               fepriv->tune_mode_flags &= ~FE_TUNE_MODE_ONESHOT;
-               fepriv->tone = -1;
-               fepriv->voltage = -1;
        }
 
        return ret;