summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHolger Waechtler <devnull@localhost>2002-11-08 22:00:11 +0000
committerHolger Waechtler <devnull@localhost>2002-11-08 22:00:11 +0000
commite8f530f6dc43b766d5eb2b59d39e5056e63d7f51 (patch)
tree798f57b18a07afa48fbcc2a1697a5a4d25fecee2
parentc6aaa123a676ccc478380f5ecf867cc05af855ae (diff)
downloadmediapointer-dvb-s2-e8f530f6dc43b766d5eb2b59d39e5056e63d7f51.tar.gz
mediapointer-dvb-s2-e8f530f6dc43b766d5eb2b59d39e5056e63d7f51.tar.bz2
user counter direction changed a long time ago, this screwed up the power
management code. The bug never showed up so late since we disabled this feature by default...
-rw-r--r--linux/drivers/media/dvb/dvb-core/dvb_frontend.c32
1 files changed, 18 insertions, 14 deletions
diff --git a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c
index 737d95edd..bff938203 100644
--- a/linux/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/linux/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -420,7 +420,7 @@ int dvb_frontend_is_exiting (struct dvb_frontend_data *fe)
if (fe->exit)
return 1;
- if (fe->dvbdev->users == 0 && dvb_shutdown_timeout)
+ if (fe->dvbdev->users == 1 && dvb_shutdown_timeout)
if (jiffies - fe->release_jiffies > dvb_shutdown_timeout * HZ)
return 1;
@@ -494,19 +494,6 @@ int dvb_frontend_thread (void *data)
static
-void dvb_frontend_start (struct dvb_frontend_data *fe)
-{
- dprintk ("%s\n", __FUNCTION__);
-
- if (!fe->exit && !fe->thread) {
- if (down_interruptible (&fe->sem))
- return;
- kernel_thread (dvb_frontend_thread, fe, 0);
- }
-}
-
-
-static
void dvb_frontend_stop (struct dvb_frontend_data *fe)
{
dprintk ("%s\n", __FUNCTION__);
@@ -522,6 +509,23 @@ void dvb_frontend_stop (struct dvb_frontend_data *fe)
static
+void dvb_frontend_start (struct dvb_frontend_data *fe)
+{
+ dprintk ("%s\n", __FUNCTION__);
+
+ if (fe->thread)
+ dvb_frontend_stop (fe);
+
+ if (down_interruptible (&fe->sem))
+ return;
+
+ fe->exit = 0;
+
+ kernel_thread (dvb_frontend_thread, fe, 0);
+}
+
+
+static
int dvb_frontend_ioctl (struct inode *inode, struct file *file,
unsigned int cmd, void *parg)
{