#include <linux/init.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/pci.h>
#include <linux/slab.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/uio_driver.h>
#define PCI_VENDOR_ID_HUMUSOFT …
#define PCI_DEVICE_ID_MF624 …
#define PCI_SUBVENDOR_ID_HUMUSOFT …
#define PCI_SUBDEVICE_DEVICE …
#define INTCSR …
#define INTCSR_ADINT_ENABLE …
#define INTCSR_CTR4INT_ENABLE …
#define INTCSR_PCIINT_ENABLE …
#define INTCSR_ADINT_STATUS …
#define INTCSR_CTR4INT_STATUS …
enum mf624_interrupt_source { … };
static void mf624_disable_interrupt(enum mf624_interrupt_source source,
struct uio_info *info)
{ … }
static void mf624_enable_interrupt(enum mf624_interrupt_source source,
struct uio_info *info)
{ … }
static irqreturn_t mf624_irq_handler(int irq, struct uio_info *info)
{ … }
static int mf624_irqcontrol(struct uio_info *info, s32 irq_on)
{ … }
static int mf624_setup_mem(struct pci_dev *dev, int bar, struct uio_mem *mem, const char *name)
{ … }
static int mf624_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
{ … }
static void mf624_pci_remove(struct pci_dev *dev)
{ … }
static const struct pci_device_id mf624_pci_id[] = …;
static struct pci_driver mf624_pci_driver = …;
MODULE_DEVICE_TABLE(pci, mf624_pci_id);
module_pci_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_AUTHOR(…) …;