0001
0002
0003
0004
0005
0006
0007
0008
0009 #ifndef __SENTELIC_H
0010 #define __SENTELIC_H
0011
0012
0013 #define FSP_REG_DEVICE_ID 0x00
0014 #define FSP_REG_VERSION 0x01
0015 #define FSP_REG_REVISION 0x04
0016 #define FSP_REG_TMOD_STATUS1 0x0B
0017 #define FSP_BIT_NO_ROTATION BIT(3)
0018 #define FSP_REG_PAGE_CTRL 0x0F
0019
0020
0021 #define FSP_REG_SYSCTL1 0x10
0022 #define FSP_BIT_EN_REG_CLK BIT(5)
0023 #define FSP_REG_TMOD_STATUS 0x20
0024 #define FSP_REG_OPC_QDOWN 0x31
0025 #define FSP_BIT_EN_OPC_TAG BIT(7)
0026 #define FSP_REG_OPTZ_XLO 0x34
0027 #define FSP_REG_OPTZ_XHI 0x35
0028 #define FSP_REG_OPTZ_YLO 0x36
0029 #define FSP_REG_OPTZ_YHI 0x37
0030 #define FSP_REG_SYSCTL5 0x40
0031 #define FSP_BIT_90_DEGREE BIT(0)
0032 #define FSP_BIT_EN_MSID6 BIT(1)
0033 #define FSP_BIT_EN_MSID7 BIT(2)
0034 #define FSP_BIT_EN_MSID8 BIT(3)
0035 #define FSP_BIT_EN_AUTO_MSID8 BIT(5)
0036 #define FSP_BIT_EN_PKT_G0 BIT(6)
0037
0038 #define FSP_REG_ONPAD_CTL 0x43
0039 #define FSP_BIT_ONPAD_ENABLE BIT(0)
0040 #define FSP_BIT_ONPAD_FBBB BIT(1)
0041 #define FSP_BIT_FIX_VSCR BIT(3)
0042 #define FSP_BIT_FIX_HSCR BIT(5)
0043 #define FSP_BIT_DRAG_LOCK BIT(6)
0044
0045 #define FSP_REG_SWC1 (0x90)
0046 #define FSP_BIT_SWC1_EN_ABS_1F BIT(0)
0047 #define FSP_BIT_SWC1_EN_GID BIT(1)
0048 #define FSP_BIT_SWC1_EN_ABS_2F BIT(2)
0049 #define FSP_BIT_SWC1_EN_FUP_OUT BIT(3)
0050 #define FSP_BIT_SWC1_EN_ABS_CON BIT(4)
0051 #define FSP_BIT_SWC1_GST_GRP0 BIT(5)
0052 #define FSP_BIT_SWC1_GST_GRP1 BIT(6)
0053 #define FSP_BIT_SWC1_BX_COMPAT BIT(7)
0054
0055 #define FSP_PAGE_0B (0x0b)
0056 #define FSP_PAGE_82 (0x82)
0057 #define FSP_PAGE_DEFAULT FSP_PAGE_82
0058
0059 #define FSP_REG_SN0 (0x40)
0060 #define FSP_REG_SN1 (0x41)
0061 #define FSP_REG_SN2 (0x42)
0062
0063
0064
0065
0066 #define FSP_PKT_TYPE_NORMAL (0x00)
0067 #define FSP_PKT_TYPE_ABS (0x01)
0068 #define FSP_PKT_TYPE_NOTIFY (0x02)
0069 #define FSP_PKT_TYPE_NORMAL_OPC (0x03)
0070 #define FSP_PKT_TYPE_SHIFT (6)
0071
0072
0073 #define FSP_PB0_LBTN BIT(0)
0074 #define FSP_PB0_RBTN BIT(1)
0075 #define FSP_PB0_MBTN BIT(2)
0076 #define FSP_PB0_MFMC_FGR2 FSP_PB0_MBTN
0077 #define FSP_PB0_MUST_SET BIT(3)
0078 #define FSP_PB0_PHY_BTN BIT(4)
0079 #define FSP_PB0_MFMC BIT(5)
0080
0081
0082 #define FSP_VER_STL3888_A4 (0xC1)
0083 #define FSP_VER_STL3888_B0 (0xD0)
0084 #define FSP_VER_STL3888_B1 (0xD1)
0085 #define FSP_VER_STL3888_B2 (0xD2)
0086 #define FSP_VER_STL3888_C0 (0xE0)
0087 #define FSP_VER_STL3888_C1 (0xE1)
0088 #define FSP_VER_STL3888_D0 (0xE2)
0089 #define FSP_VER_STL3888_D1 (0xE3)
0090 #define FSP_VER_STL3888_E0 (0xE4)
0091
0092 #ifdef __KERNEL__
0093
0094 struct fsp_data {
0095 unsigned char ver;
0096 unsigned char rev;
0097 unsigned int buttons;
0098 unsigned int flags;
0099 #define FSPDRV_FLAG_EN_OPC (0x001)
0100
0101 bool vscroll;
0102 bool hscroll;
0103
0104 unsigned char last_reg;
0105 unsigned char last_val;
0106 unsigned int last_mt_fgr;
0107 };
0108
0109 extern int fsp_detect(struct psmouse *psmouse, bool set_properties);
0110 extern int fsp_init(struct psmouse *psmouse);
0111
0112 #endif
0113
0114 #endif