[PATCH 1/3] Input: ad7877 - Convert to dev_pm_ops

Subsystems: ad7877 touchscreen driver, input (keyboard, mouse, joystick, touchscreen) drivers, the rest

STALE5675d

6 messages, 2 authors, 2011-01-19 · open the first message on its own page

[PATCH 1/3] Input: ad7877 - Convert to dev_pm_ops

From: Mark Brown <hidden>
Date: 2011-01-19 12:45:45

There is a move to deprecate bus-specific PM operations and move to
using dev_pm_ops instead in order to reduce the amount of boilerplate
code in buses and facilitiate updates to the PM core. Do this move for
the ad7879 SPI driver.

Signed-off-by: Mark Brown <redacted>
---
 drivers/input/touchscreen/ad7877.c |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/drivers/input/touchscreen/ad7877.c b/drivers/input/touchscreen/ad7877.c
index a1952fc..6ee868f 100644
--- a/drivers/input/touchscreen/ad7877.c
+++ b/drivers/input/touchscreen/ad7877.c
@@ -41,6 +41,7 @@
 #include <linux/delay.h>
 #include <linux/input.h>
 #include <linux/interrupt.h>
+#include <linux/pm.h>
 #include <linux/slab.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/ad7877.h>
@@ -827,26 +828,25 @@ static int __devexit ad7877_remove(struct spi_device *spi)
 }
 
 #ifdef CONFIG_PM
-static int ad7877_suspend(struct spi_device *spi, pm_message_t message)
+static int ad7877_suspend(struct device *dev)
 {
-	struct ad7877 *ts = dev_get_drvdata(&spi->dev);
+	struct ad7877 *ts = dev_get_drvdata(dev);
 
 	ad7877_disable(ts);
 
 	return 0;
 }
 
-static int ad7877_resume(struct spi_device *spi)
+static int ad7877_resume(struct device *dev)
 {
-	struct ad7877 *ts = dev_get_drvdata(&spi->dev);
+	struct ad7877 *ts = dev_get_drvdata(dev);
 
 	ad7877_enable(ts);
 
 	return 0;
 }
-#else
-#define ad7877_suspend NULL
-#define ad7877_resume  NULL
+
+static SIMPLE_DEV_PM_OPS(ad7877_pm, ad7877_suspend, ad7877_resume);
 #endif
 
 static struct spi_driver ad7877_driver = {
@@ -854,11 +854,12 @@ static struct spi_driver ad7877_driver = {
 		.name	= "ad7877",
 		.bus	= &spi_bus_type,
 		.owner	= THIS_MODULE,
+#ifdef CONFIG_PM
+		.pm	= &ad7877_pm,
+#endif
 	},
 	.probe		= ad7877_probe,
 	.remove		= __devexit_p(ad7877_remove),
-	.suspend	= ad7877_suspend,
-	.resume		= ad7877_resume,
 };
 
 static int __init ad7877_init(void)
-- 
1.7.2.3

[PATCH 3/3] Input: ads7846 - Convert to dev_pm_ops

From: Mark Brown <hidden>
Date: 2011-01-19 12:45:45

There is a move to deprecate bus-specific PM operations and move to
using dev_pm_ops instead in order to reduce the amount of boilerplate
code in buses and facilitiate updates to the PM core. Do this move for
the ads7846 driver.

Signed-off-by: Mark Brown <redacted>
---
 drivers/input/touchscreen/ads7846.c |   14 ++++++++------
 1 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/input/touchscreen/ads7846.c b/drivers/input/touchscreen/ads7846.c
index 14ea54b..ff13b93 100644
--- a/drivers/input/touchscreen/ads7846.c
+++ b/drivers/input/touchscreen/ads7846.c
@@ -26,6 +26,7 @@
 #include <linux/input.h>
 #include <linux/interrupt.h>
 #include <linux/slab.h>
+#include <linux/pm.h>
 #include <linux/gpio.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/ads7846.h>
@@ -892,9 +893,9 @@ static irqreturn_t ads7846_irq(int irq, void *handle)
 	return IRQ_HANDLED;
 }
 
