Message ID | 000201ce453f$5ce4fc90$16aef5b0$@samsung.com |
---|---|
State | Awaiting Upstream |
Headers | show |
On Tuesday, April 30, 2013 10:09:22 AM Jingoo Han wrote: > Add pm_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 is > not enabled. > > Signed-off-by: Jingoo Han <jg1.han@samsung.com> I've queued this up as v3.11 material. Thanks, Rafael > --- > drivers/i2c/busses/i2c-s3c2410.c | 8 +------- > include/linux/pm.h | 2 ++ > 2 files changed, 3 insertions(+), 7 deletions(-) > > diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c > index 6e8ee92..e7b6639 100644 > --- a/drivers/i2c/busses/i2c-s3c2410.c > +++ b/drivers/i2c/busses/i2c-s3c2410.c > @@ -1218,7 +1218,6 @@ static int s3c24xx_i2c_resume(struct device *dev) > } > #endif > > -#ifdef CONFIG_PM > static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { > #ifdef CONFIG_PM_SLEEP > .suspend_noirq = s3c24xx_i2c_suspend_noirq, > @@ -1226,11 +1225,6 @@ static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { > #endif > }; > > -#define S3C24XX_DEV_PM_OPS (&s3c24xx_i2c_dev_pm_ops) > -#else > -#define S3C24XX_DEV_PM_OPS NULL > -#endif > - > /* device driver for platform bus bits */ > > static struct platform_driver s3c24xx_i2c_driver = { > @@ -1240,7 +1234,7 @@ static struct platform_driver s3c24xx_i2c_driver = { > .driver = { > .owner = THIS_MODULE, > .name = "s3c-i2c", > - .pm = S3C24XX_DEV_PM_OPS, > + .pm = pm_ops_ptr(&s3c24xx_i2c_dev_pm_ops), > .of_match_table = of_match_ptr(s3c24xx_i2c_match), > }, > }; > diff --git a/include/linux/pm.h b/include/linux/pm.h > index a224c7f..bd50d15 100644 > --- a/include/linux/pm.h > +++ b/include/linux/pm.h > @@ -55,8 +55,10 @@ struct device; > > #ifdef CONFIG_PM > extern const char power_group_name[]; /* = "power" */ > +#define pm_ops_ptr(_ptr) (_ptr) > #else > #define power_group_name NULL > +#define pm_ops_ptr(_ptr) NULL > #endif > > typedef struct pm_message { >
Hi! > > Add pm_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 is > > not enabled. > > > > Signed-off-by: Jingoo Han <jg1.han@samsung.com> > > I've queued this up as v3.11 material. > > --- a/drivers/i2c/busses/i2c-s3c2410.c > > +++ b/drivers/i2c/busses/i2c-s3c2410.c > > @@ -1218,7 +1218,6 @@ static int s3c24xx_i2c_resume(struct device *dev) > > } > > #endif > > > > -#ifdef CONFIG_PM > > static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { > > #ifdef CONFIG_PM_SLEEP > > .suspend_noirq = s3c24xx_i2c_suspend_noirq, > > @@ -1226,11 +1225,6 @@ static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { > > #endif > > }; > > > > -#define S3C24XX_DEV_PM_OPS (&s3c24xx_i2c_dev_pm_ops) > > -#else > > -#define S3C24XX_DEV_PM_OPS NULL > > -#endif > > - > > /* device driver for platform bus bits */ Will not this enlarge .data by sizeof(struct dev_pm_ops)? Pavel
On Fri, May 03, 2013 at 11:23:11AM +0200, Pavel Machek wrote: > Hi! > > > > Add pm_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 is > > > not enabled. > > > > > > Signed-off-by: Jingoo Han <jg1.han@samsung.com> > > > > I've queued this up as v3.11 material. > > > > --- a/drivers/i2c/busses/i2c-s3c2410.c > > > +++ b/drivers/i2c/busses/i2c-s3c2410.c > > > @@ -1218,7 +1218,6 @@ static int s3c24xx_i2c_resume(struct device *dev) > > > } > > > #endif > > > > > > -#ifdef CONFIG_PM > > > static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { > > > #ifdef CONFIG_PM_SLEEP > > > .suspend_noirq = s3c24xx_i2c_suspend_noirq, > > > @@ -1226,11 +1225,6 @@ static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { > > > #endif > > > }; > > > > > > -#define S3C24XX_DEV_PM_OPS (&s3c24xx_i2c_dev_pm_ops) > > > -#else > > > -#define S3C24XX_DEV_PM_OPS NULL > > > -#endif > > > - > > > /* device driver for platform bus bits */ > > Will not this enlarge .data by sizeof(struct dev_pm_ops)? Same question here. Is it the preferred way now to use this new macro although having the cost of having an empty dev_pm_ops?
On Thursday, May 30, 2013 12:56:45 PM Wolfram Sang wrote: > On Fri, May 03, 2013 at 11:23:11AM +0200, Pavel Machek wrote: > > Hi! > > > > > > Add pm_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 is > > > > not enabled. > > > > > > > > Signed-off-by: Jingoo Han <jg1.han@samsung.com> > > > > > > I've queued this up as v3.11 material. > > > > > > --- a/drivers/i2c/busses/i2c-s3c2410.c > > > > +++ b/drivers/i2c/busses/i2c-s3c2410.c > > > > @@ -1218,7 +1218,6 @@ static int s3c24xx_i2c_resume(struct device *dev) > > > > } > > > > #endif > > > > > > > > -#ifdef CONFIG_PM > > > > static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { > > > > #ifdef CONFIG_PM_SLEEP > > > > .suspend_noirq = s3c24xx_i2c_suspend_noirq, > > > > @@ -1226,11 +1225,6 @@ static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { > > > > #endif > > > > }; > > > > > > > > -#define S3C24XX_DEV_PM_OPS (&s3c24xx_i2c_dev_pm_ops) > > > > -#else > > > > -#define S3C24XX_DEV_PM_OPS NULL > > > > -#endif > > > > - > > > > /* device driver for platform bus bits */ > > > > Will not this enlarge .data by sizeof(struct dev_pm_ops)? > > Same question here. Is it the preferred way now to use this new macro > although having the cost of having an empty dev_pm_ops? No, it isn't, but if someone wants to use it, I don't really care that much. Thanks, Rafael
diff --git a/drivers/i2c/busses/i2c-s3c2410.c b/drivers/i2c/busses/i2c-s3c2410.c index 6e8ee92..e7b6639 100644 --- a/drivers/i2c/busses/i2c-s3c2410.c +++ b/drivers/i2c/busses/i2c-s3c2410.c @@ -1218,7 +1218,6 @@ static int s3c24xx_i2c_resume(struct device *dev) } #endif -#ifdef CONFIG_PM static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { #ifdef CONFIG_PM_SLEEP .suspend_noirq = s3c24xx_i2c_suspend_noirq, @@ -1226,11 +1225,6 @@ static const struct dev_pm_ops s3c24xx_i2c_dev_pm_ops = { #endif }; -#define S3C24XX_DEV_PM_OPS (&s3c24xx_i2c_dev_pm_ops) -#else -#define S3C24XX_DEV_PM_OPS NULL -#endif - /* device driver for platform bus bits */ static struct platform_driver s3c24xx_i2c_driver = { @@ -1240,7 +1234,7 @@ static struct platform_driver s3c24xx_i2c_driver = { .driver = { .owner = THIS_MODULE, .name = "s3c-i2c", - .pm = S3C24XX_DEV_PM_OPS, + .pm = pm_ops_ptr(&s3c24xx_i2c_dev_pm_ops), .of_match_table = of_match_ptr(s3c24xx_i2c_match), }, }; diff --git a/include/linux/pm.h b/include/linux/pm.h index a224c7f..bd50d15 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h @@ -55,8 +55,10 @@ struct device; #ifdef CONFIG_PM extern const char power_group_name[]; /* = "power" */ +#define pm_ops_ptr(_ptr) (_ptr) #else #define power_group_name NULL +#define pm_ops_ptr(_ptr) NULL #endif typedef struct pm_message {
Add pm_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 is not enabled. Signed-off-by: Jingoo Han <jg1.han@samsung.com> --- drivers/i2c/busses/i2c-s3c2410.c | 8 +------- include/linux/pm.h | 2 ++ 2 files changed, 3 insertions(+), 7 deletions(-)