forked from Minki/linux
e9003c9cfa
Passes input_id struct to the common probe function for the tsc200x drivers instead of just the bustype. This allows for the use of the product variable to set the input_dev->name variable according to the type of touchscreen used. Note that when we introduced support for TSC2004 we started calling everything TSC200X, so let's keep this quirk. Signed-off-by: Michael Welling <mwelling@ieee.org> Cc: stable@vger.kernel.org Acked-by: Pavel Machek <pavel@ucw.cz> Acked-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
79 lines
2.5 KiB
C
79 lines
2.5 KiB
C
#ifndef _TSC200X_CORE_H
|
|
#define _TSC200X_CORE_H
|
|
|
|
/* control byte 1 */
|
|
#define TSC200X_CMD 0x80
|
|
#define TSC200X_CMD_NORMAL 0x00
|
|
#define TSC200X_CMD_STOP 0x01
|
|
#define TSC200X_CMD_12BIT 0x04
|
|
|
|
/* control byte 0 */
|
|
#define TSC200X_REG_READ 0x01 /* R/W access */
|
|
#define TSC200X_REG_PND0 0x02 /* Power Not Down Control */
|
|
#define TSC200X_REG_X (0x0 << 3)
|
|
#define TSC200X_REG_Y (0x1 << 3)
|
|
#define TSC200X_REG_Z1 (0x2 << 3)
|
|
#define TSC200X_REG_Z2 (0x3 << 3)
|
|
#define TSC200X_REG_AUX (0x4 << 3)
|
|
#define TSC200X_REG_TEMP1 (0x5 << 3)
|
|
#define TSC200X_REG_TEMP2 (0x6 << 3)
|
|
#define TSC200X_REG_STATUS (0x7 << 3)
|
|
#define TSC200X_REG_AUX_HIGH (0x8 << 3)
|
|
#define TSC200X_REG_AUX_LOW (0x9 << 3)
|
|
#define TSC200X_REG_TEMP_HIGH (0xA << 3)
|
|
#define TSC200X_REG_TEMP_LOW (0xB << 3)
|
|
#define TSC200X_REG_CFR0 (0xC << 3)
|
|
#define TSC200X_REG_CFR1 (0xD << 3)
|
|
#define TSC200X_REG_CFR2 (0xE << 3)
|
|
#define TSC200X_REG_CONV_FUNC (0xF << 3)
|
|
|
|
/* configuration register 0 */
|
|
#define TSC200X_CFR0_PRECHARGE_276US 0x0040
|
|
#define TSC200X_CFR0_STABTIME_1MS 0x0300
|
|
#define TSC200X_CFR0_CLOCK_1MHZ 0x1000
|
|
#define TSC200X_CFR0_RESOLUTION12 0x2000
|
|
#define TSC200X_CFR0_PENMODE 0x8000
|
|
#define TSC200X_CFR0_INITVALUE (TSC200X_CFR0_STABTIME_1MS | \
|
|
TSC200X_CFR0_CLOCK_1MHZ | \
|
|
TSC200X_CFR0_RESOLUTION12 | \
|
|
TSC200X_CFR0_PRECHARGE_276US | \
|
|
TSC200X_CFR0_PENMODE)
|
|
|
|
/* bits common to both read and write of configuration register 0 */
|
|
#define TSC200X_CFR0_RW_MASK 0x3fff
|
|
|
|
/* configuration register 1 */
|
|
#define TSC200X_CFR1_BATCHDELAY_4MS 0x0003
|
|
#define TSC200X_CFR1_INITVALUE TSC200X_CFR1_BATCHDELAY_4MS
|
|
|
|
/* configuration register 2 */
|
|
#define TSC200X_CFR2_MAVE_Z 0x0004
|
|
#define TSC200X_CFR2_MAVE_Y 0x0008
|
|
#define TSC200X_CFR2_MAVE_X 0x0010
|
|
#define TSC200X_CFR2_AVG_7 0x0800
|
|
#define TSC200X_CFR2_MEDIUM_15 0x3000
|
|
#define TSC200X_CFR2_INITVALUE (TSC200X_CFR2_MAVE_X | \
|
|
TSC200X_CFR2_MAVE_Y | \
|
|
TSC200X_CFR2_MAVE_Z | \
|
|
TSC200X_CFR2_MEDIUM_15 | \
|
|
TSC200X_CFR2_AVG_7)
|
|
|
|
#define MAX_12BIT 0xfff
|
|
#define TSC200X_DEF_X_FUZZ 4
|
|
#define TSC200X_DEF_Y_FUZZ 8
|
|
#define TSC200X_DEF_P_FUZZ 2
|
|
#define TSC200X_DEF_RESISTOR 280
|
|
|
|
#define TSC2005_SPI_MAX_SPEED_HZ 10000000
|
|
#define TSC200X_PENUP_TIME_MS 40
|
|
|
|
extern const struct regmap_config tsc200x_regmap_config;
|
|
extern const struct dev_pm_ops tsc200x_pm_ops;
|
|
|
|
int tsc200x_probe(struct device *dev, int irq, const struct input_id *tsc_id,
|
|
struct regmap *regmap,
|
|
int (*tsc200x_cmd)(struct device *dev, u8 cmd));
|
|
int tsc200x_remove(struct device *dev);
|
|
|
|
#endif
|