-static int ads7846_suspend(struct spi_device *spi, pm_message_t message)
+static int ads7846_suspend(struct device *dev)
 {
-	struct ads7846 *ts = dev_get_drvdata(&spi->dev);
+	struct ads7846 *ts = dev_get_drvdata(dev);
 
 	mutex_lock(&ts->lock);
 
@@ -914,9 +915,9 @@ static int ads7846_suspend(struct spi_device *spi, pm_message_t message)
 	return 0;
 }
 
-static int ads7846_resume(struct spi_device *spi)
+static int ads7846_resume(struct device *dev)
 {
-	struct ads7846 *ts = dev_get_drvdata(&spi->dev);
+	struct ads7846 *ts = dev_get_drvdata(dev);
 
 	mutex_lock(&ts->lock);
 
@@ -936,6 +937,8 @@ static int ads7846_resume(struct spi_device *spi)
 	return 0;
 }
 
+static SIMPLE_DEV_PM_OPS(ads7846_pm, ads7846_suspend, ads7846_resume);
+
 static int __devinit ads7846_setup_pendown(struct spi_device *spi, struct ads7846 *ts)
 {
 	struct ads7846_platform_data *pdata = spi->dev.platform_data;
@@ -1402,11 +1405,10 @@ static struct spi_driver ads7846_driver = {
 		.name	= "ads7846",
 		.bus	= &spi_bus_type,
 		.owner	= THIS_MODULE,
+		.pm	= &ads7846_pm,
 	},
 	.probe		= ads7846_probe,
 	.remove		= __devexit_p(ads7846_remove),
-	.suspend	= ads7846_suspend,
-	.resume		= ads7846_resume,
 };
 
 static int __init ads7846_init(void)
-- 
1.7.2.3

[PATCH 2/3] Input: ad7979 - Convert SPI to dev_pm_ops

From: Mark Brown <hidden>
Date: 2011-01-19 12:45:45

There is a move to deprecate bus-specific PM operations and move to
using dev_pm_ops instead in order to reduce the amount of boilerplate
code in buses and facilitiate updates to the PM core. Do this move for
the ad7979 SPI driver.

Signed-off-by: Mark Brown <redacted>
---
 drivers/input/touchscreen/ad7879-spi.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/drivers/input/touchscreen/ad7879-spi.c b/drivers/input/touchscreen/ad7879-spi.c
index 59c6e68..0b135a6 100644
--- a/drivers/input/touchscreen/ad7879-spi.c
+++ b/drivers/input/touchscreen/ad7879-spi.c
@@ -7,6 +7,7 @@
  */
 
 #include <linux/input.h>	/* BUS_SPI */
+#include <linux/pm.h>
 #include <linux/spi/spi.h>
 
 #include "ad7879.h"
@@ -21,8 +22,9 @@
 #define AD7879_READCMD(reg)  (AD7879_CMD(reg) | AD7879_CMD_READ)
 
 #ifdef CONFIG_PM
-static int ad7879_spi_suspend(struct spi_device *spi, pm_message_t message)
+static int ad7879_spi_suspend(struct device *dev)
 {
+	struct spi_device *spi = to_spi_device(dev);
 	struct ad7879 *ts = spi_get_drvdata(spi);
 
 	ad7879_suspend(ts);
@@ -30,17 +32,17 @@ static int ad7879_spi_suspend(struct spi_device *spi, pm_message_t message)
 	return 0;
 }
 
-static int ad7879_spi_resume(struct spi_device *spi)
+static int ad7879_spi_resume(struct device *dev)
 {
+	struct spi_device *spi = to_spi_device(dev);
 	struct ad7879 *ts = spi_get_drvdata(spi);
 
 	ad7879_resume(ts);
 
 	return 0;
 }
