sdk-hwV1.3/lichee/linux-4.9/drivers/input/touchscreen/cst9220/hynitron_common.h

261 lines
8.7 KiB
C
Raw Normal View History

2024-05-07 10:09:20 +00:00
/**
*Name : hynitron_common.h
*Author : steven
*Version : V2.0
*Create : 2019-11-11
*Copyright : zxzz
*/
#ifndef HYNITRON_COMMON_H__
#define HYNITRON_COMMON_H__
#include "hynitron_config.h"
/*****************************************************************************
* Macro definitions using #define
*****************************************************************************/
#define HYN_DRIVER_VERSION "Hynitron TouchScreen Allwinner Driver V3.1 20230829"
/************THE CHIP PRODUCT LINE SUPPORT********************/
#define HYN_CHIP_PRODUCT_LINE_MUT_CAP 1
#define HYN_CHIP_PRODUCT_LINE_SEL_CAP 2
/*************************************************************/
/************THE CHIP SERIES SUPPORT********************/
#define HYN_CHIP_CST0XX 10
#define HYN_CHIP_CST1XX 100
#define HYN_CHIP_CST1XXSE 101
#define HYN_CHIP_CST2XX 200
#define HYN_CHIP_CST2XXSE 201
#define HYN_CHIP_CST3XX 300
#define HYN_CHIP_CST3XXSE 301
#define HYN_CHIP_CST3240 302
#define HYN_CHIP_CST6XX 692
#define HYN_CHIP_CST7XX 700
#define HYN_CHIP_CST8XX 800
#define HYN_CHIP_CST9XX 900
#define HYN_CHIP_CST92XX 920
#define HYN_CHIP_CST644K 644
/******************************************************/
/************THE CHIP TYPE OF SERIES SUPPORT********************/
#define CST016 16
#define CST026 26
#define CST036 36
#define CST126 126
#define CST128 128
#define CST128SE 129
#define CST130 130
#define CST140 140
#define CST148 148
#define CST18858SE 158
#define CST226 226
#define CST226SE 168
#define CST237 237
#define CST240 240
#define CST326 326
#define CST328 328
#define CST328SE 329
#define CST340 3340
#define CST348 3348
#define CST356 0x63E
#define CST3240 0x3240
#define CST6928S 0x64E
#define CST642S 0x61E
#define CST716 716
#define CST726 726
#define CST736 736
#define CST816 816
#define CST826 826
#define CST836 836
#define CST912 912
#define CST918 918
#define CST9217 0x9217
#define CST9220 0x9220
#define CST644K 644
/******************************************************/
#define FLAGBIT(x) (0x00000001 << (x))
#define FLAGBITS(x, y) ((0xFFFFFFFF >> (32 - (y) - 1)) << (x))
#define I2C_BUFFER_LENGTH_MAXINUM 256
#define FILE_NAME_LENGTH 128
#define ENABLE 1
#define DISABLE 0
#define REG_LEN_1B 1
#define REG_LEN_2B 2
/*register address*/
/********selfcap register address start *****************/
#define HYN_REG_CAP_POWER_MODE 0xA5
#define HYN_REG_CAP_POWER_MODE_SLEEP_VALUE 0x03
#define HYN_REG_CAP_FW_VER 0xA6
#define HYN_REG_CAP_VENDOR_ID 0xA8
#define HYN_REG_CAP_PROJECT_ID 0xA9
#define HYN_REG_CAP_CHIP_ID 0xAA
#define HYN_REG_CAP_CHIP_CHECKSUM 0xAC
#define HYN_REG_CAP_GESTURE_EN 0xD0
#define HYN_REG_CAP_GESTURE_OUTPUT_ADDRESS 0xD3
#define HYN_REG_CAP_PROXIMITY_EN 0xB0
#define HYN_REG_CAP_PROXIMITY_OUTPUT_ADDRESS 0x01
#define HYN_REG_CAP_ESD_SATURATE 0xE0
/********selfcap register address end *****************/
/********mutcap register address start *****************/
//Myabe change
#define HYN_REG_MUT_ESD_VALUE 0xD040
#define HYN_REG_MUT_ESD_CHECKSUM 0xD046
#define HYN_REG_MUT_PROXIMITY_EN 0xD04B
#define HYN_REG_MUT_PROXIMITY_OUTPUT_ADDRESS 0xD04B
#define HYN_REG_MUT_GESTURE_EN 0xD04C
#define HYN_REG_MUT_GESTURE_OUTPUT_ADDRESS 0xD04C
//workmode
#define HYN_REG_MUT_DEBUG_INFO_MODE 0xD101
#define HYN_REG_MUT_RESET_MODE 0xD102
#define HYN_REG_MUT_DEBUG_RECALIBRATION_MODE 0xD104
#define HYN_REG_MUT_DEEP_SLEEP_MODE 0xD105
#define HYN_REG_MUT_DEBUG_POINT_MODE 0xD108
#define HYN_REG_MUT_NORMAL_MODE 0xD109
#define HYN_REG_MUT_DEBUG_RAWDATA_MODE 0xD10A
#define HYN_REG_MUT_DEBUG_DIFF_MODE 0xD10D
#define HYN_REG_MUT_DEBUG_FACTORY_MODE 0xD119
#define HYN_REG_MUT_DEBUG_FACTORY_MODE_2 0xD120
//debug info
/****************HYN_REG_MUT_DEBUG_INFO_MODE address start***********/
#define HYN_REG_MUT_DEBUG_INFO_IC_CHECKSUM 0xD208
#define HYN_REG_MUT_DEBUG_INFO_FW_VERSION 0xD204
#define HYN_REG_MUT_DEBUG_INFO_IC_TYPE 0xD202
#define HYN_REG_MUT_DEBUG_INFO_PROJECT_ID 0xD200
#define HYN_REG_MUT_DEBUG_INFO_BOOT_TIME 0xD1FC
#define HYN_REG_MUT_DEBUG_INFO_RES_Y 0xD1FA
#define HYN_REG_MUT_DEBUG_INFO_RES_X 0xD1F8
#define HYN_REG_MUT_DEBUG_INFO_KEY_NUM 0xD1F7
#define HYN_REG_MUT_DEBUG_INFO_TP_NRX 0xD1F6
#define HYN_REG_MUT_DEBUG_INFO_TP_NTX 0xD1F4
/****************HYN_REG_MUT_DEBUG_INFO_MODE address end***********/
#define HYN_WORK_MODE_NORMAL 0
#define HYN_WORK_MODE_FACTORY 1
#define HYN_WORK_MODE_RAWDATA 2
#define HYN_WORK_MODE_DIFF 3
#define HYN_WORK_MODE_UPDATE 4
/********mutcap register address end *****************/
/************i2c communication********************/
int cst3xx_i2c_read(struct i2c_client *client, unsigned char *buf, int len);
int cst3xx_i2c_write(struct i2c_client *client, unsigned char *buf, int len) ;
int cst3xx_i2c_read_register(struct i2c_client *client, unsigned char *buf, int len);
int hyn_i2c_write_bytes(unsigned short reg,unsigned char *buf,unsigned short len,unsigned char reg_len);
int hyn_i2c_read_bytes(unsigned short reg,unsigned char* buf,unsigned short len,unsigned char reg_len);
int hyn_i2c_write_byte(struct i2c_client *client, u8 regaddr, u8 regvalue);
int hyn_i2c_read_byte(struct i2c_client *client, u8 regaddr, u8 *regvalue);
int hyn_i2c_read(struct i2c_client *client, char *writebuf,int writelen, char *readbuf, int readlen);
int hyn_i2c_write(struct i2c_client *client, char *writebuf, int writelen);
/***************************************/
/************HYN_PSENSOR_EN********************/
#if HYN_PSENSOR_EN
extern int hyn_proximity_readdata(void);
extern void hyn_proximity_init(void);
extern void hyn_proximity_exit(void);
extern void hyn_proximity_suspend(void);
extern void hyn_proximity_resume(void);
#endif
/***************************************/
/************HYN_GESTURE_EN********************/
#if HYN_GESTURE_EN
extern int hyn_gesture_init(struct input_dev *input_dev, struct i2c_client *client);
extern int hyn_gesture_exit(void);
extern int hyn_gesture_suspend(void);
extern int hyn_gesture_resume(void);
extern int hyn_gesture_readdata(void);
#endif
/***************************************/
/************HYN_ESDCHECK_EN********************/
#if HYN_ESDCHECK_EN
extern void hyn_create_esd_sysfs(struct i2c_client *client);
extern void hyn_esd_switch(s32 on);
extern void hyn_init_esd_protect(void);
extern void hyn_esd_resume(void);
extern void hyn_esd_suspend(void);
extern void hyn_esd_init(void);
extern void hyn_esd_exit(void);
#endif
/***************************************/
/* ADB functions */
#if HYN_SYSFS_NODE_EN
extern int hyn_create_sysfs(struct i2c_client *client);
extern void hyn_release_sysfs(struct i2c_client *client);
#endif
#if ANDROID_TOOL_SURPORT
extern int hynitron_proc_fs_init(void);
extern void hynitron_proc_fs_exit(void);
#endif
extern int hyn_reset_proc(int hdelayms);
void hyn_irq_disable(void);
void hyn_irq_enable(void);
#if HYN_DEBUG_EN
#define HYN_DEBUG_LEVEL 1
#if (HYN_DEBUG_LEVEL == 2)
#define HYN_DEBUG(fmt, args...) printk(KERN_ERR "[HYN][%s]"fmt"\n", __func__, ##args)
#define HYN_INFO(fmt, args...) printk(KERN_ERR "[HYN][Info][%s]"fmt"\n",__func__, ##args)
#define HYN_ERROR(fmt, args...) printk(KERN_ERR "[HYN][Error][%s]"fmt"\n",__func__, ##args)
#else
#define HYN_DEBUG(fmt, args...) printk(KERN_ERR "[HYN]"fmt"\n", ##args)
#define HYN_INFO(fmt, args...) printk(KERN_ERR "[HYN][Info]"fmt"\n", ##args)
#define HYN_ERROR(fmt, args...) printk(KERN_ERR "[HYN][Error]"fmt"\n", ##args)
#endif
#define HYN_FUNC_ENTER() printk(KERN_ERR "[HYN]%s: Enter\n", __func__)
#define HYN_FUNC_EXIT() printk(KERN_ERR "[HYN]%s: Exit(%d)\n", __func__, __LINE__)
#else
#define HYN_DEBUG(fmt, args...)
#define HYN_INFO(fmt, args...)
#define HYN_ERROR(fmt, args...)
#define HYN_FUNC_ENTER()
#define HYN_FUNC_EXIT()
#endif
#endif /*Hynitron_COMMON_H__*/