100 lines
2.3 KiB
C
100 lines
2.3 KiB
C
|
|
#ifndef __HG_TOUCHKEY_H
|
||
|
|
#define __HG_TOUCHKEY_H
|
||
|
|
enum tk_ioctl_cmd
|
||
|
|
{
|
||
|
|
//硬件寄存器配置
|
||
|
|
TK_IOCTL_CSRST_SET,
|
||
|
|
TK_IOCTL_CMPEN_SET,
|
||
|
|
TK_IOCTL_CMPRB_SET,
|
||
|
|
TK_IOCTL_RES_SET,
|
||
|
|
TK_IOCTL_CURR_SET,
|
||
|
|
TK_IOCTL_ANA_TEN_SET,
|
||
|
|
TK_IOCTL_VOLT_REF_SET,
|
||
|
|
TK_IOCTL_PSR_CNT_SET,
|
||
|
|
TK_IOCTL_PRE_CHARGE_TIME,
|
||
|
|
TK_IOCTL_PRE_DISCHARGE_TIME,
|
||
|
|
TK_IOCTL_CONV_TIME,
|
||
|
|
TK_IOCTL_CHANNLE_MODE,
|
||
|
|
TK_IOCTL_CHARGE_FRE_DIV,
|
||
|
|
TK_IOCTL_CHARGE_FRE0_DIV,
|
||
|
|
TK_IOCTL_CHARGE_FRE1_DIV,
|
||
|
|
TK_IOCTL_CHARGE_FRE2_DIV,
|
||
|
|
TK_IOCTL_CHARGE_FRE3_DIV,
|
||
|
|
TK_IOCTL_SHIELD_SET,
|
||
|
|
TK_IOCTL_SSC_BW,
|
||
|
|
TK_IOCTL_SSC_TYPE_SEL,
|
||
|
|
TK_IOCTL_AUTO_SCAN_EN,
|
||
|
|
TK_IOCTL_ADDR_SET,
|
||
|
|
TK_IOCTL_KICK,
|
||
|
|
|
||
|
|
//算法参数配置
|
||
|
|
TK_IOCTL_ADJUST_TIME,
|
||
|
|
TK_IOCTL_LONG_KEY_TIME,
|
||
|
|
TK_IOCTL_ADJUST_LINE,
|
||
|
|
TK_IOCTL_ADJUST_DIFF_VALU,
|
||
|
|
TK_IOCTL_USE_NUM,
|
||
|
|
TK_IOCTL_WATER_MODE,
|
||
|
|
TK_IOCTL_NM_NUM,
|
||
|
|
TK_IOCTL_NM_LEAVE_CNT,
|
||
|
|
TK_IOCTL_TP_EN,
|
||
|
|
TK_IOCTL_NOISE_VALUE,
|
||
|
|
TK_IOCTL_NM_CM_CNT,
|
||
|
|
TK_IOCTL_NM_CM_VALUE,
|
||
|
|
|
||
|
|
//系统级别的配置(类似信号量,timer等等)
|
||
|
|
TK_SCAN_SEM_HANDL,
|
||
|
|
TK_TIMER_HANDL,
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
enum tk_irq_flag
|
||
|
|
{
|
||
|
|
TK_SG_CONV_FLAG = BIT(0),
|
||
|
|
TK_CH_DONE_FLAG = BIT(1),
|
||
|
|
TK_SCAN_DONE_FLAG = BIT(2),
|
||
|
|
TK_DMA_FLAG = BIT(3),
|
||
|
|
TK_DMA_ERR_FLAG = BIT(4),
|
||
|
|
};
|
||
|
|
typedef int32 (*tk_irq_hdl)(uint32 irq, uint32 irq_data, uint32 param1, uint32 param2);
|
||
|
|
|
||
|
|
struct tk_device {
|
||
|
|
struct dev_obj dev;
|
||
|
|
int32(*open)(struct tk_device *tk);
|
||
|
|
int32(*close)(struct tk_device *tk);
|
||
|
|
int32(*ioctl)(struct tk_device *tk, uint32 cmd, uint32 param1, uint32 param2);
|
||
|
|
int32(*request_irq)(struct tk_device *tk, enum tk_irq_flag irq_flag, tk_irq_hdl irq_hdl, uint32 data);
|
||
|
|
int32(*release_irq)(struct tk_device *tk, enum tk_irq_flag irq_flag);
|
||
|
|
};
|
||
|
|
|
||
|
|
//tk算法私有结构体
|
||
|
|
struct hgtk_algorithm
|
||
|
|
{
|
||
|
|
uint16 __tk_adjust_time;
|
||
|
|
uint16 __tk_valid_time;
|
||
|
|
uint16 __tk_adjust_line;
|
||
|
|
uint16 __tk_adjust_diff_valu;
|
||
|
|
uint16 __tk_use_num;
|
||
|
|
uint16 __tk_water_mode;
|
||
|
|
uint16 __tk_nm_num;
|
||
|
|
uint16 __tk_nm_leave_cnt;
|
||
|
|
uint16 __tk_tp_en;
|
||
|
|
uint16 __tk_noise_value;
|
||
|
|
uint16 __tk_nm_cm_cnt;
|
||
|
|
uint16 __tk_nm_cm_value;
|
||
|
|
};
|
||
|
|
|
||
|
|
struct hgtk_device {
|
||
|
|
struct tk_device dev ;
|
||
|
|
uint32 hw ;
|
||
|
|
tk_irq_hdl irq_hdl ;
|
||
|
|
uint32 irq_data;
|
||
|
|
uint32 irq_num ;
|
||
|
|
uint32 opened ;
|
||
|
|
void* timer;
|
||
|
|
void* sem;
|
||
|
|
struct hgtk_algorithm tk_pri;
|
||
|
|
};
|
||
|
|
|
||
|
|
#endif
|