From cae91c0029ac9d5f8bf4fcd8282139300a6f0d95 Mon Sep 17 00:00:00 2001 From: Hyong Bin Kim Date: Tue, 15 Jul 2014 21:00:47 +0900 Subject: staging:iio:ltr659ps: add wake lock Prox state is changed during go into suspend, device loose it state. Add wake lock 1 sec to prevent suspend when interrupt occur. bug 200020300 Change-Id: I34901f4e32de9156ebbe36bf72b8d448f3f8fe9c Signed-off-by: Hyong Bin Kim Reviewed-on: http://git-master/r/438143 GVS: Gerrit_Virtual_Submit Reviewed-by: Jackie Chen Tested-by: Jackie Chen Reviewed-by: Harry Hong --- drivers/staging/iio/light/ltr659ps.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/staging/iio/light/ltr659ps.c b/drivers/staging/iio/light/ltr659ps.c index a918f8283578..6ec7773f7c63 100644 --- a/drivers/staging/iio/light/ltr659ps.c +++ b/drivers/staging/iio/light/ltr659ps.c @@ -27,7 +27,7 @@ #include #include #include - +#include #include @@ -173,6 +173,7 @@ struct ltr659ps_data { int near; struct mutex prox_mtx; + struct wake_lock prox_wake_lock; }; @@ -1158,6 +1159,8 @@ static void ltr659ps_work_function(struct work_struct *work) if (!data->enable) return; + wake_lock_timeout(&data->prox_wake_lock, 1 * HZ); + status = i2c_smbus_read_byte_data(client, LTR659PS_REG_PS_STATUS); if ((status & 0x03) == 0x03) ltr659ps_report_input_event(data); @@ -1446,6 +1449,9 @@ static int __devinit ltr659ps_probe(struct i2c_client *client goto err_iio_device_register; } + wake_lock_init(&prox_data->prox_wake_lock, WAKE_LOCK_SUSPEND, + "prox_wake_lock"); + queue_delayed_work(prox_data->prox_wq , &prox_data->work, msecs_to_jiffies(200)); @@ -1478,6 +1484,7 @@ static int __devexit ltr659ps_remove(struct i2c_client *client) struct ltr659ps_data *data = iio_priv(indio_dev); PROX_DEBUG("\n"); + wake_lock_destroy(&data->prox_wake_lock); iio_device_unregister(indio_dev); free_irq(client->irq, client); input_unregister_device(data->ps_input_dev); -- cgit v1.2.3