Commit fdba2bb1 authored by Ranjith Lohithakshan's avatar Ranjith Lohithakshan Committed by Dmitry Torokhov

Input: ads7846 - add wakeup support

Add wakeup support to the ads7846 driver. Platforms can enable wakeup
capability by setting the wakeup flag in ads7846_platform_data. With this
patch the ads7846 driver can be used to wake the system from suspend.
Signed-off-by: default avatarRanjith Lohithakshan <ranjithl@ti.com>
Signed-off-by: default avatarDmitry Torokhov <dtor@mail.ru>
parent 04b4b88c
...@@ -822,6 +822,9 @@ static int ads7846_suspend(struct spi_device *spi, pm_message_t message) ...@@ -822,6 +822,9 @@ static int ads7846_suspend(struct spi_device *spi, pm_message_t message)
spin_unlock_irq(&ts->lock); spin_unlock_irq(&ts->lock);
if (device_may_wakeup(&ts->spi->dev))
enable_irq_wake(ts->spi->irq);
return 0; return 0;
} }
...@@ -830,6 +833,9 @@ static int ads7846_resume(struct spi_device *spi) ...@@ -830,6 +833,9 @@ static int ads7846_resume(struct spi_device *spi)
{ {
struct ads7846 *ts = dev_get_drvdata(&spi->dev); struct ads7846 *ts = dev_get_drvdata(&spi->dev);
if (device_may_wakeup(&ts->spi->dev))
disable_irq_wake(ts->spi->irq);
spin_lock_irq(&ts->lock); spin_lock_irq(&ts->lock);
ts->is_suspended = 0; ts->is_suspended = 0;
...@@ -1201,6 +1207,8 @@ static int __devinit ads7846_probe(struct spi_device *spi) ...@@ -1201,6 +1207,8 @@ static int __devinit ads7846_probe(struct spi_device *spi)
if (err) if (err)
goto err_remove_attr_group; goto err_remove_attr_group;
device_init_wakeup(&spi->dev, pdata->wakeup);
return 0; return 0;
err_remove_attr_group: err_remove_attr_group:
...@@ -1230,6 +1238,8 @@ static int __devexit ads7846_remove(struct spi_device *spi) ...@@ -1230,6 +1238,8 @@ static int __devexit ads7846_remove(struct spi_device *spi)
{ {
struct ads7846 *ts = dev_get_drvdata(&spi->dev); struct ads7846 *ts = dev_get_drvdata(&spi->dev);
device_init_wakeup(&spi->dev, false);
ads784x_hwmon_unregister(spi, ts); ads784x_hwmon_unregister(spi, ts);
input_unregister_device(ts->input); input_unregister_device(ts->input);
......
...@@ -53,5 +53,6 @@ struct ads7846_platform_data { ...@@ -53,5 +53,6 @@ struct ads7846_platform_data {
int (*filter) (void *filter_data, int data_idx, int *val); int (*filter) (void *filter_data, int data_idx, int *val);
void (*filter_cleanup)(void *filter_data); void (*filter_cleanup)(void *filter_data);
void (*wait_for_sync)(void); void (*wait_for_sync)(void);
bool wakeup;
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment