PM: Add pm_sleep_ops_ptr() macro
Subsystems (4)
PATCH 1/1 PM: Add pm_sleep_ops_ptr() macro
Add pm_sleep_ops_ptr() macro that allows the .pm entry in the driver structures to be assigned without having an #define xxx NULL for the case that PM_SLEEP is not enabled.
--- drivers/video/bfin-lq035q1-fb.c | 20 +++++++++++--------- include/linux/pm.h | 6 ++++++ 2 files changed, 17 insertions(+), 9 deletions(-)
drivers/video/bfin-lq035q1-fb.c +11 -9
@@ -170,16 +170,19 @@ static int lq035q1_spidev_remove(struct spi_device *spi)return lq035q1_control (spi,LQ035_SHUT_CTL ,LQ035_SHUT ); } -#ifdef CONFIG_PM -static int lq035q1_spidev_suspend (struct spi_device *spi,pm_message_t state) +#ifdef CONFIG_PM_SLEEP +static int lq035q1_spidev_suspend (struct device *dev) { +struct spi_device *spi =to_spi_device (dev); +return lq035q1_control (spi,LQ035_SHUT_CTL ,LQ035_SHUT ); } -static int lq035q1_spidev_resume (struct spi_device *spi) +static int lq035q1_spidev_resume (struct device *dev) { -int ret; +struct spi_device *spi =to_spi_device (dev);struct spi_control *ctl =spi_get_drvdata (spi); +int ret; ret =lq035q1_control (spi,LQ035_DRIVER_OUTPUT_CTL , ctl->mode);if (ret)
@@ -187,11 +190,11 @@ static int lq035q1_spidev_resume(struct spi_device *spi)return lq035q1_control (spi,LQ035_SHUT_CTL ,LQ035_ON ); } -#else -# define lq035q1_spidev_suspend NULL -# define lq035q1_spidev_resume NULL#endif +static SIMPLE_DEV_PM_OPS(lq035q1_spidev_pm_ops, lq035q1_spidev_suspend, + lq035q1_spidev_resume); +/* Power down all displays on reboot, poweroff or halt */ static void lq035q1_spidev_shutdown (struct spi_device *spi) {
@@ -708,8 +711,7 @@ static int bfin_lq035q1_probe(struct platform_device *pdev) info->spidrv.probe = lq035q1_spidev_probe; info->spidrv.remove = lq035q1_spidev_remove; info->spidrv.shutdown = lq035q1_spidev_shutdown; - info->spidrv.suspend = lq035q1_spidev_suspend; - info->spidrv.resume = lq035q1_spidev_resume; + info->spidrv.driver.pm =pm_sleep_ops_ptr (&lq035q1_spidev_pm_ops); ret =spi_register_driver (&info->spidrv);if (ret <0 ) {
include/linux/pm.h +6 -0
@@ -61,6 +61,12 @@ extern const char power_group_name[]; /* = "power" */#define pm_ops_ptr (_ptr) NULL#endif +#ifdef CONFIG_PM_SLEEP +#define pm_sleep_ops_ptr (_ptr) (_ptr) +#else +#define pm_sleep_ops_ptr (_ptr) NULL +#endif +typedef struct pm_message {int event; }pm_message_t ;
Signature · 1 line
1.7.10.4
Quoted 9 lines · Jingoo Han
Add
pm_sleep_ops_ptr()macro that allows the .pm entry in the driver structures to be assigned without having an #define xxx NULL for the case thatPM_SLEEPis not enabled.Signed-off-by Jingoo Han <[email protected]>Cc Jean-Christophe PLAGNIOL-VILLARD <[email protected]>Cc Lars-Peter Clausen <[email protected]>Cc Tomi Valkeinen <[email protected]>Cc Michael Hennerich <[email protected]>
Do you want me to replace the previous patch with this?
Rafael
Quoted 76 lines
--- drivers/video/bfin-lq035q1-fb.c | 20 +++++++++++--------- include/linux/pm.h | 6 ++++++ 2 files changed, 17 insertions(+), 9 deletions(-)drivers/video/bfin-lq035q1-fb.c +11
-9@@ -170,16 +170,19 @@ static int lq035q1_spidev_remove(struct spi_device *spi)return lq035q1_control (spi,LQ035_SHUT_CTL ,LQ035_SHUT ); } -#ifdef CONFIG_PM -static int lq035q1_spidev_suspend (struct spi_device *spi,pm_message_t state) +#ifdef CONFIG_PM_SLEEP +static int lq035q1_spidev_suspend (struct device *dev) { +struct spi_device *spi =to_spi_device (dev); +return lq035q1_control (spi,LQ035_SHUT_CTL ,LQ035_SHUT ); } -static int lq035q1_spidev_resume (struct spi_device *spi) +static int lq035q1_spidev_resume (struct device *dev) { -int ret; +struct spi_device *spi =to_spi_device (dev);struct spi_control *ctl =spi_get_drvdata (spi); +int ret; ret =lq035q1_control (spi,LQ035_DRIVER_OUTPUT_CTL , ctl->mode);if (ret)@@ -187,11 +190,11 @@ static int lq035q1_spidev_resume(struct spi_device *spi)return lq035q1_control (spi,LQ035_SHUT_CTL ,LQ035_ON ); } -#else -# define lq035q1_spidev_suspend NULL -# define lq035q1_spidev_resume NULL#endif +static SIMPLE_DEV_PM_OPS(lq035q1_spidev_pm_ops, lq035q1_spidev_suspend, + lq035q1_spidev_resume); +/* Power down all displays on reboot, poweroff or halt */ static void lq035q1_spidev_shutdown (struct spi_device *spi) {@@ -708,8 +711,7 @@ static int bfin_lq035q1_probe(struct platform_device *pdev) info->spidrv.probe = lq035q1_spidev_probe; info->spidrv.remove = lq035q1_spidev_remove; info->spidrv.shutdown = lq035q1_spidev_shutdown; - info->spidrv.suspend = lq035q1_spidev_suspend; - info->spidrv.resume = lq035q1_spidev_resume; + info->spidrv.driver.pm =pm_sleep_ops_ptr (&lq035q1_spidev_pm_ops); ret =spi_register_driver (&info->spidrv);if (ret <0 ) {include/linux/pm.h +6
-0@@ -61,6 +61,12 @@ extern const char power_group_name[]; /* = "power" */#define pm_ops_ptr (_ptr) NULL#endif +#ifdef CONFIG_PM_SLEEP +#define pm_sleep_ops_ptr (_ptr) (_ptr) +#else +#define pm_sleep_ops_ptr (_ptr) NULL +#endif +typedef struct pm_message {int event; }pm_message_t ;
Signature · 2 lines
I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.
Quoted 5 lines · Rafael J. Wysocki
Quoted 4 lines · Jingoo Han
Add
pm_sleep_ops_ptr()macro that allows the .pm entry in the driver structures to be assigned without having an #define xxx NULL for the case thatPM_SLEEPis not enabled.
Quoted 7 lines
Quoted 5 lines
Signed-off-by Jingoo Han <[email protected]>Cc Jean-Christophe PLAGNIOL-VILLARD <[email protected]>Cc Lars-Peter Clausen <[email protected]>Cc Tomi Valkeinen <[email protected]>Cc Michael Hennerich <[email protected]>Do you want me to replace the previous patch with this?
Quite frankly, I prefer the previous version, which was more general.
That is, what if someone wants to use that macro for runtime PM too?
Honestly, I think we'll be better off without any of them, so I'm dropping the previous patch too for now.
Thanks,
Rafael
Signature · 2 lines
I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.
Quoted 12 lines · Rafael J. Wysocki
Quoted 11 lines · Rafael J. Wysocki
Quoted 9 lines · Jingoo Han
Add
pm_sleep_ops_ptr()macro that allows the .pm entry in the driver structures to be assigned without having an #define xxx NULL for the case thatPM_SLEEPis not enabled.Signed-off-by Jingoo Han <[email protected]>Cc Jean-Christophe PLAGNIOL-VILLARD <[email protected]>Cc Lars-Peter Clausen <[email protected]>Cc Tomi Valkeinen <[email protected]>Cc Michael Hennerich <[email protected]>
Quoted 8 lines
Quoted 1 line
Do you want me to replace the previous patch with this?
Quite frankly, I prefer the previous version, which was more general.
That is, what if someone wants to use that macro for runtime PM too?
Honestly, I think we'll be better off without any of them, so I'm dropping the previous patch too for now.
OK, I see.
I agree with your opinion.
Also, as I mentioned, I want other's better ideas.
Best regards,
Jingoo Han
Quoted 8 lines
Thanks,
Rafael--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.