#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/skbuff.h>
#include <linux/device.h>
#include <linux/firmware.h>
#include <linux/usb.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
#define VERSION …
static struct usb_driver bfusb_driver;
static const struct usb_device_id bfusb_table[] = …;
MODULE_DEVICE_TABLE(usb, bfusb_table);
#define BFUSB_MAX_BLOCK_SIZE …
#define BFUSB_BLOCK_TIMEOUT …
#define BFUSB_TX_PROCESS …
#define BFUSB_TX_WAKEUP …
#define BFUSB_MAX_BULK_TX …
#define BFUSB_MAX_BULK_RX …
struct bfusb_data { … };
struct bfusb_data_scb { … };
static void bfusb_tx_complete(struct urb *urb);
static void bfusb_rx_complete(struct urb *urb);
static struct urb *bfusb_get_completed(struct bfusb_data *data)
{ … }
static void bfusb_unlink_urbs(struct bfusb_data *data)
{ … }
static int bfusb_send_bulk(struct bfusb_data *data, struct sk_buff *skb)
{ … }
static void bfusb_tx_wakeup(struct bfusb_data *data)
{ … }
static void bfusb_tx_complete(struct urb *urb)
{ … }
static int bfusb_rx_submit(struct bfusb_data *data, struct urb *urb)
{ … }
static inline int bfusb_recv_block(struct bfusb_data *data, int hdr, unsigned char *buf, int len)
{ … }
static void bfusb_rx_complete(struct urb *urb)
{ … }
static int bfusb_open(struct hci_dev *hdev)
{ … }
static int bfusb_flush(struct hci_dev *hdev)
{ … }
static int bfusb_close(struct hci_dev *hdev)
{ … }
static int bfusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
{ … }
static int bfusb_load_firmware(struct bfusb_data *data,
const unsigned char *firmware, int count)
{ … }
static int bfusb_probe(struct usb_interface *intf, const struct usb_device_id *id)
{ … }
static void bfusb_disconnect(struct usb_interface *intf)
{ … }
static struct usb_driver bfusb_driver = …;
module_usb_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_VERSION(…);
MODULE_LICENSE(…) …;
MODULE_FIRMWARE(…) …;