#include <linux/firmware.h>
#include <linux/slab.h>
#include <linux/suspend.h>
#include <linux/mmc/sdio_ids.h>
#include <linux/mmc/sdio_func.h>
#include <linux/module.h>
#include <linux/devcoredump.h>
#include <net/bluetooth/bluetooth.h>
#include <net/bluetooth/hci_core.h>
#include "btmrvl_drv.h"
#include "btmrvl_sdio.h"
#define VERSION …
static struct memory_type_mapping mem_type_mapping_tbl[] = …;
static const struct of_device_id btmrvl_sdio_of_match_table[] __maybe_unused = …;
static irqreturn_t btmrvl_wake_irq_bt(int irq, void *priv)
{ … }
static int btmrvl_sdio_probe_of(struct device *dev,
struct btmrvl_sdio_card *card)
{ … }
static u8 user_rmmod;
static u8 sdio_ireg;
static const struct btmrvl_sdio_card_reg btmrvl_reg_8688 = …;
static const struct btmrvl_sdio_card_reg btmrvl_reg_87xx = …;
static const struct btmrvl_sdio_card_reg btmrvl_reg_8887 = …;
static const struct btmrvl_sdio_card_reg btmrvl_reg_8897 = …;
static const struct btmrvl_sdio_card_reg btmrvl_reg_89xx = …;
static const struct btmrvl_sdio_device btmrvl_sdio_sd8688 = …;
static const struct btmrvl_sdio_device btmrvl_sdio_sd8787 = …;
static const struct btmrvl_sdio_device btmrvl_sdio_sd8797 = …;
static const struct btmrvl_sdio_device btmrvl_sdio_sd8887 = …;
static const struct btmrvl_sdio_device btmrvl_sdio_sd8897 = …;
static const struct btmrvl_sdio_device btmrvl_sdio_sd8977 = …;
static const struct btmrvl_sdio_device btmrvl_sdio_sd8987 = …;
static const struct btmrvl_sdio_device btmrvl_sdio_sd8997 = …;
static const struct sdio_device_id btmrvl_sdio_ids[] = …;
MODULE_DEVICE_TABLE(sdio, btmrvl_sdio_ids);
static int btmrvl_sdio_get_rx_unit(struct btmrvl_sdio_card *card)
{ … }
static int btmrvl_sdio_read_fw_status(struct btmrvl_sdio_card *card, u16 *dat)
{ … }
static int btmrvl_sdio_read_rx_len(struct btmrvl_sdio_card *card, u16 *dat)
{ … }
static int btmrvl_sdio_enable_host_int_mask(struct btmrvl_sdio_card *card,
u8 mask)
{ … }
static int btmrvl_sdio_disable_host_int_mask(struct btmrvl_sdio_card *card,
u8 mask)
{ … }
static int btmrvl_sdio_poll_card_status(struct btmrvl_sdio_card *card, u8 bits)
{ … }
static int btmrvl_sdio_verify_fw_download(struct btmrvl_sdio_card *card,
int pollnum)
{ … }
static int btmrvl_sdio_download_helper(struct btmrvl_sdio_card *card)
{ … }
static int btmrvl_sdio_download_fw_w_helper(struct btmrvl_sdio_card *card)
{ … }
static int btmrvl_sdio_card_to_host(struct btmrvl_private *priv)
{ … }
static int btmrvl_sdio_process_int_status(struct btmrvl_private *priv)
{ … }
static int btmrvl_sdio_read_to_clear(struct btmrvl_sdio_card *card, u8 *ireg)
{ … }
static int btmrvl_sdio_write_to_clear(struct btmrvl_sdio_card *card, u8 *ireg)
{ … }
static void btmrvl_sdio_interrupt(struct sdio_func *func)
{ … }
static int btmrvl_sdio_register_dev(struct btmrvl_sdio_card *card)
{ … }
static int btmrvl_sdio_unregister_dev(struct btmrvl_sdio_card *card)
{ … }
static int btmrvl_sdio_enable_host_int(struct btmrvl_sdio_card *card)
{ … }
static int btmrvl_sdio_disable_host_int(struct btmrvl_sdio_card *card)
{ … }
static int btmrvl_sdio_host_to_card(struct btmrvl_private *priv,
u8 *payload, u16 nb)
{ … }
static int btmrvl_sdio_download_fw(struct btmrvl_sdio_card *card)
{ … }
static int btmrvl_sdio_wakeup_fw(struct btmrvl_private *priv)
{ … }
static void btmrvl_sdio_dump_regs(struct btmrvl_private *priv)
{ … }
static enum
rdwr_status btmrvl_sdio_rdwr_firmware(struct btmrvl_private *priv,
u8 doneflag)
{ … }
static void btmrvl_sdio_coredump(struct device *dev)
{ … }
static int btmrvl_sdio_probe(struct sdio_func *func,
const struct sdio_device_id *id)
{ … }
static void btmrvl_sdio_remove(struct sdio_func *func)
{ … }
static int btmrvl_sdio_suspend(struct device *dev)
{ … }
static int btmrvl_sdio_resume(struct device *dev)
{ … }
static const struct dev_pm_ops btmrvl_sdio_pm_ops = …;
static struct sdio_driver bt_mrvl_sdio = …;
static int __init btmrvl_sdio_init_module(void)
{ … }
static void __exit btmrvl_sdio_exit_module(void)
{ … }
module_init(…) …;
module_exit(btmrvl_sdio_exit_module);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_VERSION(…);
MODULE_LICENSE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;
MODULE_FIRMWARE(…) …;