#include <linux/efi.h>
#include <linux/module.h>
#include <linux/firmware.h>
#include <linux/dmi.h>
#include <linux/of.h>
#include <linux/string.h>
#include <asm/unaligned.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
#include "btbcm.h"
#define VERSION …
#define BDADDR_BCM20702A0 …
#define BDADDR_BCM20702A1 …
#define BDADDR_BCM2076B1 …
#define BDADDR_BCM43430A0 …
#define BDADDR_BCM43430A1 …
#define BDADDR_BCM4324B3 …
#define BDADDR_BCM4330B1 …
#define BDADDR_BCM4334B0 …
#define BDADDR_BCM4345C5 …
#define BDADDR_BCM43341B …
#define BCM_FW_NAME_LEN …
#define BCM_FW_NAME_COUNT_MAX …
bcm_fw_name;
#ifdef CONFIG_EFI
static int btbcm_set_bdaddr_from_efi(struct hci_dev *hdev)
{ … }
#else
static int btbcm_set_bdaddr_from_efi(struct hci_dev *hdev)
{
return -EOPNOTSUPP;
}
#endif
int btbcm_check_bdaddr(struct hci_dev *hdev)
{ … }
EXPORT_SYMBOL_GPL(…);
int btbcm_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr)
{ … }
EXPORT_SYMBOL_GPL(…);
int btbcm_read_pcm_int_params(struct hci_dev *hdev,
struct bcm_set_pcm_int_params *params)
{ … }
EXPORT_SYMBOL_GPL(…);
int btbcm_write_pcm_int_params(struct hci_dev *hdev,
const struct bcm_set_pcm_int_params *params)
{ … }
EXPORT_SYMBOL_GPL(…);
int btbcm_patchram(struct hci_dev *hdev, const struct firmware *fw)
{ … }
EXPORT_SYMBOL(…);
static int btbcm_reset(struct hci_dev *hdev)
{ … }
static struct sk_buff *btbcm_read_local_name(struct hci_dev *hdev)
{ … }
static struct sk_buff *btbcm_read_local_version(struct hci_dev *hdev)
{ … }
static struct sk_buff *btbcm_read_verbose_config(struct hci_dev *hdev)
{ … }
static struct sk_buff *btbcm_read_controller_features(struct hci_dev *hdev)
{ … }
static struct sk_buff *btbcm_read_usb_product(struct hci_dev *hdev)
{ … }
static const struct dmi_system_id disable_broken_read_transmit_power[] = …;
static int btbcm_read_info(struct hci_dev *hdev)
{ … }
static int btbcm_print_controller_features(struct hci_dev *hdev)
{ … }
static int btbcm_print_local_name(struct hci_dev *hdev)
{ … }
struct bcm_subver_table { … };
static const struct bcm_subver_table bcm_uart_subver_table[] = …;
static const struct bcm_subver_table bcm_usb_subver_table[] = …;
static const char *btbcm_get_board_name(struct device *dev)
{ … }
int btbcm_initialize(struct hci_dev *hdev, bool *fw_load_done, bool use_autobaud_mode)
{ … }
EXPORT_SYMBOL_GPL(…);
int btbcm_finalize(struct hci_dev *hdev, bool *fw_load_done, bool use_autobaud_mode)
{ … }
EXPORT_SYMBOL_GPL(…);
int btbcm_setup_patchram(struct hci_dev *hdev)
{ … }
EXPORT_SYMBOL_GPL(…);
int btbcm_setup_apple(struct hci_dev *hdev)
{ … }
EXPORT_SYMBOL_GPL(…);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_VERSION(…);
MODULE_LICENSE(…) …;