When enable_source finds the tuner busy, do dvb_generic_release().
In addition, when dvb_frontend_start() fails, call disable_source
to release tuner.

Signed-off-by: Shuah Khan <shua...@osg.samsung.com>
---
 drivers/media/dvb-core/dvb_frontend.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/media/dvb-core/dvb_frontend.c 
b/drivers/media/dvb-core/dvb_frontend.c
index c06dd61..67e30ae 100644
--- a/drivers/media/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb-core/dvb_frontend.c
@@ -2503,13 +2503,13 @@ static int dvb_frontend_open(struct inode *inode, 
struct file *file)
                        if (ret) {
                                dev_err(fe->dvb->device,
                                        "Tuner is busy. Error %d\n", ret);
-                               goto err1;
+                               goto err2;
                        }
                }
 #endif
                ret = dvb_frontend_start (fe);
                if (ret)
-                       goto err2;
+                       goto err3;
 
                /*  empty event queue */
                fepriv->events.eventr = fepriv->events.eventw = 0;
@@ -2519,6 +2519,11 @@ static int dvb_frontend_open(struct inode *inode, struct 
file *file)
                mutex_unlock (&adapter->mfe_lock);
        return ret;
 
+err3:
+#ifdef CONFIG_MEDIA_CONTROLLER_DVB
+       if (fe->dvb->mdev && fe->dvb->mdev->disable_source)
+               fe->dvb->mdev->disable_source(dvbdev->entity);
+#endif
 err2:
        dvb_generic_release(inode, file);
 err1:
-- 
2.1.4

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to