#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/i2c.h>
#include <linux/videodev2.h>
#include <linux/slab.h>
#include <media/v4l2-device.h>
#include <media/v4l2-common.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-fh.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-event.h>
#include "si4713.h"
static int radio_nr = …;
module_param(radio_nr, int, 0);
MODULE_PARM_DESC(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_VERSION(…) …;
MODULE_ALIAS(…) …;
struct radio_si4713_device { … };
static const struct v4l2_file_operations radio_si4713_fops = …;
static int radio_si4713_querycap(struct file *file, void *priv,
struct v4l2_capability *capability)
{ … }
static inline struct v4l2_device *get_v4l2_dev(struct file *file)
{ … }
static int radio_si4713_g_modulator(struct file *file, void *p,
struct v4l2_modulator *vm)
{ … }
static int radio_si4713_s_modulator(struct file *file, void *p,
const struct v4l2_modulator *vm)
{ … }
static int radio_si4713_g_frequency(struct file *file, void *p,
struct v4l2_frequency *vf)
{ … }
static int radio_si4713_s_frequency(struct file *file, void *p,
const struct v4l2_frequency *vf)
{ … }
static long radio_si4713_default(struct file *file, void *p,
bool valid_prio, unsigned int cmd, void *arg)
{ … }
static const struct v4l2_ioctl_ops radio_si4713_ioctl_ops = …;
static const struct video_device radio_si4713_vdev_template = …;
static int radio_si4713_pdriver_probe(struct platform_device *pdev)
{ … }
static void radio_si4713_pdriver_remove(struct platform_device *pdev)
{ … }
static struct platform_driver radio_si4713_pdriver = …;
module_platform_driver(…) …;