#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/spinlock.h>
#include <linux/moduleparam.h>
#include <linux/skbuff.h>
#include <linux/string.h>
#include <linux/serial.h>
#include <linux/serial_reg.h>
#include <linux/bitops.h>
#include <asm/io.h>
#include <pcmcia/cistpl.h>
#include <pcmcia/ciscode.h>
#include <pcmcia/ds.h>
#include <pcmcia/cisreg.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
struct dtl1_info { … };
static int dtl1_config(struct pcmcia_device *link);
#define XMIT_SENDING …
#define XMIT_WAKEUP …
#define XMIT_WAITING …
#define RECV_WAIT_NSH …
#define RECV_WAIT_DATA …
struct nsh { … } __packed;
#define NSHL …
static int dtl1_write(unsigned int iobase, int fifo_size, __u8 *buf, int len)
{ … }
static void dtl1_write_wakeup(struct dtl1_info *info)
{ … }
static void dtl1_control(struct dtl1_info *info, struct sk_buff *skb)
{ … }
static void dtl1_receive(struct dtl1_info *info)
{ … }
static irqreturn_t dtl1_interrupt(int irq, void *dev_inst)
{ … }
static int dtl1_hci_open(struct hci_dev *hdev)
{ … }
static int dtl1_hci_flush(struct hci_dev *hdev)
{ … }
static int dtl1_hci_close(struct hci_dev *hdev)
{ … }
static int dtl1_hci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
{ … }
static int dtl1_open(struct dtl1_info *info)
{ … }
static int dtl1_close(struct dtl1_info *info)
{ … }
static int dtl1_probe(struct pcmcia_device *link)
{ … }
static void dtl1_detach(struct pcmcia_device *link)
{ … }
static int dtl1_confcheck(struct pcmcia_device *p_dev, void *priv_data)
{ … }
static int dtl1_config(struct pcmcia_device *link)
{ … }
static const struct pcmcia_device_id dtl1_ids[] = …;
MODULE_DEVICE_TABLE(pcmcia, dtl1_ids);
static struct pcmcia_driver dtl1_driver = …;
module_pcmcia_driver(…);