diff options
author | Holger Waechtler <devnull@localhost> | 2002-11-08 22:00:11 +0000 |
---|---|---|
committer | Holger Waechtler <devnull@localhost> | 2002-11-08 22:00:11 +0000 |
commit | e8f530f6dc43b766d5eb2b59d39e5056e63d7f51 (patch) | |
tree | 798f57b18a07afa48fbcc2a1697a5a4d25fecee2 | |
parent | c6aaa123a676ccc478380f5ecf867cc05af855ae (diff) | |
download | mediapointer-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.c | 32 |
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) { |