#include <linux/align.h>
#include <linux/cache.h>
#include <linux/cleanup.h>
#include <linux/iopoll.h>
#include <linux/list.h>
#include <linux/mei.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/overflow.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/timekeeping.h>
#include <linux/types.h>
#include <asm-generic/bug.h>
#include <asm-generic/unaligned.h>
#include "mei_dev.h"
#include "vsc-tp.h"
#define MEI_VSC_DRV_NAME …
#define MEI_VSC_MAX_MSG_SIZE …
#define MEI_VSC_POLL_DELAY_US …
#define MEI_VSC_POLL_TIMEOUT_US …
#define mei_dev_to_vsc_hw(dev) …
struct mei_vsc_host_timestamp { … };
struct mei_vsc_hw { … };
static int mei_vsc_read_helper(struct mei_vsc_hw *hw, u8 *buf,
u32 max_len)
{ … }
static int mei_vsc_write_helper(struct mei_vsc_hw *hw, u8 *buf, u32 len)
{ … }
static int mei_vsc_fw_status(struct mei_device *mei_dev,
struct mei_fw_status *fw_status)
{ … }
static inline enum mei_pg_state mei_vsc_pg_state(struct mei_device *mei_dev)
{ … }
static void mei_vsc_intr_enable(struct mei_device *mei_dev)
{ … }
static void mei_vsc_intr_disable(struct mei_device *mei_dev)
{ … }
static void mei_vsc_intr_clear(struct mei_device *mei_dev)
{ … }
static void mei_vsc_synchronize_irq(struct mei_device *mei_dev)
{ … }
static int mei_vsc_hw_config(struct mei_device *mei_dev)
{ … }
static bool mei_vsc_host_is_ready(struct mei_device *mei_dev)
{ … }
static bool mei_vsc_hw_is_ready(struct mei_device *mei_dev)
{ … }
static int mei_vsc_hw_start(struct mei_device *mei_dev)
{ … }
static bool mei_vsc_hbuf_is_ready(struct mei_device *mei_dev)
{ … }
static int mei_vsc_hbuf_empty_slots(struct mei_device *mei_dev)
{ … }
static u32 mei_vsc_hbuf_depth(const struct mei_device *mei_dev)
{ … }
static int mei_vsc_write(struct mei_device *mei_dev,
const void *hdr, size_t hdr_len,
const void *data, size_t data_len)
{ … }
static inline u32 mei_vsc_read(const struct mei_device *mei_dev)
{ … }
static int mei_vsc_count_full_read_slots(struct mei_device *mei_dev)
{ … }
static int mei_vsc_read_slots(struct mei_device *mei_dev, unsigned char *buf,
unsigned long len)
{ … }
static bool mei_vsc_pg_in_transition(struct mei_device *mei_dev)
{ … }
static bool mei_vsc_pg_is_enabled(struct mei_device *mei_dev)
{ … }
static int mei_vsc_hw_reset(struct mei_device *mei_dev, bool intr_enable)
{ … }
static const struct mei_hw_ops mei_vsc_hw_ops = …;
static void mei_vsc_event_cb(void *context)
{ … }
static int mei_vsc_probe(struct platform_device *pdev)
{ … }
static void mei_vsc_remove(struct platform_device *pdev)
{ … }
static int mei_vsc_suspend(struct device *dev)
{ … }
static int mei_vsc_resume(struct device *dev)
{ … }
static DEFINE_SIMPLE_DEV_PM_OPS(mei_vsc_pm_ops, mei_vsc_suspend, mei_vsc_resume);
static const struct platform_device_id mei_vsc_id_table[] = …;
MODULE_DEVICE_TABLE(platform, mei_vsc_id_table);
static struct platform_driver mei_vsc_drv = …;
module_platform_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_IMPORT_NS(…);