/* 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