-#else
-# define ad7879_spi_suspend NULL
-# define ad7879_spi_resume  NULL
+
+static SIMPLE_DEV_PM_OPS(ad7879_spi_pm, ad7879_spi_suspend, ad7879_spi_resume);
 #endif
 
 /*
@@ -173,11 +175,12 @@ static struct spi_driver ad7879_spi_driver = {
 		.name	= "ad7879",
 		.bus	= &spi_bus_type,
 		.owner	= THIS_MODULE,
+#ifdef CONFIG_PM
+		.pm	= &ad7879_spi_pm,
+#endif
 	},
 	.probe		= ad7879_spi_probe,
 	.remove		= __devexit_p(ad7879_spi_remove),
-	.suspend	= ad7879_spi_suspend,
-	.resume		= ad7879_spi_resume,
 };
 
 static int __init ad7879_spi_init(void)
-- 
1.7.2.3

Re: [PATCH 2/3] Input: ad7979 - Convert SPI to dev_pm_ops

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2011-01-19 17:40:47

Hi Mark,

On Wed, Jan 19, 2011 at 12:45:38PM +0000, Mark Brown wrote:
+
+static SIMPLE_DEV_PM_OPS(ad7879_spi_pm, ad7879_spi_suspend, ad7879_spi_resume);
 #endif
 
I was looking at SIMPLE_DEV_PM_OPS definition and it turns into noop if
CONFIG_PM_SLEEP is not set (for systems with runtime PM only, for
example). This will lead to "unused function" compiler warnings (and I
think I have seen such reports for randconfig compiles off linux-next).

Do you think we coudl augment your patch thusly:
diff --git a/drivers/input/touchscreen/ad7879-spi.c b/drivers/input/touchscreen/ad7879-spi.c
index 0b135a6..ddf732f 100644
--- a/drivers/input/touchscreen/ad7879-spi.c
+++ b/drivers/input/touchscreen/ad7879-spi.c
@@ -21,7 +21,7 @@
 #define AD7879_WRITECMD(reg) (AD7879_CMD(reg))
 #define AD7879_READCMD(reg)  (AD7879_CMD(reg) | AD7879_CMD_READ)
 
-#ifdef CONFIG_PM
+#ifdef CONFIG_PM_SLEEP
 static int ad7879_spi_suspend(struct device *dev)
 {
 	struct spi_device *spi = to_spi_device(dev);
@@ -41,9 +41,9 @@ static int ad7879_spi_resume(struct device *dev)
 
 	return 0;
 }
+#endif
 
 static SIMPLE_DEV_PM_OPS(ad7879_spi_pm, ad7879_spi_suspend, ad7879_spi_resume);
-#endif
 
 /*
  * ad7879_read/write are only used for initial setup and for sysfs controls.
@@ -175,9 +175,7 @@ static struct spi_driver ad7879_spi_driver = {
 		.name	= "ad7879",
 		.bus	= &spi_bus_type,
 		.owner	= THIS_MODULE,
-#ifdef CONFIG_PM
 		.pm	= &ad7879_spi_pm,
-#endif
 	},
 	.probe		= ad7879_spi_probe,
 	.remove		= __devexit_p(ad7879_spi_remove),
Thanks,
Dmitry

-- 
Dmitry

Re: [PATCH 2/3] Input: ad7979 - Convert SPI to dev_pm_ops

From: Mark Brown <hidden>
Date: 2011-01-19 18:39:18

On Wed, Jan 19, 2011 at 09:40:38AM -0800, Dmitry Torokhov wrote:
I was looking at SIMPLE_DEV_PM_OPS definition and it turns into noop if
CONFIG_PM_SLEEP is not set (for systems with runtime PM only, for
example). This will lead to "unused function" compiler warnings (and I
think I have seen such reports for randconfig compiles off linux-next).
Do you think we coudl augment your patch thusly:
Looks sane to me - do you want me to redo the updates?

Re: [PATCH 2/3] Input: ad7979 - Convert SPI to dev_pm_ops

From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Date: 2011-01-19 18:54:03

On Wed, Jan 19, 2011 at 06:39:16PM +0000, Mark Brown wrote:
On Wed, Jan 19, 2011 at 09:40:38AM -0800, Dmitry Torokhov wrote:
quoted
I was looking at SIMPLE_DEV_PM_OPS definition and it turns into noop if
CONFIG_PM_SLEEP is not set (for systems with runtime PM only, for
example). This will lead to "unused function" compiler warnings (and I
think I have seen such reports for randconfig compiles off linux-next).
quoted
Do you think we coudl augment your patch thusly:
Looks sane to me - do you want me to redo the updates?
If it is not too much bother...

-- 
Dmitry
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help