#include <linux/acpi.h>
#include <linux/bitfield.h>
#include <linux/module.h>
#include <net/rtnetlink.h>
#include "iosm_ipc_imem.h"
#include "iosm_ipc_pcie.h"
#include "iosm_ipc_protocol.h"
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
static guid_t wwan_acpi_guid = …;
static void ipc_pcie_resources_release(struct iosm_pcie *ipc_pcie)
{ … }
static void ipc_pcie_cleanup(struct iosm_pcie *ipc_pcie)
{ … }
static void ipc_pcie_deinit(struct iosm_pcie *ipc_pcie)
{ … }
static void ipc_pcie_remove(struct pci_dev *pci)
{ … }
static int ipc_pcie_resources_request(struct iosm_pcie *ipc_pcie)
{ … }
bool ipc_pcie_check_aspm_enabled(struct iosm_pcie *ipc_pcie,
bool parent)
{ … }
bool ipc_pcie_check_data_link_active(struct iosm_pcie *ipc_pcie)
{ … }
static bool ipc_pcie_check_aspm_supported(struct iosm_pcie *ipc_pcie,
bool parent)
{ … }
void ipc_pcie_config_aspm(struct iosm_pcie *ipc_pcie)
{ … }
static void ipc_pcie_config_init(struct iosm_pcie *ipc_pcie)
{ … }
static enum ipc_pcie_sleep_state ipc_pcie_read_bios_cfg(struct device *dev)
{ … }
static int ipc_pcie_probe(struct pci_dev *pci,
const struct pci_device_id *pci_id)
{ … }
static const struct pci_device_id iosm_ipc_ids[] = …;
MODULE_DEVICE_TABLE(pci, iosm_ipc_ids);
static int __maybe_unused ipc_pcie_suspend_s2idle(struct iosm_pcie *ipc_pcie)
{ … }
static int __maybe_unused ipc_pcie_resume_s2idle(struct iosm_pcie *ipc_pcie)
{ … }
int __maybe_unused ipc_pcie_suspend(struct iosm_pcie *ipc_pcie)
{ … }
int __maybe_unused ipc_pcie_resume(struct iosm_pcie *ipc_pcie)
{ … }
static int __maybe_unused ipc_pcie_suspend_cb(struct device *dev)
{ … }
static int __maybe_unused ipc_pcie_resume_cb(struct device *dev)
{ … }
static SIMPLE_DEV_PM_OPS(iosm_ipc_pm, ipc_pcie_suspend_cb, ipc_pcie_resume_cb);
static struct pci_driver iosm_ipc_driver = …;
module_pci_driver(…) …;
int ipc_pcie_addr_map(struct iosm_pcie *ipc_pcie, unsigned char *data,
size_t size, dma_addr_t *mapping, int direction)
{ … }
void ipc_pcie_addr_unmap(struct iosm_pcie *ipc_pcie, size_t size,
dma_addr_t mapping, int direction)
{ … }
struct sk_buff *ipc_pcie_alloc_local_skb(struct iosm_pcie *ipc_pcie,
gfp_t flags, size_t size)
{ … }
struct sk_buff *ipc_pcie_alloc_skb(struct iosm_pcie *ipc_pcie, size_t size,
gfp_t flags, dma_addr_t *mapping,
int direction, size_t headroom)
{ … }
void ipc_pcie_kfree_skb(struct iosm_pcie *ipc_pcie, struct sk_buff *skb)
{ … }