#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 DRV_NAME …
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define EMS_PCI_V1_MAX_CHAN …
#define EMS_PCI_V2_MAX_CHAN …
#define EMS_PCI_V3_MAX_CHAN …
#define EMS_PCI_MAX_CHAN …
struct ems_pci_card { … };
#define EMS_PCI_CAN_CLOCK …
#define PITA2_ICR …
#define PITA2_ICR_INT0 …
#define PITA2_ICR_INT0_EN …
#define PITA2_MISC …
#define PITA2_MISC_CONFIG …
#define PLX_ICSR …
#define PLX_ICSR_LINTI1_ENA …
#define PLX_ICSR_PCIINT_ENA …
#define PLX_ICSR_LINTI1_CLR …
#define PLX_ICSR_ENA_CLR …
#define ASIX_LINTSR …
#define ASIX_LINTSR_INT0AC …
#define ASIX_LIEMR …
#define ASIX_LIEMR_L0EINTEN …
#define ASIX_LIEMR_LRST …
#define EMS_PCI_OCR …
#define EMS_PCI_CDR …
#define EMS_PCI_V1_BASE_BAR …
#define EMS_PCI_V1_CONF_BAR …
#define EMS_PCI_V1_CONF_SIZE …
#define EMS_PCI_V1_CAN_BASE_OFFSET …
#define EMS_PCI_V1_CAN_CTRL_SIZE …
#define EMS_PCI_V2_BASE_BAR …
#define EMS_PCI_V2_CONF_BAR …
#define EMS_PCI_V2_CONF_SIZE …
#define EMS_PCI_V2_CAN_BASE_OFFSET …
#define EMS_PCI_V2_CAN_CTRL_SIZE …
#define EMS_PCI_V3_BASE_BAR …
#define EMS_PCI_V3_CONF_BAR …
#define EMS_PCI_V3_CONF_SIZE …
#define EMS_PCI_V3_CAN_BASE_OFFSET …
#define EMS_PCI_V3_CAN_CTRL_SIZE …
#define EMS_PCI_BASE_SIZE …
#define PCI_SUBDEVICE_ID_EMS …
static const struct pci_device_id ems_pci_tbl[] = …;
MODULE_DEVICE_TABLE(pci, ems_pci_tbl);
static u8 ems_pci_v1_readb(struct ems_pci_card *card, unsigned int port)
{ … }
static u8 ems_pci_v1_read_reg(const struct sja1000_priv *priv, int port)
{ … }
static void ems_pci_v1_write_reg(const struct sja1000_priv *priv,
int port, u8 val)
{ … }
static void ems_pci_v1_post_irq(const struct sja1000_priv *priv)
{ … }
static u8 ems_pci_v2_read_reg(const struct sja1000_priv *priv, int port)
{ … }
static void ems_pci_v2_write_reg(const struct sja1000_priv *priv,
int port, u8 val)
{ … }
static void ems_pci_v2_post_irq(const struct sja1000_priv *priv)
{ … }
static u8 ems_pci_v3_read_reg(const struct sja1000_priv *priv, int port)
{ … }
static void ems_pci_v3_write_reg(const struct sja1000_priv *priv,
int port, u8 val)
{ … }
static void ems_pci_v3_post_irq(const struct sja1000_priv *priv)
{ … }
static inline int ems_pci_check_chan(const struct sja1000_priv *priv)
{ … }
static void ems_pci_del_card(struct pci_dev *pdev)
{ … }
static void ems_pci_card_reset(struct ems_pci_card *card)
{ … }
static int ems_pci_add_card(struct pci_dev *pdev,
const struct pci_device_id *ent)
{ … }
static struct pci_driver ems_pci_driver = …;
module_pci_driver(…) …;