#include <linux/kernel.h>
#include <linux/slab.h>
#include "pvrusb2-context.h"
#include "pvrusb2-hdw.h"
#include "pvrusb2.h"
#include "pvrusb2-debug.h"
#include "pvrusb2-v4l2.h"
#include "pvrusb2-ioread.h"
#include <linux/videodev2.h>
#include <linux/module.h>
#include <media/v4l2-dev.h>
#include <media/v4l2-device.h>
#include <media/v4l2-fh.h>
#include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h>
struct pvr2_v4l2_dev;
struct pvr2_v4l2_fh;
struct pvr2_v4l2;
struct pvr2_v4l2_dev { … };
struct pvr2_v4l2_fh { … };
struct pvr2_v4l2 { … };
static int video_nr[PVR_NUM] = …;
module_param_array(…);
MODULE_PARM_DESC(…) …;
static int radio_nr[PVR_NUM] = …;
module_param_array(…);
MODULE_PARM_DESC(…) …;
static int vbi_nr[PVR_NUM] = …;
module_param_array(…);
MODULE_PARM_DESC(…) …;
#define PVR_FORMAT_PIX …
#define PVR_FORMAT_VBI …
static struct v4l2_format pvr_format [] = …;
static int pvr2_querycap(struct file *file, void *priv, struct v4l2_capability *cap)
{ … }
static int pvr2_g_std(struct file *file, void *priv, v4l2_std_id *std)
{ … }
static int pvr2_s_std(struct file *file, void *priv, v4l2_std_id std)
{ … }
static int pvr2_querystd(struct file *file, void *priv, v4l2_std_id *std)
{ … }
static int pvr2_enum_input(struct file *file, void *priv, struct v4l2_input *vi)
{ … }
static int pvr2_g_input(struct file *file, void *priv, unsigned int *i)
{ … }
static int pvr2_s_input(struct file *file, void *priv, unsigned int inp)
{ … }
static int pvr2_enumaudio(struct file *file, void *priv, struct v4l2_audio *vin)
{ … }
static int pvr2_g_audio(struct file *file, void *priv, struct v4l2_audio *vin)
{ … }
static int pvr2_s_audio(struct file *file, void *priv, const struct v4l2_audio *vout)
{ … }
static int pvr2_g_tuner(struct file *file, void *priv, struct v4l2_tuner *vt)
{ … }
static int pvr2_s_tuner(struct file *file, void *priv, const struct v4l2_tuner *vt)
{ … }
static int pvr2_s_frequency(struct file *file, void *priv, const struct v4l2_frequency *vf)
{ … }
static int pvr2_g_frequency(struct file *file, void *priv, struct v4l2_frequency *vf)
{ … }
static int pvr2_enum_fmt_vid_cap(struct file *file, void *priv, struct v4l2_fmtdesc *fd)
{ … }
static int pvr2_g_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)
{ … }
static int pvr2_try_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)
{ … }
static int pvr2_s_fmt_vid_cap(struct file *file, void *priv, struct v4l2_format *vf)
{ … }
static int pvr2_streamon(struct file *file, void *priv, enum v4l2_buf_type i)
{ … }
static int pvr2_streamoff(struct file *file, void *priv, enum v4l2_buf_type i)
{ … }
static int pvr2_queryctrl(struct file *file, void *priv,
struct v4l2_queryctrl *vc)
{ … }
static int pvr2_querymenu(struct file *file, void *priv, struct v4l2_querymenu *vm)
{ … }
static int pvr2_g_ctrl(struct file *file, void *priv, struct v4l2_control *vc)
{ … }
static int pvr2_s_ctrl(struct file *file, void *priv, struct v4l2_control *vc)
{ … }
static int pvr2_g_ext_ctrls(struct file *file, void *priv,
struct v4l2_ext_controls *ctls)
{ … }
static int pvr2_s_ext_ctrls(struct file *file, void *priv,
struct v4l2_ext_controls *ctls)
{ … }
static int pvr2_try_ext_ctrls(struct file *file, void *priv,
struct v4l2_ext_controls *ctls)
{ … }
static int pvr2_g_pixelaspect(struct file *file, void *priv,
int type, struct v4l2_fract *f)
{ … }
static int pvr2_g_selection(struct file *file, void *priv,
struct v4l2_selection *sel)
{ … }
static int pvr2_s_selection(struct file *file, void *priv,
struct v4l2_selection *sel)
{ … }
static int pvr2_log_status(struct file *file, void *priv)
{ … }
static const struct v4l2_ioctl_ops pvr2_ioctl_ops = …;
static void pvr2_v4l2_dev_destroy(struct pvr2_v4l2_dev *dip)
{ … }
static void pvr2_v4l2_dev_disassociate_parent(struct pvr2_v4l2_dev *dip)
{ … }
static void pvr2_v4l2_destroy_no_lock(struct pvr2_v4l2 *vp)
{ … }
static void pvr2_video_device_release(struct video_device *vdev)
{ … }
static void pvr2_v4l2_internal_check(struct pvr2_channel *chp)
{ … }
static int pvr2_v4l2_release(struct file *file)
{ … }
static int pvr2_v4l2_open(struct file *file)
{ … }
static void pvr2_v4l2_notify(void *ptr)
{ … }
static int pvr2_v4l2_iosetup(struct pvr2_v4l2_fh *fh)
{ … }
static ssize_t pvr2_v4l2_read(struct file *file,
char __user *buff, size_t count, loff_t *ppos)
{ … }
static __poll_t pvr2_v4l2_poll(struct file *file, poll_table *wait)
{ … }
static const struct v4l2_file_operations vdev_fops = …;
static const struct video_device vdev_template = …;
static void pvr2_v4l2_dev_init(struct pvr2_v4l2_dev *dip,
struct pvr2_v4l2 *vp,
int v4l_type)
{ … }
struct pvr2_v4l2 *pvr2_v4l2_create(struct pvr2_context *mnp)
{ … }