1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _PIXCIR_I2C_TS_H
3#define _PIXCIR_I2C_TS_H
4
5/*
6 * Register map
7 */
8#define PIXCIR_REG_POWER_MODE 51
9#define PIXCIR_REG_INT_MODE 52
10
11/*
12 * Power modes:
13 * active: max scan speed
14 * idle: lower scan speed with automatic transition to active on touch
15 * halt: datasheet says sleep but this is more like halt as the chip
16 * clocks are cut and it can only be brought out of this mode
17 * using the RESET pin.
18 */
19enum pixcir_power_mode {
20 PIXCIR_POWER_ACTIVE,
21 PIXCIR_POWER_IDLE,
22 PIXCIR_POWER_HALT,
23};
24
25#define PIXCIR_POWER_MODE_MASK 0x03
26#define PIXCIR_POWER_ALLOW_IDLE (1UL << 2)
27
28/*
29 * Interrupt modes:
30 * periodical: interrupt is asserted periodicaly
31 * diff coordinates: interrupt is asserted when coordinates change
32 * level on touch: interrupt level asserted during touch
33 * pulse on touch: interrupt pulse asserted druing touch
34 *
35 */
36enum pixcir_int_mode {
37 PIXCIR_INT_PERIODICAL,
38 PIXCIR_INT_DIFF_COORD,
39 PIXCIR_INT_LEVEL_TOUCH,
40 PIXCIR_INT_PULSE_TOUCH,
41};
42
43#define PIXCIR_INT_MODE_MASK 0x03
44#define PIXCIR_INT_ENABLE (1UL << 3)
45#define PIXCIR_INT_POL_HIGH (1UL << 2)
46
47/**
48 * struct pixcir_irc_chip_data - chip related data
49 * @max_fingers: Max number of fingers reported simultaneously by h/w
50 * @has_hw_ids: Hardware supports finger tracking IDs
51 *
52 */
53struct pixcir_i2c_chip_data {
54 u8 max_fingers;
55 bool has_hw_ids;
56};
57
58struct pixcir_ts_platform_data {
59 int x_max;
60 int y_max;
61 struct pixcir_i2c_chip_data chip;
62};
63
64#endif
65