1 /*
2  * Copyright (c) 2020-2021 Huawei Device Co., Ltd.
3  *
4  * HDF is dual licensed: you can use it either under the terms of
5  * the GPL, or the BSD license, at your option.
6  * See the LICENSE file in the root of this repository for complete details.
7  */
8 
9 #ifndef TOUCH_GT911_H
10 #define TOUCH_GT911_H
11 
12 /* the macro defines of GT911 */
13 #define MAX_SUPPORT_POINT     5
14 #define ONE_BYTE_MASK         0xFF
15 #define ONE_BYTE_OFFSET       8
16 #define GT_EVENT_UP           0x80
17 #define GT_EVENT_INVALID      0
18 
19 #define GT_POINT_SIZE         8
20 #define GT_TRACK_ID           0
21 #define GT_X_LOW              1
22 #define GT_X_HIGH             2
23 #define GT_Y_LOW              3
24 #define GT_Y_HIGH             4
25 #define GT_ADDR_LEN           2
26 #define GT_BUF_STATE_ADDR     0x814E
27 #define GT_X_LOW_BYTE_BASE    0x814F
28 #define GT_FINGER_NUM_MASK    0x0F
29 #define GT_CLEAN_DATA_LEN     3
30 #define GT_REG_HIGH_POS       0
31 #define GT_REG_LOW_POS        1
32 #define GT_CLEAN_POS          2
33 #define GT_CLEAN_FLAG         0x0
34 /* Config info macro of GT911 */
35 #define GT_CFG_INFO_ADDR      0x8140
36 #define GT_CFG_INFO_LEN       10
37 #define GT_PROD_ID_1ST        0
38 #define GT_PROD_ID_2ND        1
39 #define GT_PROD_ID_3RD        2
40 #define GT_PROD_ID_4TH        3
41 #define GT_FW_VER_LOW         4
42 #define GT_FW_VER_HIGH        5
43 #define GT_SOLU_X_LOW         6
44 #define GT_SOLU_X_HIGH        7
45 #define GT_SOLU_Y_LOW         8
46 #define GT_SOLU_Y_HIGH        9
47 #define FIRMWARE_3RD          2
48 #define KEY_CODE_4TH          3
49 #if defined(CONFIG_ARCH_ROCKCHIP)
50 #define FIRMWARE_LEN          241
51 #define GTP_REG_CONFIG_DATA         0x8050
52 #define GT_Y_OFFSET_A         200
53 #define GT_Y_OFFSET_B         700
54 #define GT_Y_OFFSET_C         1000
55 #define CORRECTION_VALUE_A    30
56 #define CORRECTION_VALUE_B    20
57 #define CORRECTION_VALUE_C    5
58 #else
59 #define FIRMWARE_LEN          188
60 #endif
61 #if defined(CONFIG_ARCH_ROCKCHIP)
62 uint8_t firmWareParm[FIRMWARE_LEN] = {
63     0x80, 0x50, 0x64, 0xD0, 0x02, 0x00, 0x05, 0x05, 0x05, 0x00, 0x01, 0x00,  /* 0x8050 is reg, GTP_REG_CONFIG_DATA */
64     0x00, 0x0F, 0x46, 0x2D, 0x53, 0x11, 0x00, 0x00, 0x50, 0x11,
65     0x14, 0x14, 0x14, 0x20, 0x0A, 0x04, 0x00, 0x00, 0x00, 0x00,
66     0x00, 0x00, 0x53, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00,
67     0x3C, 0x00, 0x14, 0x64, 0x1E, 0x28, 0x8C, 0x0C, 0x0E, 0x37,
68     0x39, 0x09, 0x06, 0x20, 0x37, 0x20, 0x12, 0x03, 0x24, 0x00,
69     0x00, 0x19, 0x6E, 0x80, 0x14, 0x02, 0x00, 0x00, 0x54, 0xB2,
70     0x27, 0x84, 0x35, 0x6A, 0x43, 0x59, 0x51, 0x4E, 0x5F, 0x4E,
71     0x00, 0x00, 0x00, 0x10, 0x28, 0x48, 0x00, 0xF0, 0x4A, 0x3A,
72     0xFF, 0xF0, 0x27, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
73     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
74     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
75     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
76     0x32, 0x20, 0x50, 0x3C, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00,
77     0x0D, 0x06, 0x0C, 0x05, 0x0B, 0x04, 0x0A, 0x03, 0x09, 0x02,
78     0x08, 0x01, 0x07, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
79     0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
80     0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
81     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
82     0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x05, 0x1E, 0x00, 0x02,
83     0x2A, 0x1E, 0x19, 0x14, 0x02, 0x00, 0x03, 0x0A, 0x05, 0x00,
84     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x04,
85     0x22, 0x03, 0x00, 0x00, 0x33, 0x00, 0x0F, 0x00, 0x00, 0x28,
86     0x50, 0x3C, 0x50, 0x00, 0x00, 0x05, 0x5F, 0xEB, 0x01
87 };
88 #else
89 uint8_t firmWareParm[FIRMWARE_LEN] = {
90     0x80, 0x47, 0x45, 0xC0, 0x03, 0xE0, 0x01, 0x05, 0x3D, 0x00, 0x01, 0x08, 0x28, 0x0F,
91     0x50, 0x32, 0x03, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1A, 0x1E,
92     0x14, 0x86, 0x26, 0x08, 0x55, 0x57, 0xB2, 0x04, 0x00, 0x00, 0x00, 0x42, 0x02, 0x11,
93     0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x78, 0x94,
94     0xD5, 0x02, 0x07, 0x00, 0x00, 0x04, 0x97, 0x40, 0x00, 0x8A, 0x4A, 0x00, 0x80, 0x55,
95     0x00, 0x77, 0x61, 0x00, 0x6F, 0x70, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
97     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
98     0x00, 0x00, 0x10, 0x0E, 0x0C, 0x0A, 0x08, 0x06, 0x04, 0x02, 0xFF, 0xFF, 0xFF, 0xFF,
99     0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
100     0x00, 0x00, 0x00, 0x00, 0x22, 0x21, 0x20, 0x1F, 0x1E, 0x1D, 0x00, 0x02, 0x04, 0x06,
101     0x08, 0x0A, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
102     0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
103     0x00, 0x00, 0x00, 0x00, 0x5C, 0x01
104 };
105 #endif
106 #endif