#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/timer.h>
#include <linux/errno.h>
#include <linux/ptrace.h>
#include <linux/ioport.h>
#include <linux/spinlock.h>
#include <linux/moduleparam.h>
#include <linux/wait.h>
#include <linux/skbuff.h>
#include <linux/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 bluecard_info { … };
static int bluecard_config(struct pcmcia_device *link);
static void bluecard_release(struct pcmcia_device *link);
static void bluecard_detach(struct pcmcia_device *p_dev);
#define DEFAULT_BAUD_RATE …
#define CARD_READY …
#define CARD_ACTIVITY …
#define CARD_HAS_PCCARD_ID …
#define CARD_HAS_POWER_LED …
#define CARD_HAS_ACTIVITY_LED …
#define XMIT_SENDING …
#define XMIT_WAKEUP …
#define XMIT_BUFFER_NUMBER …
#define XMIT_BUF_ONE_READY …
#define XMIT_BUF_TWO_READY …
#define XMIT_SENDING_READY …
#define RECV_WAIT_PACKET_TYPE …
#define RECV_WAIT_EVENT_HEADER …
#define RECV_WAIT_ACL_HEADER …
#define RECV_WAIT_SCO_HEADER …
#define RECV_WAIT_DATA …
#define PKT_BAUD_RATE_57600 …
#define PKT_BAUD_RATE_115200 …
#define PKT_BAUD_RATE_230400 …
#define PKT_BAUD_RATE_460800 …
#define REG_COMMAND …
#define REG_INTERRUPT …
#define REG_CONTROL …
#define REG_RX_CONTROL …
#define REG_CARD_RESET …
#define REG_LED_CTRL …
#define REG_COMMAND_TX_BUF_ONE …
#define REG_COMMAND_TX_BUF_TWO …
#define REG_COMMAND_RX_BUF_ONE …
#define REG_COMMAND_RX_BUF_TWO …
#define REG_COMMAND_RX_WIN_ONE …
#define REG_COMMAND_RX_WIN_TWO …
#define REG_CONTROL_BAUD_RATE_57600 …
#define REG_CONTROL_BAUD_RATE_115200 …
#define REG_CONTROL_BAUD_RATE_230400 …
#define REG_CONTROL_BAUD_RATE_460800 …
#define REG_CONTROL_RTS …
#define REG_CONTROL_BT_ON …
#define REG_CONTROL_BT_RESET …
#define REG_CONTROL_BT_RES_PU …
#define REG_CONTROL_INTERRUPT …
#define REG_CONTROL_CARD_RESET …
#define RTS_LEVEL_SHIFT_BITS …
static void bluecard_activity_led_timeout(struct timer_list *t)
{ … }
static void bluecard_enable_activity_led(struct bluecard_info *info)
{ … }
static int bluecard_write(unsigned int iobase, unsigned int offset, __u8 *buf, int len)
{ … }
static void bluecard_write_wakeup(struct bluecard_info *info)
{ … }
static int bluecard_read(unsigned int iobase, unsigned int offset, __u8 *buf, int size)
{ … }
static void bluecard_receive(struct bluecard_info *info,
unsigned int offset)
{ … }
static irqreturn_t bluecard_interrupt(int irq, void *dev_inst)
{ … }
static int bluecard_hci_set_baud_rate(struct hci_dev *hdev, int baud)
{ … }
static int bluecard_hci_flush(struct hci_dev *hdev)
{ … }
static int bluecard_hci_open(struct hci_dev *hdev)
{ … }
static int bluecard_hci_close(struct hci_dev *hdev)
{ … }
static int bluecard_hci_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
{ … }
static int bluecard_open(struct bluecard_info *info)
{ … }
static int bluecard_close(struct bluecard_info *info)
{ … }
static int bluecard_probe(struct pcmcia_device *link)
{ … }
static void bluecard_detach(struct pcmcia_device *link)
{ … }
static int bluecard_config(struct pcmcia_device *link)
{ … }
static void bluecard_release(struct pcmcia_device *link)
{ … }
static const struct pcmcia_device_id bluecard_ids[] = …;
MODULE_DEVICE_TABLE(pcmcia, bluecard_ids);
static struct pcmcia_driver bluecard_driver = …;
module_pcmcia_driver(…);