This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: bttv: radio use v4l2_fh instead of bttv_fh
Author:  Deborah Brouwer <[email protected]>
Date:    Fri Jul 14 19:15:59 2023 -0700

Use a v4l2_fh when opening a radio device instead of a bttv_fh and manage
it with v4l2_fh_open() and v4l2_fh_release() and v4l2_ctrl_poll(). This
eliminates bttv_fh from the radio in preparation for vb2 conversion which
stops using separate bttv file handles altogether.

Signed-off-by: Deborah Brouwer <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>

 drivers/media/pci/bt8xx/bttv-driver.c | 37 ++++++++++-------------------------
 1 file changed, 10 insertions(+), 27 deletions(-)

---

diff --git a/drivers/media/pci/bt8xx/bttv-driver.c 
b/drivers/media/pci/bt8xx/bttv-driver.c
index 6e19d3d35ffb..e59f40dfccc3 100644
--- a/drivers/media/pci/bt8xx/bttv-driver.c
+++ b/drivers/media/pci/bt8xx/bttv-driver.c
@@ -2740,45 +2740,34 @@ static int radio_open(struct file *file)
 {
        struct video_device *vdev = video_devdata(file);
        struct bttv *btv = video_drvdata(file);
-       struct bttv_fh *fh;
+       int ret = v4l2_fh_open(file);
 
-       dprintk("open dev=%s\n", video_device_node_name(vdev));
+       if (ret)
+               return ret;
 
+       dprintk("open dev=%s\n", video_device_node_name(vdev));
        dprintk("%d: open called (radio)\n", btv->c.nr);
 
-       /* allocate per filehandle data */
-       fh = kmalloc(sizeof(*fh), GFP_KERNEL);
-       if (unlikely(!fh))
-               return -ENOMEM;
-       file->private_data = fh;
-       *fh = btv->init;
-       v4l2_fh_init(&fh->fh, vdev);
-
        btv->radio_user++;
        audio_mute(btv, btv->mute);
 
-       v4l2_fh_add(&fh->fh);
-
        return 0;
 }
 
 static int radio_release(struct file *file)
 {
-       struct bttv_fh *fh = file->private_data;
        struct bttv *btv = video_drvdata(file);
        struct saa6588_command cmd;
 
-       file->private_data = NULL;
-       v4l2_fh_del(&fh->fh);
-       v4l2_fh_exit(&fh->fh);
-       kfree(fh);
-
        btv->radio_user--;
 
        bttv_call_all(btv, core, command, SAA6588_CMD_CLOSE, &cmd);
 
        if (btv->radio_user == 0)
                btv->has_radio_tuner = 0;
+
+       v4l2_fh_release(file);
+
        return 0;
 }
 
@@ -2858,23 +2847,17 @@ static ssize_t radio_read(struct file *file, char 
__user *data,
 
 static __poll_t radio_poll(struct file *file, poll_table *wait)
 {
-       struct bttv_fh *fh = file->private_data;
        struct bttv *btv = video_drvdata(file);
-       __poll_t req_events = poll_requested_events(wait);
        struct saa6588_command cmd;
-       __poll_t res = 0;
+       __poll_t rc = v4l2_ctrl_poll(file, wait);
 
-       if (v4l2_event_pending(&fh->fh))
-               res = EPOLLPRI;
-       else if (req_events & EPOLLPRI)
-               poll_wait(file, &fh->fh.wait, wait);
        radio_enable(btv);
        cmd.instance = file;
        cmd.event_list = wait;
-       cmd.poll_mask = res;
+       cmd.poll_mask = 0;
        bttv_call_all(btv, core, command, SAA6588_CMD_POLL, &cmd);
 
-       return cmd.poll_mask;
+       return rc | cmd.poll_mask;
 }
 
 static const struct v4l2_file_operations radio_fops =

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to