#include <linux/module.h>
#include <linux/printk.h>
#include <linux/pci.h>
#include <linux/spinlock.h>
#include <linux/mutex.h>
#include <linux/netdevice.h>
#include <linux/seq_file.h>
#include <linux/workqueue.h>
#include <linux/completion.h>
#include "pcie_priv.h"
#include "bus.h"
#include "shm_ipc.h"
#include "core.h"
#include "debug.h"
#include "util.h"
#include "qtn_hw_ids.h"
#define QTN_SYSCTL_BAR …
#define QTN_SHMEM_BAR …
#define QTN_DMA_BAR …
#define QTN_PCIE_MAX_FW_BUFSZ …
static bool use_msi = …;
module_param(use_msi, bool, 0644);
MODULE_PARM_DESC(…) …;
static unsigned int tx_bd_size_param;
module_param(tx_bd_size_param, uint, 0644);
MODULE_PARM_DESC(…) …;
static unsigned int rx_bd_size_param;
module_param(rx_bd_size_param, uint, 0644);
MODULE_PARM_DESC(…) …;
static u8 flashboot = …;
module_param(flashboot, byte, 0644);
MODULE_PARM_DESC(…) …;
static unsigned int fw_blksize_param = …;
module_param(fw_blksize_param, uint, 0644);
MODULE_PARM_DESC(…) …;
#define DRV_NAME …
int qtnf_pcie_control_tx(struct qtnf_bus *bus, struct sk_buff *skb)
{ … }
int qtnf_pcie_alloc_skb_array(struct qtnf_pcie_bus_priv *priv)
{ … }
static void qtnf_pcie_bringup_fw_async(struct qtnf_bus *bus)
{ … }
static int qtnf_dbg_mps_show(struct seq_file *s, void *data)
{ … }
static int qtnf_dbg_msi_show(struct seq_file *s, void *data)
{ … }
static int qtnf_dbg_shm_stats(struct seq_file *s, void *data)
{ … }
int qtnf_pcie_fw_boot_done(struct qtnf_bus *bus)
{ … }
static void qtnf_tune_pcie_mps(struct pci_dev *pdev)
{ … }
static void qtnf_pcie_init_irq(struct qtnf_pcie_bus_priv *priv, bool use_msi)
{ … }
static void __iomem *qtnf_map_bar(struct pci_dev *pdev, u8 index)
{ … }
static void qtnf_pcie_control_rx_callback(void *arg, const u8 __iomem *buf,
size_t len)
{ … }
void qtnf_pcie_init_shm_ipc(struct qtnf_pcie_bus_priv *priv,
struct qtnf_shm_ipc_region __iomem *ipc_tx_reg,
struct qtnf_shm_ipc_region __iomem *ipc_rx_reg,
const struct qtnf_shm_ipc_int *ipc_int)
{ … }
static int qtnf_pcie_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{ … }
static void qtnf_pcie_free_shm_ipc(struct qtnf_pcie_bus_priv *priv)
{ … }
static void qtnf_pcie_remove(struct pci_dev *dev)
{ … }
#ifdef CONFIG_PM_SLEEP
static int qtnf_pcie_suspend(struct device *dev)
{ … }
static int qtnf_pcie_resume(struct device *dev)
{ … }
static SIMPLE_DEV_PM_OPS(qtnf_pcie_pm_ops, qtnf_pcie_suspend,
qtnf_pcie_resume);
#endif
static const struct pci_device_id qtnf_pcie_devid_table[] = …;
MODULE_DEVICE_TABLE(pci, qtnf_pcie_devid_table);
static struct pci_driver qtnf_pcie_drv_data = …;
module_pci_driver(…) …
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;