1 /*
2  * Copyright (c) 2006-2021, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2018-10-03     xuzhuoyi     first implementation.
9  */
10 
11 #ifndef __DRV_TOUCH_H__
12 #define __DRV_TOUCH_H__
13 
14 #include <stdint.h>
15 
16 /* Register addresses */
17 #define STMPE811_CHIP_ID        0x00
18 #define STMPE811_ID_VER         0x02
19 #define STMPE811_SYS_CTRL1      0x03
20 #define STMPE811_SYS_CTRL2      0x04
21 #define STMPE811_SPI_CFG        0x08
22 #define STMPE811_INT_CTRL       0x09
23 #define STMPE811_INT_EN         0x0A
24 #define STMPE811_INT_STA        0x0B
25 #define STMPE811_GPIO_EN        0x0C
26 #define STMPE811_GPIO_INT_STA   0x0D
27 #define STMPE811_ADC_INT_EN     0x0E
28 #define STMPE811_ADC_INT_STA    0x0F
29 #define STMPE811_GPIO_SET_PIN   0x10
30 #define STMPE811_GPIO_CLR_PIN   0x11
31 #define STMPE811_GPIO_MP_STA    0x12
32 #define STMPE811_GPIO_DIR       0x13
33 #define STMPE811_GPIO_ED        0x14
34 #define STMPE811_GPIO_RE        0x15
35 #define STMPE811_GPIO_FE        0x16
36 #define STMPE811_GPIO_AF        0x17
37 #define STMPE811_ADC_CTRL1      0x20
38 #define STMPE811_ADC_CTRL2      0x21
39 #define STMPE811_ADC_CAPT       0x22
40 #define STMPE811_ADC_DATA_CH0   0x30
41 #define STMPE811_ADC_DATA_CH1   0x32
42 #define STMPE811_ADC_DATA_CH2   0x34
43 #define STMPE811_ADC_DATA_CH3   0x36
44 #define STMPE811_ADC_DATA_CH4   0x38
45 #define STMPE811_ADC_DATA_CH5   0x3A
46 #define STMPE811_ADC_DATA_CH6   0x3C
47 #define STMPE811_ADC_DATA_CH7   0x3E
48 #define STMPE811_TSC_CTRL       0x40
49 #define STMPE811_TSC_CFG        0x41
50 #define STMPE811_WDW_TR_X       0x42
51 #define STMPE811_WDW_TR_Y       0x44
52 #define STMPE811_WDW_BL_X       0x46
53 #define STMPE811_WDW_BL_Y       0x48
54 #define STMPE811_FIFO_TH        0x4A
55 #define STMPE811_FIFO_STA       0x4B
56 #define STMPE811_FIFO_SIZE      0x4C
57 #define STMPE811_TSC_DATA_X     0x4D
58 #define STMPE811_TSC_DATA_Y     0x4F
59 #define STMPE811_TSC_DATA_Z     0x51
60 #define STMPE811_TSC_FRACTION_Z 0x56
61 #define STMPE811_TSC_DATA_XYZ   0x57
62 #define STMPE811_TSC_DATA       0xD7
63 #define STMPE811_TSC_I_DRIVE    0x58
64 #define STMPE811_TSC_SHIELD     0x59
65 #define STMPE811_TEMP_CTRL      0x60
66 #define STMPE811_TEMP_DATA      0x61
67 #define STMPE811_TEMP_TH        0x62
68 
69 /* Touch state */
70 struct touch_state {
71   int16_t x;                            ///< Position X
72   int16_t y;                            ///< Position Y
73   uint8_t pressed;                      ///< Pressed flag
74   uint8_t padding;
75 };
76 
77 int32_t touch_get_state(struct touch_state *state);
78 
79 #endif /* __DRV_TOUCH_H__ */
80