diff options
Diffstat (limited to 'drivers/input')
-rw-r--r-- | drivers/input/touchscreen/ucb1400_ts.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/drivers/input/touchscreen/ucb1400_ts.c b/drivers/input/touchscreen/ucb1400_ts.c index 5200f4cbfe01..24000f0efeaa 100644 --- a/drivers/input/touchscreen/ucb1400_ts.c +++ b/drivers/input/touchscreen/ucb1400_ts.c | |||
@@ -97,6 +97,8 @@ struct ucb1400 { | |||
97 | }; | 97 | }; |
98 | 98 | ||
99 | static int adcsync; | 99 | static int adcsync; |
100 | static int ts_delay = 55; /* us */ | ||
101 | static int ts_delay_pressure; /* us */ | ||
100 | 102 | ||
101 | static inline u16 ucb1400_reg_read(struct ucb1400 *ucb, u16 reg) | 103 | static inline u16 ucb1400_reg_read(struct ucb1400 *ucb, u16 reg) |
102 | { | 104 | { |
@@ -159,6 +161,7 @@ static inline unsigned int ucb1400_ts_read_pressure(struct ucb1400 *ucb) | |||
159 | UCB_TS_CR_TSMX_POW | UCB_TS_CR_TSPX_POW | | 161 | UCB_TS_CR_TSMX_POW | UCB_TS_CR_TSPX_POW | |
160 | UCB_TS_CR_TSMY_GND | UCB_TS_CR_TSPY_GND | | 162 | UCB_TS_CR_TSMY_GND | UCB_TS_CR_TSPY_GND | |
161 | UCB_TS_CR_MODE_PRES | UCB_TS_CR_BIAS_ENA); | 163 | UCB_TS_CR_MODE_PRES | UCB_TS_CR_BIAS_ENA); |
164 | udelay(ts_delay_pressure); | ||
162 | return ucb1400_adc_read(ucb, UCB_ADC_INP_TSPY); | 165 | return ucb1400_adc_read(ucb, UCB_ADC_INP_TSPY); |
163 | } | 166 | } |
164 | 167 | ||
@@ -180,7 +183,7 @@ static inline unsigned int ucb1400_ts_read_xpos(struct ucb1400 *ucb) | |||
180 | UCB_TS_CR_TSMX_GND | UCB_TS_CR_TSPX_POW | | 183 | UCB_TS_CR_TSMX_GND | UCB_TS_CR_TSPX_POW | |
181 | UCB_TS_CR_MODE_POS | UCB_TS_CR_BIAS_ENA); | 184 | UCB_TS_CR_MODE_POS | UCB_TS_CR_BIAS_ENA); |
182 | 185 | ||
183 | udelay(55); | 186 | udelay(ts_delay); |
184 | 187 | ||
185 | return ucb1400_adc_read(ucb, UCB_ADC_INP_TSPY); | 188 | return ucb1400_adc_read(ucb, UCB_ADC_INP_TSPY); |
186 | } | 189 | } |
@@ -203,7 +206,7 @@ static inline unsigned int ucb1400_ts_read_ypos(struct ucb1400 *ucb) | |||
203 | UCB_TS_CR_TSMY_GND | UCB_TS_CR_TSPY_POW | | 206 | UCB_TS_CR_TSMY_GND | UCB_TS_CR_TSPY_POW | |
204 | UCB_TS_CR_MODE_POS | UCB_TS_CR_BIAS_ENA); | 207 | UCB_TS_CR_MODE_POS | UCB_TS_CR_BIAS_ENA); |
205 | 208 | ||
206 | udelay(55); | 209 | udelay(ts_delay); |
207 | 210 | ||
208 | return ucb1400_adc_read(ucb, UCB_ADC_INP_TSPX); | 211 | return ucb1400_adc_read(ucb, UCB_ADC_INP_TSPX); |
209 | } | 212 | } |
@@ -571,7 +574,15 @@ static void __exit ucb1400_ts_exit(void) | |||
571 | driver_unregister(&ucb1400_ts_driver); | 574 | driver_unregister(&ucb1400_ts_driver); |
572 | } | 575 | } |
573 | 576 | ||
574 | module_param(adcsync, int, 0444); | 577 | module_param(adcsync, bool, 0444); |
578 | MODULE_PARM_DESC(adcsync, "Synchronize touch readings with ADCSYNC pin."); | ||
579 | |||
580 | module_param(ts_delay, int, 0444); | ||
581 | MODULE_PARM_DESC(ts_delay, "Delay between panel setup and position read. Default = 55us."); | ||
582 | |||
583 | module_param(ts_delay_pressure, int, 0444); | ||
584 | MODULE_PARM_DESC(ts_delay_pressure, | ||
585 | "delay between panel setup and pressure read. Default = 0us."); | ||
575 | 586 | ||
576 | module_init(ucb1400_ts_init); | 587 | module_init(ucb1400_ts_init); |
577 | module_exit(ucb1400_ts_exit); | 588 | module_exit(ucb1400_ts_exit); |