aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2011-11-14 03:32:09 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2011-11-16 01:24:22 -0500
commit8672bd93d3d67b18a2b067ece30dabcda11f8cde (patch)
treeba2987ce325f7a3d9b77730f19635bf5b6be0428 /drivers/input
parent59bae1db71942dcf91bb7e4938989606095536b5 (diff)
Input: ad7879 - consolidate PM methods
The PM methods are basically the same for SPI and I2C busses, so let's use the same dev_pm_ops for both of them. Acked-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/touchscreen/ad7879-i2c.c26
-rw-r--r--drivers/input/touchscreen/ad7879-spi.c26
-rw-r--r--drivers/input/touchscreen/ad7879.c19
-rw-r--r--drivers/input/touchscreen/ad7879.h4
4 files changed, 19 insertions, 56 deletions
diff --git a/drivers/input/touchscreen/ad7879-i2c.c b/drivers/input/touchscreen/ad7879-i2c.c
index c789b974c795..c4b51170c951 100644
--- a/drivers/input/touchscreen/ad7879-i2c.c
+++ b/drivers/input/touchscreen/ad7879-i2c.c
@@ -16,30 +16,6 @@
16 16
17#define AD7879_DEVID 0x79 /* AD7879-1/AD7889-1 */ 17#define AD7879_DEVID 0x79 /* AD7879-1/AD7889-1 */
18 18
19#ifdef CONFIG_PM_SLEEP
20static int ad7879_i2c_suspend(struct device *dev)
21{
22 struct i2c_client *client = to_i2c_client(dev);
23 struct ad7879 *ts = i2c_get_clientdata(client);
24
25 ad7879_suspend(ts);
26
27 return 0;
28}
29
30static int ad7879_i2c_resume(struct device *dev)
31{
32 struct i2c_client *client = to_i2c_client(dev);
33 struct ad7879 *ts = i2c_get_clientdata(client);
34
35 ad7879_resume(ts);
36
37 return 0;
38}
39#endif
40
41static SIMPLE_DEV_PM_OPS(ad7879_i2c_pm, ad7879_i2c_suspend, ad7879_i2c_resume);
42
43/* All registers are word-sized. 19/* All registers are word-sized.
44 * AD7879 uses a high-byte first convention. 20 * AD7879 uses a high-byte first convention.
45 */ 21 */
@@ -119,7 +95,7 @@ static struct i2c_driver ad7879_i2c_driver = {
119 .driver = { 95 .driver = {
120 .name = "ad7879", 96 .name = "ad7879",
121 .owner = THIS_MODULE, 97 .owner = THIS_MODULE,
122 .pm = &ad7879_i2c_pm, 98 .pm = &ad7879_pm_ops,
123 }, 99 },
124 .probe = ad7879_i2c_probe, 100 .probe = ad7879_i2c_probe,
125 .remove = __devexit_p(ad7879_i2c_remove), 101 .remove = __devexit_p(ad7879_i2c_remove),
diff --git a/drivers/input/touchscreen/ad7879-spi.c b/drivers/input/touchscreen/ad7879-spi.c
index ddf732f3cafc..8b44fc768251 100644
--- a/drivers/input/touchscreen/ad7879-spi.c
+++ b/drivers/input/touchscreen/ad7879-spi.c
@@ -21,30 +21,6 @@
21#define AD7879_WRITECMD(reg) (AD7879_CMD(reg)) 21#define AD7879_WRITECMD(reg) (AD7879_CMD(reg))
22#define AD7879_READCMD(reg) (AD7879_CMD(reg) | AD7879_CMD_READ) 22#define AD7879_READCMD(reg) (AD7879_CMD(reg) | AD7879_CMD_READ)
23 23
24#ifdef CONFIG_PM_SLEEP
25static int ad7879_spi_suspend(struct device *dev)
26{
27 struct spi_device *spi = to_spi_device(dev);
28 struct ad7879 *ts = spi_get_drvdata(spi);
29
30 ad7879_suspend(ts);
31
32 return 0;
33}
34
35static int ad7879_spi_resume(struct device *dev)
36{
37 struct spi_device *spi = to_spi_device(dev);
38 struct ad7879 *ts = spi_get_drvdata(spi);
39
40 ad7879_resume(ts);
41
42 return 0;
43}
44#endif
45
46static SIMPLE_DEV_PM_OPS(ad7879_spi_pm, ad7879_spi_suspend, ad7879_spi_resume);
47
48/* 24/*
49 * ad7879_read/write are only used for initial setup and for sysfs controls. 25 * ad7879_read/write are only used for initial setup and for sysfs controls.
50 * The main traffic is done in ad7879_collect(). 26 * The main traffic is done in ad7879_collect().
@@ -175,7 +151,7 @@ static struct spi_driver ad7879_spi_driver = {
175 .name = "ad7879", 151 .name = "ad7879",
176 .bus = &spi_bus_type, 152 .bus = &spi_bus_type,
177 .owner = THIS_MODULE, 153 .owner = THIS_MODULE,
178 .pm = &ad7879_spi_pm, 154 .pm = &ad7879_pm_ops,
179 }, 155 },
180 .probe = ad7879_spi_probe, 156 .probe = ad7879_spi_probe,
181 .remove = __devexit_p(ad7879_spi_remove), 157 .remove = __devexit_p(ad7879_spi_remove),
diff --git a/drivers/input/touchscreen/ad7879.c b/drivers/input/touchscreen/ad7879.c
index 76f5cb4e6ea9..dce60b816b58 100644
--- a/drivers/input/touchscreen/ad7879.c
+++ b/drivers/input/touchscreen/ad7879.c
@@ -280,8 +280,11 @@ static void ad7879_close(struct input_dev* input)
280 __ad7879_disable(ts); 280 __ad7879_disable(ts);
281} 281}
282 282
283void ad7879_suspend(struct ad7879 *ts) 283#ifdef CONFIG_PM_SLEEP
284static int ad7879_suspend(struct device *dev)
284{ 285{
286 struct ad7879 *ts = dev_get_drvdata(dev);
287
285 mutex_lock(&ts->input->mutex); 288 mutex_lock(&ts->input->mutex);
286 289
287 if (!ts->suspended && !ts->disabled && ts->input->users) 290 if (!ts->suspended && !ts->disabled && ts->input->users)
@@ -290,11 +293,14 @@ void ad7879_suspend(struct ad7879 *ts)
290 ts->suspended = true; 293 ts->suspended = true;
291 294
292 mutex_unlock(&ts->input->mutex); 295 mutex_unlock(&ts->input->mutex);
296
297 return 0;
293} 298}
294EXPORT_SYMBOL(ad7879_suspend);
295 299
296void ad7879_resume(struct ad7879 *ts) 300static int ad7879_resume(struct device *dev)
297{ 301{
302 struct ad7879 *ts = dev_get_drvdata(dev);
303
298 mutex_lock(&ts->input->mutex); 304 mutex_lock(&ts->input->mutex);
299 305
300 if (ts->suspended && !ts->disabled && ts->input->users) 306 if (ts->suspended && !ts->disabled && ts->input->users)
@@ -303,8 +309,13 @@ void ad7879_resume(struct ad7879 *ts)
303 ts->suspended = false; 309 ts->suspended = false;
304 310
305 mutex_unlock(&ts->input->mutex); 311 mutex_unlock(&ts->input->mutex);
312
313 return 0;
306} 314}
307EXPORT_SYMBOL(ad7879_resume); 315#endif
316
317SIMPLE_DEV_PM_OPS(ad7879_pm_ops, ad7879_suspend, ad7879_resume);
318EXPORT_SYMBOL(ad7879_pm_ops);
308 319
309static void ad7879_toggle(struct ad7879 *ts, bool disable) 320static void ad7879_toggle(struct ad7879 *ts, bool disable)
310{ 321{
diff --git a/drivers/input/touchscreen/ad7879.h b/drivers/input/touchscreen/ad7879.h
index 6b45a27236c7..6fd13c48d373 100644
--- a/drivers/input/touchscreen/ad7879.h
+++ b/drivers/input/touchscreen/ad7879.h
@@ -21,8 +21,8 @@ struct ad7879_bus_ops {
21 int (*write)(struct device *dev, u8 reg, u16 val); 21 int (*write)(struct device *dev, u8 reg, u16 val);
22}; 22};
23 23
24void ad7879_suspend(struct ad7879 *); 24extern const struct dev_pm_ops ad7879_pm_ops;
25void ad7879_resume(struct ad7879 *); 25
26struct ad7879 *ad7879_probe(struct device *dev, u8 devid, unsigned irq, 26struct ad7879 *ad7879_probe(struct device *dev, u8 devid, unsigned irq,
27 const struct ad7879_bus_ops *bops); 27 const struct ad7879_bus_ops *bops);
28void ad7879_remove(struct ad7879 *); 28void ad7879_remove(struct ad7879 *);