#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/input.h>
#include <linux/input/mt.h>
#include <linux/mutex.h>
#include <linux/completion.h>
#include <linux/slab.h>
#include <linux/unaligned.h>
#include <linux/crc-itu-t.h>
#include "cyapa.h"
#define GEN6_ENABLE_CMD_IRQ …
#define GEN6_DISABLE_CMD_IRQ …
#define GEN6_ENABLE_DEV_IRQ …
#define GEN6_DISABLE_DEV_IRQ …
#define GEN6_POWER_MODE_ACTIVE …
#define GEN6_POWER_MODE_LP_MODE1 …
#define GEN6_POWER_MODE_LP_MODE2 …
#define GEN6_POWER_MODE_BTN_ONLY …
#define GEN6_SET_POWER_MODE_INTERVAL …
#define GEN6_GET_POWER_MODE_INTERVAL …
#define GEN6_MAX_RX_NUM …
#define GEN6_RETRIEVE_DATA_ID_RX_ATTENURATOR_IDAC …
#define GEN6_RETRIEVE_DATA_ID_ATTENURATOR_TRIM …
struct pip_app_cmd_head { … } __packed;
struct pip_app_resp_head { … } __packed;
struct pip_fixed_info { … };
static u8 pip_get_bl_info[] = …;
static bool cyapa_sort_pip_hid_descriptor_data(struct cyapa *cyapa,
u8 *buf, int len)
{ … }
static int cyapa_get_pip_fixed_info(struct cyapa *cyapa,
struct pip_fixed_info *pip_info, bool is_bootloader)
{ … }
int cyapa_pip_state_parse(struct cyapa *cyapa, u8 *reg_data, int len)
{ … }
static int cyapa_gen6_read_sys_info(struct cyapa *cyapa)
{ … }
static int cyapa_gen6_bl_read_app_info(struct cyapa *cyapa)
{ … }
static int cyapa_gen6_config_dev_irq(struct cyapa *cyapa, u8 cmd_code)
{ … }
static int cyapa_gen6_set_proximity(struct cyapa *cyapa, bool enable)
{ … }
static int cyapa_gen6_change_power_state(struct cyapa *cyapa, u8 power_mode)
{ … }
static int cyapa_gen6_set_interval_setting(struct cyapa *cyapa,
struct gen6_interval_setting *interval_setting)
{ … }
static int cyapa_gen6_get_interval_setting(struct cyapa *cyapa,
struct gen6_interval_setting *interval_setting)
{ … }
static int cyapa_gen6_deep_sleep(struct cyapa *cyapa, u8 state)
{ … }
static int cyapa_gen6_set_power_mode(struct cyapa *cyapa,
u8 power_mode, u16 sleep_time, enum cyapa_pm_stage pm_stage)
{ … }
static int cyapa_gen6_initialize(struct cyapa *cyapa)
{ … }
static int cyapa_pip_retrieve_data_structure(struct cyapa *cyapa,
u16 read_offset, u16 read_len, u8 data_id,
u8 *data, int *data_buf_lens)
{ … }
static ssize_t cyapa_gen6_show_baseline(struct device *dev,
struct device_attribute *attr, char *buf)
{ … }
static int cyapa_gen6_operational_check(struct cyapa *cyapa)
{ … }
const struct cyapa_dev_ops cyapa_gen6_ops = …;