#define pr_fmt(fmt) …
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/types.h>
#include <linux/fcntl.h>
#include <linux/in.h>
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/moduleparam.h>
#include <linux/netdevice.h>
#include <linux/hdlc.h>
#include <linux/pci.h>
#include <linux/delay.h>
#include <asm/io.h>
#include "hd64572.h"
#undef DEBUG_PKT
#define DEBUG_RINGS
#define PC300_PLX_SIZE …
#define PC300_SCA_SIZE …
#define MAX_TX_BUFFERS …
static int pci_clock_freq = …;
static int use_crystal_clock;
static unsigned int CLOCK_BASE;
#define PC300_CLKSEL_MASK …
#define PC300_CHMEDIA_MASK(port) …
#define PC300_CTYPE_MASK …
enum { … };
plx9050;
port_t;
card_t;
#define get_port(card, port) …
#include "hd64572.c"
static void pc300_set_iface(port_t *port)
{ … }
static int pc300_open(struct net_device *dev)
{ … }
static int pc300_close(struct net_device *dev)
{ … }
static int pc300_siocdevprivate(struct net_device *dev, struct ifreq *ifr,
void __user *data, int cmd)
{ … }
static int pc300_ioctl(struct net_device *dev, struct if_settings *ifs)
{ … }
static void pc300_pci_remove_one(struct pci_dev *pdev)
{ … }
static const struct net_device_ops pc300_ops = …;
static int pc300_pci_init_one(struct pci_dev *pdev,
const struct pci_device_id *ent)
{ … }
static const struct pci_device_id pc300_pci_tbl[] = …;
static struct pci_driver pc300_pci_driver = …;
static int __init pc300_init_module(void)
{ … }
static void __exit pc300_cleanup_module(void)
{ … }
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_DEVICE_TABLE(pci, pc300_pci_tbl);
module_param(pci_clock_freq, int, 0444);
MODULE_PARM_DESC(…) …;
module_param(use_crystal_clock, int, 0444);
MODULE_PARM_DESC(…) …;
module_init(…) …;
module_exit(pc300_cleanup_module);