#include <linux/module.h>
#include <linux/firmware.h>
#include <linux/usb.h>
#include <linux/iopoll.h>
#include <asm/unaligned.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
#include "btmtk.h"
#define VERSION …
#define MTK_FW_ROM_PATCH_HEADER_SIZE …
#define MTK_FW_ROM_PATCH_GD_SIZE …
#define MTK_FW_ROM_PATCH_SEC_MAP_SIZE …
#define MTK_SEC_MAP_COMMON_SIZE …
#define MTK_SEC_MAP_NEED_SEND_SIZE …
#define MTK_ISO_THRESHOLD …
struct btmtk_patch_header { … } __packed;
struct btmtk_global_desc { … } __packed;
struct btmtk_section_map { … } __packed;
static void btmtk_coredump(struct hci_dev *hdev)
{ … }
static void btmtk_coredump_hdr(struct hci_dev *hdev, struct sk_buff *skb)
{ … }
static void btmtk_coredump_notify(struct hci_dev *hdev, int state)
{ … }
void btmtk_fw_get_filename(char *buf, size_t size, u32 dev_id, u32 fw_ver,
u32 fw_flavor)
{ … }
EXPORT_SYMBOL_GPL(…);
int btmtk_setup_firmware_79xx(struct hci_dev *hdev, const char *fwname,
wmt_cmd_sync_func_t wmt_cmd_sync)
{ … }
EXPORT_SYMBOL_GPL(…);
int btmtk_setup_firmware(struct hci_dev *hdev, const char *fwname,
wmt_cmd_sync_func_t wmt_cmd_sync)
{ … }
EXPORT_SYMBOL_GPL(…);
int btmtk_set_bdaddr(struct hci_dev *hdev, const bdaddr_t *bdaddr)
{ … }
EXPORT_SYMBOL_GPL(…);
void btmtk_reset_sync(struct hci_dev *hdev)
{ … }
EXPORT_SYMBOL_GPL(…);
int btmtk_register_coredump(struct hci_dev *hdev, const char *name,
u32 fw_version)
{ … }
EXPORT_SYMBOL_GPL(…);
int btmtk_process_coredump(struct hci_dev *hdev, struct sk_buff *skb)
{ … }
EXPORT_SYMBOL_GPL(…);
#if IS_ENABLED(CONFIG_BT_HCIBTUSB_MTK)
static void btmtk_usb_wmt_recv(struct urb *urb)
{ … }
static int btmtk_usb_submit_wmt_recv_urb(struct hci_dev *hdev)
{ … }
static int btmtk_usb_hci_wmt_sync(struct hci_dev *hdev,
struct btmtk_hci_wmt_params *wmt_params)
{ … }
static int btmtk_usb_func_query(struct hci_dev *hdev)
{ … }
static int btmtk_usb_uhw_reg_write(struct hci_dev *hdev, u32 reg, u32 val)
{ … }
static int btmtk_usb_uhw_reg_read(struct hci_dev *hdev, u32 reg, u32 *val)
{ … }
static int btmtk_usb_reg_read(struct hci_dev *hdev, u32 reg, u32 *val)
{ … }
static int btmtk_usb_id_get(struct hci_dev *hdev, u32 reg, u32 *id)
{ … }
static u32 btmtk_usb_reset_done(struct hci_dev *hdev)
{ … }
int btmtk_usb_subsys_reset(struct hci_dev *hdev, u32 dev_id)
{ … }
EXPORT_SYMBOL_GPL(…);
int btmtk_usb_recv_acl(struct hci_dev *hdev, struct sk_buff *skb)
{ … }
EXPORT_SYMBOL_GPL(…);
static int btmtk_isopkt_pad(struct hci_dev *hdev, struct sk_buff *skb)
{ … }
static int __set_mtk_intr_interface(struct hci_dev *hdev)
{ … }
struct urb *alloc_mtk_intr_urb(struct hci_dev *hdev, struct sk_buff *skb,
usb_complete_t tx_complete)
{ … }
EXPORT_SYMBOL_GPL(…);
static int btmtk_recv_isopkt(struct hci_dev *hdev, void *buffer, int count)
{ … }
static void btmtk_intr_complete(struct urb *urb)
{ … }
static int btmtk_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags)
{ … }
static int btmtk_usb_isointf_init(struct hci_dev *hdev)
{ … }
int btmtk_usb_resume(struct hci_dev *hdev)
{ … }
EXPORT_SYMBOL_GPL(…);
int btmtk_usb_suspend(struct hci_dev *hdev)
{ … }
EXPORT_SYMBOL_GPL(…);
int btmtk_usb_setup(struct hci_dev *hdev)
{ … }
EXPORT_SYMBOL_GPL(…);
int btmtk_usb_shutdown(struct hci_dev *hdev)
{ … }
EXPORT_SYMBOL_GPL(…);
#endif
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_VERSION(…);
MODULE_LICENSE(…) …;
MODULE_FIRMWARE(…);
MODULE_FIRMWARE(…);
MODULE_FIRMWARE(…);
MODULE_FIRMWARE(…);
MODULE_FIRMWARE(…);
MODULE_FIRMWARE(…);