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