|
@@ -96,10 +96,6 @@ MODULE_PARM_DESC(dvb_mfe_wait_time, "Wait up to <mfe_wait_time> seconds on open(
|
|
|
* FESTATE_LOSTLOCK. When the lock has been lost, and we're searching it again.
|
|
|
*/
|
|
|
|
|
|
-#define DVB_FE_NO_EXIT 0
|
|
|
-#define DVB_FE_NORMAL_EXIT 1
|
|
|
-#define DVB_FE_DEVICE_REMOVED 2
|
|
|
-
|
|
|
static DEFINE_MUTEX(frontend_mutex);
|
|
|
|
|
|
struct dvb_frontend_private {
|
|
@@ -113,7 +109,6 @@ struct dvb_frontend_private {
|
|
|
wait_queue_head_t wait_queue;
|
|
|
struct task_struct *thread;
|
|
|
unsigned long release_jiffies;
|
|
|
- unsigned int exit;
|
|
|
unsigned int wakeup;
|
|
|
fe_status_t status;
|
|
|
unsigned long tune_mode_flags;
|
|
@@ -565,7 +560,7 @@ static int dvb_frontend_is_exiting(struct dvb_frontend *fe)
|
|
|
{
|
|
|
struct dvb_frontend_private *fepriv = fe->frontend_priv;
|
|
|
|
|
|
- if (fepriv->exit != DVB_FE_NO_EXIT)
|
|
|
+ if (fe->exit != DVB_FE_NO_EXIT)
|
|
|
return 1;
|
|
|
|
|
|
if (fepriv->dvbdev->writers == 1)
|
|
@@ -629,7 +624,7 @@ restart:
|
|
|
/* got signal or quitting */
|
|
|
if (!down_interruptible(&fepriv->sem))
|
|
|
semheld = true;
|
|
|
- fepriv->exit = DVB_FE_NORMAL_EXIT;
|
|
|
+ fe->exit = DVB_FE_NORMAL_EXIT;
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -739,9 +734,9 @@ restart:
|
|
|
|
|
|
fepriv->thread = NULL;
|
|
|
if (kthread_should_stop())
|
|
|
- fepriv->exit = DVB_FE_DEVICE_REMOVED;
|
|
|
+ fe->exit = DVB_FE_DEVICE_REMOVED;
|
|
|
else
|
|
|
- fepriv->exit = DVB_FE_NO_EXIT;
|
|
|
+ fe->exit = DVB_FE_NO_EXIT;
|
|
|
mb();
|
|
|
|
|
|
if (semheld)
|
|
@@ -756,7 +751,8 @@ static void dvb_frontend_stop(struct dvb_frontend *fe)
|
|
|
|
|
|
dev_dbg(fe->dvb->device, "%s:\n", __func__);
|
|
|
|
|
|
- fepriv->exit = DVB_FE_NORMAL_EXIT;
|
|
|
+ if (fe->exit != DVB_FE_DEVICE_REMOVED)
|
|
|
+ fe->exit = DVB_FE_NORMAL_EXIT;
|
|
|
mb();
|
|
|
|
|
|
if (!fepriv->thread)
|
|
@@ -826,7 +822,7 @@ static int dvb_frontend_start(struct dvb_frontend *fe)
|
|
|
dev_dbg(fe->dvb->device, "%s:\n", __func__);
|
|
|
|
|
|
if (fepriv->thread) {
|
|
|
- if (fepriv->exit == DVB_FE_NO_EXIT)
|
|
|
+ if (fe->exit == DVB_FE_NO_EXIT)
|
|
|
return 0;
|
|
|
else
|
|
|
dvb_frontend_stop (fe);
|
|
@@ -838,7 +834,7 @@ static int dvb_frontend_start(struct dvb_frontend *fe)
|
|
|
return -EINTR;
|
|
|
|
|
|
fepriv->state = FESTATE_IDLE;
|
|
|
- fepriv->exit = DVB_FE_NO_EXIT;
|
|
|
+ fe->exit = DVB_FE_NO_EXIT;
|
|
|
fepriv->thread = NULL;
|
|
|
mb();
|
|
|
|
|
@@ -1906,7 +1902,7 @@ static int dvb_frontend_ioctl(struct file *file,
|
|
|
if (down_interruptible(&fepriv->sem))
|
|
|
return -ERESTARTSYS;
|
|
|
|
|
|
- if (fepriv->exit != DVB_FE_NO_EXIT) {
|
|
|
+ if (fe->exit != DVB_FE_NO_EXIT) {
|
|
|
up(&fepriv->sem);
|
|
|
return -ENODEV;
|
|
|
}
|
|
@@ -2424,7 +2420,7 @@ static int dvb_frontend_open(struct inode *inode, struct file *file)
|
|
|
int ret;
|
|
|
|
|
|
dev_dbg(fe->dvb->device, "%s:\n", __func__);
|
|
|
- if (fepriv->exit == DVB_FE_DEVICE_REMOVED)
|
|
|
+ if (fe->exit == DVB_FE_DEVICE_REMOVED)
|
|
|
return -ENODEV;
|
|
|
|
|
|
if (adapter->mfe_shared) {
|
|
@@ -2529,7 +2525,7 @@ static int dvb_frontend_release(struct inode *inode, struct file *file)
|
|
|
|
|
|
if (dvbdev->users == -1) {
|
|
|
wake_up(&fepriv->wait_queue);
|
|
|
- if (fepriv->exit != DVB_FE_NO_EXIT)
|
|
|
+ if (fe->exit != DVB_FE_NO_EXIT)
|
|
|
wake_up(&dvbdev->wait_queue);
|
|
|
if (fe->ops.ts_bus_ctrl)
|
|
|
fe->ops.ts_bus_ctrl(fe, 0);
|