diff options
| -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); |
