| /* SPDX-License-Identifier: GPL-2.0 */ | |
| #ifndef _PIXCIR_I2C_TS_H | |
| #define _PIXCIR_I2C_TS_H | |
| /* | |
| * Register map | |
| */ | |
| #define PIXCIR_REG_POWER_MODE 51 | |
| #define PIXCIR_REG_INT_MODE 52 | |
| /* | |
| * Power modes: | |
| * active: max scan speed | |
| * idle: lower scan speed with automatic transition to active on touch | |
| * halt: datasheet says sleep but this is more like halt as the chip | |
| * clocks are cut and it can only be brought out of this mode | |
| * using the RESET pin. | |
| */ | |
| enum pixcir_power_mode { | |
| PIXCIR_POWER_ACTIVE, | |
| PIXCIR_POWER_IDLE, | |
| PIXCIR_POWER_HALT, | |
| }; | |
| #define PIXCIR_POWER_MODE_MASK 0x03 | |
| #define PIXCIR_POWER_ALLOW_IDLE (1UL << 2) | |
| /* | |
| * Interrupt modes: | |
| * periodical: interrupt is asserted periodicaly | |
| * diff coordinates: interrupt is asserted when coordinates change | |
| * level on touch: interrupt level asserted during touch | |
| * pulse on touch: interrupt pulse asserted druing touch | |
| * | |
| */ | |
| enum pixcir_int_mode { | |
| PIXCIR_INT_PERIODICAL, | |
| PIXCIR_INT_DIFF_COORD, | |
| PIXCIR_INT_LEVEL_TOUCH, | |
| PIXCIR_INT_PULSE_TOUCH, | |
| }; | |
| #define PIXCIR_INT_MODE_MASK 0x03 | |
| #define PIXCIR_INT_ENABLE (1UL << 3) | |
| #define PIXCIR_INT_POL_HIGH (1UL << 2) | |
| /** | |
| * struct pixcir_irc_chip_data - chip related data | |
| * @max_fingers: Max number of fingers reported simultaneously by h/w | |
| * @has_hw_ids: Hardware supports finger tracking IDs | |
| * | |
| */ | |
| struct pixcir_i2c_chip_data { | |
| u8 max_fingers; | |
| bool has_hw_ids; | |
| }; | |
| struct pixcir_ts_platform_data { | |
| int x_max; | |
| int y_max; | |
| struct pixcir_i2c_chip_data chip; | |
| }; | |
| #endif |