#ifndef _TRACKPOINT_H
#define _TRACKPOINT_H
#define TP_COMMAND 0xE2
#define TP_READ_ID 0xE1
#define TP_VARIANT_IBM 0x01
#define TP_VARIANT_ALPS 0x02
#define TP_VARIANT_ELAN 0x03
#define TP_VARIANT_NXP 0x04
#define TP_VARIANT_JYT_SYNAPTICS 0x05
#define TP_VARIANT_SYNAPTICS 0x06
#define TP_RECALIB 0x51
#define TP_POWER_DOWN 0x44
#define TP_EXT_DEV 0x21
#define TP_EXT_BTN 0x4B
#define TP_POR 0x7F
#define TP_POR_RESULTS 0x25
#define TP_DISABLE_EXT 0x40
#define TP_ENABLE_EXT 0x41
#define TP_SET_SOFT_TRANS 0x4E
#define TP_CANCEL_SOFT_TRANS 0xB9
#define TP_SET_HARD_TRANS 0x45
#define TP_WRITE_MEM 0x81
#define TP_READ_MEM 0x80
#define TP_SENS 0x4A
#define TP_MB 0x4C
#define TP_INERTIA 0x4D
#define TP_SPEED 0x60
#define TP_REACH 0x57
#define TP_DRAGHYS 0x58
#define TP_MINDRAG 0x59
#define TP_THRESH 0x5C
#define TP_UP_THRESH 0x5A
#define TP_Z_TIME 0x5E
#define TP_JENKS_CURV 0x5D
#define TP_DRIFT_TIME 0x5F
#define TP_TOGGLE 0x47
#define TP_TOGGLE_MB 0x23
#define TP_MASK_MB 0x01
#define TP_TOGGLE_EXT_DEV 0x23
#define TP_MASK_EXT_DEV 0x02
#define TP_TOGGLE_DRIFT 0x23
#define TP_MASK_DRIFT 0x80
#define TP_TOGGLE_BURST 0x28
#define TP_MASK_BURST 0x80
#define TP_TOGGLE_PTSON 0x2C
#define TP_MASK_PTSON 0x01
#define TP_TOGGLE_HARD_TRANS 0x2C
#define TP_MASK_HARD_TRANS 0x80
#define TP_TOGGLE_TWOHAND 0x2D
#define TP_MASK_TWOHAND 0x01
#define TP_TOGGLE_STICKY_TWO 0x2D
#define TP_MASK_STICKY_TWO 0x04
#define TP_TOGGLE_SKIPBACK 0x2D
#define TP_MASK_SKIPBACK 0x08
#define TP_TOGGLE_SOURCE_TAG 0x20
#define TP_MASK_SOURCE_TAG 0x80
#define TP_TOGGLE_EXT_TAG 0x22
#define TP_MASK_EXT_TAG 0x04
#define TP_POR_SUCCESS 0x3B
#define TP_DEF_SENS 0x80
#define TP_DEF_INERTIA 0x06
#define TP_DEF_SPEED 0x61
#define TP_DEF_REACH 0x0A
#define TP_DEF_DRAGHYS 0xFF
#define TP_DEF_MINDRAG 0x14
#define TP_DEF_THRESH 0x08
#define TP_DEF_UP_THRESH 0xFF
#define TP_DEF_Z_TIME 0x26
#define TP_DEF_JENKS_CURV 0x87
#define TP_DEF_DRIFT_TIME 0x05
#define TP_DEF_MB 0x00
#define TP_DEF_PTSON 0x00
#define TP_DEF_SKIPBACK 0x00
#define TP_DEF_EXT_DEV 0x00
#define TP_DEF_TWOHAND 0x00
#define TP_DEF_SOURCE_TAG 0x00
#define MAKE_PS2_CMD(params, results, cmd) ((params<<12) | (results<<8) | (cmd))
struct trackpoint_data {
u8 variant_id;
u8 firmware_id;
u8 sensitivity, speed, inertia, reach;
u8 draghys, mindrag;
u8 thresh, upthresh;
u8 ztime, jenks;
u8 drift_time;
bool press_to_select;
bool skipback;
bool ext_dev;
};
int trackpoint_detect(struct psmouse *psmouse, bool set_properties);
#endif