#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/netdevice.h>
#include <linux/delay.h>
#include <linux/slab.h>
#include <linux/pci.h>
#include <linux/can/dev.h>
#include <linux/io.h>
#include "sja1000.h"
#define F81601_PCI_MAX_CHAN …
#define F81601_DECODE_REG …
#define F81601_IO_MODE …
#define F81601_MEM_MODE …
#define F81601_CFG_MODE …
#define F81601_CAN2_INTERNAL_CLK …
#define F81601_CAN1_INTERNAL_CLK …
#define F81601_CAN2_EN …
#define F81601_CAN1_EN …
#define F81601_TRAP_REG …
#define F81601_CAN2_HAS_EN …
struct f81601_pci_card { … };
static const struct pci_device_id f81601_pci_tbl[] = …;
MODULE_DEVICE_TABLE(pci, f81601_pci_tbl);
static bool internal_clk = …;
module_param(internal_clk, bool, 0444);
MODULE_PARM_DESC(…) …;
static unsigned int external_clk;
module_param(external_clk, uint, 0444);
MODULE_PARM_DESC(…) …;
static u8 f81601_pci_read_reg(const struct sja1000_priv *priv, int port)
{ … }
static void f81601_pci_write_reg(const struct sja1000_priv *priv, int port,
u8 val)
{ … }
static void f81601_pci_remove(struct pci_dev *pdev)
{ … }
static int f81601_pci_probe(struct pci_dev *pdev,
const struct pci_device_id *ent)
{ … }
static struct pci_driver f81601_pci_driver = …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
module_pci_driver(…) …;