The auo_k190x framebuffer driver encloses the power-management
functions in #ifdef CONFIG_PM, but the auok190x_suspend/resume
functions are only really used when CONFIG_PM_SLEEP is also
set, as a frequent gcc warning shows:
drivers/video/fbdev/auo_k190x.c:859:12: warning: 'auok190x_suspend' defined but not used
drivers/video/fbdev/auo_k190x.c:899:12: warning: 'auok190x_resume' defined but not used
This changes the driver to remove the #ifdef and instead mark
the functions as __maybe_unused, which is a nicer anyway, as it
provides build testing for all the code in all configurations
and is harder to get wrong.
Signed-off-by: Arnd Bergmann <[email protected]>
diff --git a/drivers/video/fbdev/auo_k190x.c b/drivers/video/fbdev/auo_k190x.c
index 8d2499d1cafb..9580374667ba 100644
--- a/drivers/video/fbdev/auo_k190x.c
+++ b/drivers/video/fbdev/auo_k190x.c
@@ -773,9 +773,7 @@ static void auok190x_recover(struct auok190xfb_par *par)
/*
* Power-management
*/
-
-#ifdef CONFIG_PM
-static int auok190x_runtime_suspend(struct device *dev)
+static int __maybe_unused auok190x_runtime_suspend(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct fb_info *info = platform_get_drvdata(pdev);
@@ -822,7 +820,7 @@ finish:
return 0;
}
-static int auok190x_runtime_resume(struct device *dev)
+static int __maybe_unused auok190x_runtime_resume(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct fb_info *info = platform_get_drvdata(pdev);
@@ -856,7 +854,7 @@ static int auok190x_runtime_resume(struct device *dev)
return 0;
}
-static int auok190x_suspend(struct device *dev)
+static int __maybe_unused auok190x_suspend(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct fb_info *info = platform_get_drvdata(pdev);
@@ -896,7 +894,7 @@ static int auok190x_suspend(struct device *dev)
return 0;
}
-static int auok190x_resume(struct device *dev)
+static int __maybe_unused auok190x_resume(struct device *dev)
{
struct platform_device *pdev = to_platform_device(dev);
struct fb_info *info = platform_get_drvdata(pdev);
@@ -933,7 +931,6 @@ static int auok190x_resume(struct device *dev)
return 0;
}
-#endif
const struct dev_pm_ops auok190x_pm = {
SET_RUNTIME_PM_OPS(auok190x_runtime_suspend, auok190x_runtime_resume,
On 20/11/15 23:47, Arnd Bergmann wrote:
> The auo_k190x framebuffer driver encloses the power-management
> functions in #ifdef CONFIG_PM, but the auok190x_suspend/resume
> functions are only really used when CONFIG_PM_SLEEP is also
> set, as a frequent gcc warning shows:
>
> drivers/video/fbdev/auo_k190x.c:859:12: warning: 'auok190x_suspend' defined but not used
> drivers/video/fbdev/auo_k190x.c:899:12: warning: 'auok190x_resume' defined but not used
>
> This changes the driver to remove the #ifdef and instead mark
> the functions as __maybe_unused, which is a nicer anyway, as it
> provides build testing for all the code in all configurations
> and is harder to get wrong.
Applied for 4.5.
Btw, do you know if the linker will optimize the __maybe_unused funcs
away if they are not used? I presume so.
Tomi
On Monday 07 December 2015 18:10:04 Tomi Valkeinen wrote:
> On 20/11/15 23:47, Arnd Bergmann wrote:
> > The auo_k190x framebuffer driver encloses the power-management
> > functions in #ifdef CONFIG_PM, but the auok190x_suspend/resume
> > functions are only really used when CONFIG_PM_SLEEP is also
> > set, as a frequent gcc warning shows:
> >
> > drivers/video/fbdev/auo_k190x.c:859:12: warning: 'auok190x_suspend' defined but not used
> > drivers/video/fbdev/auo_k190x.c:899:12: warning: 'auok190x_resume' defined but not used
> >
> > This changes the driver to remove the #ifdef and instead mark
> > the functions as __maybe_unused, which is a nicer anyway, as it
> > provides build testing for all the code in all configurations
> > and is harder to get wrong.
>
> Applied for 4.5.
>
> Btw, do you know if the linker will optimize the __maybe_unused funcs
> away if they are not used? I presume so.
>
The compiler does it correctly when built with -O1 or higher (we don't
support -O0), and the linker is not involved here.
Arnd
On 07/12/15 18:16, Arnd Bergmann wrote:
> On Monday 07 December 2015 18:10:04 Tomi Valkeinen wrote:
>> On 20/11/15 23:47, Arnd Bergmann wrote:
>>> The auo_k190x framebuffer driver encloses the power-management
>>> functions in #ifdef CONFIG_PM, but the auok190x_suspend/resume
>>> functions are only really used when CONFIG_PM_SLEEP is also
>>> set, as a frequent gcc warning shows:
>>>
>>> drivers/video/fbdev/auo_k190x.c:859:12: warning: 'auok190x_suspend' defined but not used
>>> drivers/video/fbdev/auo_k190x.c:899:12: warning: 'auok190x_resume' defined but not used
>>>
>>> This changes the driver to remove the #ifdef and instead mark
>>> the functions as __maybe_unused, which is a nicer anyway, as it
>>> provides build testing for all the code in all configurations
>>> and is harder to get wrong.
>>
>> Applied for 4.5.
>>
>> Btw, do you know if the linker will optimize the __maybe_unused funcs
>> away if they are not used? I presume so.
>>
>
> The compiler does it correctly when built with -O1 or higher (we don't
> support -O0), and the linker is not involved here.
Ah, right, they were static. I was thinking of non-static functions. But
__maybe_unused is not even needed for non-static, so... Never mind =)
Tomi