aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorWon Hyoung Lee <whlee@sta.samsung.com>2011-11-08 14:07:10 -0800
committerArve Hjønnevåg <arve@android.com>2011-11-17 17:54:44 -0800
commit197b429c4b705836c9ac0902d67d716049529297 (patch)
tree8535e2378795c122ba43eeb54ee858bb2874a5d8 /drivers/input
parent7353b3f93f19a73f5465a49872d80f6e09758833 (diff)
downloadkernel_samsung_crespo-197b429c4b705836c9ac0902d67d716049529297.zip
kernel_samsung_crespo-197b429c4b705836c9ac0902d67d716049529297.tar.gz
kernel_samsung_crespo-197b429c4b705836c9ac0902d67d716049529297.tar.bz2
gp2a: set poll_delay to DELAY_LOWBOUND when new delay < DELAY_LOWBOUND
If a delay of 0 or some low value is passed from any apps, then system can lock up. Change-Id: I543d48a1e02becd1f74cc81e0212909d3e864082 Signed-off-by: Won Hyoung Lee <whlee@sta.samsung.com>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/misc/gp2a.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/input/misc/gp2a.c b/drivers/input/misc/gp2a.c
index ea82700..472da90 100644
--- a/drivers/input/misc/gp2a.c
+++ b/drivers/input/misc/gp2a.c
@@ -64,6 +64,8 @@
#define PROXIMITY 1
#define ALL 2
+#define DELAY_LOWBOUND (5 * NSEC_PER_MSEC)
+
/* start time delay for light sensor in nano seconds */
#define LIGHT_SENSOR_START_TIME_DELAY 50000000
@@ -167,6 +169,13 @@ static ssize_t poll_delay_store(struct device *dev,
gp2a_dbgmsg("new delay = %lldns, old delay = %lldns\n",
new_delay, ktime_to_ns(gp2a->light_poll_delay));
+
+ if (new_delay < DELAY_LOWBOUND) {
+ gp2a_dbgmsg("new delay less than low bound, so set delay "
+ "to %lld\n", (int64_t)DELAY_LOWBOUND);
+ new_delay = DELAY_LOWBOUND;
+ }
+
mutex_lock(&gp2a->power_lock);
if (new_delay != ktime_to_ns(gp2a->light_poll_delay)) {
gp2a->light_poll_delay = ns_to_ktime(new_delay);