Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 65fe42d6 authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

[media] hdpvr: add prio and control event support

parent ede197aa
Loading
Loading
Loading
Loading
+12 −8
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@
#include <media/v4l2-dev.h>
#include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-event.h>
#include "hdpvr.h"

#define BULK_URB_TIMEOUT   90 /* 0.09 seconds */
@@ -479,16 +480,15 @@ err:

static unsigned int hdpvr_poll(struct file *filp, poll_table *wait)
{
	unsigned long req_events = poll_requested_events(wait);
	struct hdpvr_buffer *buf = NULL;
	struct hdpvr_device *dev = video_drvdata(filp);
	unsigned int mask = 0;
	unsigned int mask = v4l2_ctrl_poll(filp, wait);

	mutex_lock(&dev->io_mutex);
	if (!(req_events & (POLLIN | POLLRDNORM)))
		return mask;

	if (!video_is_registered(dev->video_dev)) {
		mutex_unlock(&dev->io_mutex);
		return -EIO;
	}
	mutex_lock(&dev->io_mutex);

	if (dev->status == STATUS_IDLE) {
		if (hdpvr_start_streaming(dev)) {
@@ -884,6 +884,9 @@ static const struct v4l2_ioctl_ops hdpvr_ioctl_ops = {
	.vidioc_g_fmt_vid_cap	= vidioc_g_fmt_vid_cap,
	.vidioc_encoder_cmd	= vidioc_encoder_cmd,
	.vidioc_try_encoder_cmd	= vidioc_try_encoder_cmd,
	.vidioc_log_status	= v4l2_ctrl_log_status,
	.vidioc_subscribe_event = v4l2_ctrl_subscribe_event,
	.vidioc_unsubscribe_event = v4l2_event_unsubscribe,
};

static void hdpvr_device_release(struct video_device *vdev)
@@ -1008,6 +1011,7 @@ int hdpvr_register_videodev(struct hdpvr_device *dev, struct device *parent,
	strcpy(dev->video_dev->name, "Hauppauge HD PVR");
	dev->video_dev->v4l2_dev = &dev->v4l2_dev;
	video_set_drvdata(dev->video_dev, dev);
	set_bit(V4L2_FL_USE_FH_PRIO, &dev->video_dev->flags);

	res = video_register_device(dev->video_dev, VFL_TYPE_GRABBER, devnum);
	if (res < 0) {