#include <linux/acpi.h>
#include <linux/completion.h>
#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/mei_cl_bus.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/pm_runtime.h>
#include <linux/slab.h>
#include <linux/uuid.h>
#include <linux/workqueue.h>
#define ACE_DRV_MSG …
#define ACE_CMD_SET …
#define ACE_CMD_TIMEOUT …
#define ACE_CMD_INIT_BLOCK …
#define ACE_CMD_FINAL_BLOCK …
#define ACE_CAMERA_STATUS_SIZE …
#define ACE_GET_FW_ID_UUID …
#define MEI_CSI_UUID …
enum ace_event_type { … };
enum ace_camera_owner { … };
enum ace_cmd_id { … };
struct ace_cmd_hdr { … } __packed;
ace_cmd_param;
struct ace_cmd { … } __packed;
ace_notif_hdr;
ace_notif_cont;
struct ace_notif { … } __packed;
struct mei_ace { … };
static inline void init_cmd_hdr(struct ace_cmd_hdr *hdr)
{ … }
static int construct_command(struct mei_ace *ace, struct ace_cmd *cmd,
enum ace_cmd_id cmd_id)
{ … }
static int mei_ace_send(struct mei_ace *ace, struct ace_cmd *cmd,
size_t len, bool only_ack)
{ … }
static int ace_set_camera_owner(struct mei_ace *ace,
enum ace_camera_owner owner)
{ … }
static inline int ace_get_firmware_id(struct mei_ace *ace)
{ … }
static void handle_command_response(struct mei_ace *ace,
struct ace_notif *resp, int len)
{ … }
static void handle_command_ack(struct mei_ace *ace,
struct ace_notif *ack, int len)
{ … }
static void mei_ace_rx(struct mei_cl_device *cldev)
{ … }
static int mei_ace_setup_dev_link(struct mei_ace *ace)
{ … }
static void mei_ace_post_probe_work(struct work_struct *work)
{ … }
static int mei_ace_probe(struct mei_cl_device *cldev,
const struct mei_cl_device_id *id)
{ … }
static void mei_ace_remove(struct mei_cl_device *cldev)
{ … }
static int __maybe_unused mei_ace_runtime_suspend(struct device *dev)
{ … }
static int __maybe_unused mei_ace_runtime_resume(struct device *dev)
{ … }
static const struct dev_pm_ops mei_ace_pm_ops = …;
#define MEI_ACE_UUID …
static const struct mei_cl_device_id mei_ace_tbl[] = …;
MODULE_DEVICE_TABLE(mei, mei_ace_tbl);
static struct mei_cl_driver mei_ace_driver = …;
module_mei_cl_driver(…) …;
MODULE_AUTHOR(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;