#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/isapnp.h>
#include <linux/mutex.h>
#include <linux/videodev2.h>
#include <linux/io.h>
#include <media/v4l2-device.h>
#include <media/v4l2-ioctl.h>
#include <media/v4l2-ctrls.h>
#include <media/v4l2-event.h>
#include "lm7000.h"
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_VERSION(…) …;
static int io = …;
static int radio_nr = …;
module_param(io, int, 0);
MODULE_PARM_DESC(…) …;
module_param(radio_nr, int, 0);
struct fmi
{ … };
static struct fmi fmi_card;
static struct pnp_dev *dev;
static bool pnp_attached;
#define RSF16_MINFREQ …
#define RSF16_MAXFREQ …
#define FMI_BIT_TUN_CE …
#define FMI_BIT_TUN_CLK …
#define FMI_BIT_TUN_DATA …
#define FMI_BIT_VOL_SW …
#define FMI_BIT_TUN_STRQ …
static void fmi_set_pins(void *handle, u8 pins)
{ … }
static inline void fmi_mute(struct fmi *fmi)
{ … }
static inline void fmi_unmute(struct fmi *fmi)
{ … }
static inline int fmi_getsigstr(struct fmi *fmi)
{ … }
static void fmi_set_freq(struct fmi *fmi)
{ … }
static int vidioc_querycap(struct file *file, void *priv,
struct v4l2_capability *v)
{ … }
static int vidioc_g_tuner(struct file *file, void *priv,
struct v4l2_tuner *v)
{ … }
static int vidioc_s_tuner(struct file *file, void *priv,
const struct v4l2_tuner *v)
{ … }
static int vidioc_s_frequency(struct file *file, void *priv,
const struct v4l2_frequency *f)
{ … }
static int vidioc_g_frequency(struct file *file, void *priv,
struct v4l2_frequency *f)
{ … }
static int fmi_s_ctrl(struct v4l2_ctrl *ctrl)
{ … }
static const struct v4l2_ctrl_ops fmi_ctrl_ops = …;
static const struct v4l2_file_operations fmi_fops = …;
static const struct v4l2_ioctl_ops fmi_ioctl_ops = …;
static struct isapnp_device_id id_table[] = …;
MODULE_DEVICE_TABLE(isapnp, id_table);
static int __init isapnp_fmi_probe(void)
{ … }
static int __init fmi_init(void)
{ … }
static void __exit fmi_exit(void)
{ … }
module_init(…) …;
module_exit(fmi_exit);