#ifndef _SEC_CMD_H_ #define _SEC_CMD_H_ #include #include #include #include #include #include #include #include #ifdef CONFIG_SEC_SYSFS #include #endif #ifndef CONFIG_SEC_FACTORY #include #endif #ifndef CONFIG_SEC_SYSFS extern struct class *sec_class; #endif #define SEC_CLASS_DEVT_TSP 10 #define SEC_CLASS_DEVT_TKEY 11 #define SEC_CLASS_DEVT_WACOM 12 #define SEC_CLASS_DEV_NAME_TSP "tsp" #define SEC_CLASS_DEV_NAME_TKEY "sec_touchkey" #define SEC_CLASS_DEV_NAME_WACOM "sec_epen" #define SEC_CMD(name, func) .cmd_name = name, .cmd_func = func #define SEC_CMD_BUF_SIZE (4096 - 1) #define SEC_CMD_STR_LEN 256 #define SEC_CMD_RESULT_STR_LEN (4096 - 1) #define SEC_CMD_PARAM_NUM 8 struct sec_cmd { struct list_head list; const char *cmd_name; void (*cmd_func)(void *device_data); }; enum SEC_CMD_STATUS { SEC_CMD_STATUS_WAITING = 0, SEC_CMD_STATUS_RUNNING, // = 1 SEC_CMD_STATUS_OK, // = 2 SEC_CMD_STATUS_FAIL, // = 3 SEC_CMD_STATUS_NOT_APPLICABLE, // = 4 }; #ifdef USE_SEC_CMD_QUEUE #define SEC_CMD_MAX_QUEUE 10 struct command { char cmd[SEC_CMD_STR_LEN]; }; #endif struct sec_cmd_data { struct device *fac_dev; struct list_head cmd_list_head; u8 cmd_state; char cmd[SEC_CMD_STR_LEN]; int cmd_param[SEC_CMD_PARAM_NUM]; char cmd_result[SEC_CMD_RESULT_STR_LEN]; int cmd_buffer_size; bool cmd_is_running; struct mutex cmd_lock; #ifdef USE_SEC_CMD_QUEUE struct kfifo cmd_queue; struct mutex fifo_lock; #endif }; extern void sec_cmd_set_cmd_exit(struct sec_cmd_data *data); extern void sec_cmd_set_default_result(struct sec_cmd_data *data); extern void sec_cmd_set_cmd_result(struct sec_cmd_data *data, char *buff, int len); extern int sec_cmd_init(struct sec_cmd_data *data, struct sec_cmd *cmds, int len, int devt); extern void sec_cmd_exit(struct sec_cmd_data *data, int devt); #endif /* _SEC_CMD_H_ */