2017-02-17 23:53:32 +03:00
/*
* Copyright ( c ) 2008 MtekVision Co . , Ltd .
* Kwangwoo Lee < kwlee @ mtekvision . com >
*
* Using code from :
* - ads7846 . c
* Copyright ( c ) 2005 David Brownell
* Copyright ( c ) 2006 Nokia Corporation
* - corgi_ts . c
* Copyright ( C ) 2004 - 2005 Richard Purdie
* - omap_ts . [ hc ] , ads7846 . h , ts_osk . c
* Copyright ( C ) 2002 MontaVista Software
* Copyright ( C ) 2004 Texas Instruments
* Copyright ( C ) 2005 Dirk Behme
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# ifndef _TSC2007_H
# define _TSC2007_H
# define TSC2007_MEASURE_TEMP0 (0x0 << 4)
# define TSC2007_MEASURE_AUX (0x2 << 4)
# define TSC2007_MEASURE_TEMP1 (0x4 << 4)
# define TSC2007_ACTIVATE_XN (0x8 << 4)
# define TSC2007_ACTIVATE_YN (0x9 << 4)
# define TSC2007_ACTIVATE_YP_XN (0xa << 4)
# define TSC2007_SETUP (0xb << 4)
# define TSC2007_MEASURE_X (0xc << 4)
# define TSC2007_MEASURE_Y (0xd << 4)
# define TSC2007_MEASURE_Z1 (0xe << 4)
# define TSC2007_MEASURE_Z2 (0xf << 4)
# define TSC2007_POWER_OFF_IRQ_EN (0x0 << 2)
# define TSC2007_ADC_ON_IRQ_DIS0 (0x1 << 2)
# define TSC2007_ADC_OFF_IRQ_EN (0x2 << 2)
# define TSC2007_ADC_ON_IRQ_DIS1 (0x3 << 2)
# define TSC2007_12BIT (0x0 << 1)
# define TSC2007_8BIT (0x1 << 1)
# define MAX_12BIT ((1 << 12) - 1)
# define ADC_ON_12BIT (TSC2007_12BIT | TSC2007_ADC_ON_IRQ_DIS0)
# define READ_Y (ADC_ON_12BIT | TSC2007_MEASURE_Y)
# define READ_Z1 (ADC_ON_12BIT | TSC2007_MEASURE_Z1)
# define READ_Z2 (ADC_ON_12BIT | TSC2007_MEASURE_Z2)
# define READ_X (ADC_ON_12BIT | TSC2007_MEASURE_X)
# define PWRDOWN (TSC2007_12BIT | TSC2007_POWER_OFF_IRQ_EN)
struct ts_event {
u16 x ;
u16 y ;
u16 z1 , z2 ;
} ;
struct tsc2007 {
struct input_dev * input ;
char phys [ 32 ] ;
struct i2c_client * client ;
u16 model ;
u16 x_plate_ohms ;
u16 max_rt ;
unsigned long poll_period ; /* in jiffies */
int fuzzx ;
int fuzzy ;
int fuzzz ;
unsigned int gpio ;
int irq ;
wait_queue_head_t wait ;
bool stopped ;
int ( * get_pendown_state ) ( struct device * ) ;
void ( * clear_penirq ) ( void ) ;
struct mutex mlock ;
} ;
int tsc2007_xfer ( struct tsc2007 * tsc , u8 cmd ) ;
2017-02-23 10:49:02 +03:00
u32 tsc2007_calculate_resistance ( struct tsc2007 * tsc , struct ts_event * tc ) ;
2017-02-17 23:53:32 +03:00
bool tsc2007_is_pen_down ( struct tsc2007 * ts ) ;
# if IS_ENABLED(CONFIG_TOUCHSCREEN_TSC2007_IIO)
/* defined in tsc2007_iio.c */
int tsc2007_iio_configure ( struct tsc2007 * ts ) ;
# else
static inline int tsc2007_iio_configure ( struct tsc2007 * ts )
{
return 0 ;
}
# endif /* CONFIG_TOUCHSCREEN_TSC2007_IIO */
# endif /* _TSC2007_H */