fbdev: sm712fb: avoid unused function warnings
Subsystems (2)
PATCH 1/1 fbdev: sm712fb: avoid unused function warnings
The sm712fb framebuffer driver encloses the power-management functions in #ifdef CONFIG_PM, but the smtcfb_pci_suspend/resume functions are only really used when CONFIG_PM_SLEEP is also set, as a frequent gcc warning shows:
fbdev/sm712fb.c:1549:12: warning: 'smtcfb_pci_suspend' defined but not used fbdev/sm712fb.c:1572:12: warning: 'smtcfb_pci_resume' defined but not used
The driver also avoids using the SIMPLE_DEV_PM_OPS macro when CONFIG_PM is unset, which is redundant.
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.
drivers/video/fbdev/sm712fb.c +3 -13
@@ -28,9 +28,7 @@#include <linux/console.h> #include <linux/screen_info.h> -#ifdef CONFIG_PM #include <linux/pm.h> -#endif #include "sm712.h"
@@ -1545,8 +1543,7 @@ static void smtcfb_pci_remove(struct pci_dev *pdev)pci_disable_device (pdev); } -#ifdef CONFIG_PM -static int smtcfb_pci_suspend (struct device *device) +static int __maybe_unused smtcfb_pci_suspend (struct device *device) {struct pci_dev *pdev =to_pci_dev (device);struct smtcfb_info *sfb;
@@ -1569,7 +1566,7 @@ static int smtcfb_pci_suspend(struct device *device)return 0 ; } -static int smtcfb_pci_resume (struct device *device) +static int __maybe_unused smtcfb_pci_resume (struct device *device) {struct pci_dev *pdev =to_pci_dev (device);struct smtcfb_info *sfb;
@@ -1610,20 +1607,13 @@ static int smtcfb_pci_resume(struct device *device) } static SIMPLE_DEV_PM_OPS(sm7xx_pm_ops, smtcfb_pci_suspend, smtcfb_pci_resume); -#define SM7XX_PM_OPS (&sm7xx_pm_ops) - -#else /* !CONFIG_PM */ - -#define SM7XX_PM_OPS NULL - -#endif /* !CONFIG_PM */ static struct pci_driver smtcfb_driver = { .name ="smtcfb" , .id_table = smtcfb_pci_table, .probe = smtcfb_pci_probe, .remove = smtcfb_pci_remove, - .driver.pm =SM7XX_PM_OPS , + .driver.pm = &sm7xx_pm_ops, };static int __init sm712fb_init (void )
Hi Arnd,
Quoted 10 lines · Arnd Bergmann
The sm712fb framebuffer driver encloses the power-management functions in #ifdef
CONFIG_PM, but the smtcfb_pci_suspend/resume functions are only really used whenCONFIG_PM_SLEEPis also set, as a frequent gcc warning shows:
fbdev/sm712fb.c:1549:12: warning: 'smtcfb_pci_suspend' defined but not usedfbdev/sm712fb.c:1572:12: warning: 'smtcfb_pci_resume' defined but not usedThe driver also avoids using the
SIMPLE_DEV_PM_OPSmacro whenCONFIG_PMis unset, which is redundant.
Is it? AFAIK there's no dummy of SIMPLE_DEV_PM_OPS() for the !CONFIG_PM case yet. May be a good idea to have, though.
Quoted 50 lines
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]>drivers/video/fbdev/sm712fb.c +2
-10@@ -28,9 +28,7 @@#include <linux/console.h> #include <linux/screen_info.h> -#ifdef CONFIG_PM #include <linux/pm.h> -#endif #include "sm712.h" @@ -1545,8 +1543,7 @@ static void smtcfb_pci_remove(struct pci_dev *pdev)pci_disable_device (pdev); } -#ifdef CONFIG_PM -static int smtcfb_pci_suspend (struct device *device) +static int __maybe_unused smtcfb_pci_suspend (struct device *device) {struct pci_dev *pdev =to_pci_dev (device);struct smtcfb_info *sfb;@@ -1569,7 +1566,7 @@ static int smtcfb_pci_suspend(struct device *device)return 0 ; } -static int smtcfb_pci_resume (struct device *device) +static int __maybe_unused smtcfb_pci_resume (struct device *device) {struct pci_dev *pdev =to_pci_dev (device);struct smtcfb_info *sfb;@@ -1610,20 +1607,13 @@ static int smtcfb_pci_resume(struct device *device) } static SIMPLE_DEV_PM_OPS(sm7xx_pm_ops, smtcfb_pci_suspend, smtcfb_pci_resume); -#define SM7XX_PM_OPS (&sm7xx_pm_ops) - -#else /* !CONFIG_PM */ - -#define SM7XX_PM_OPS NULL
drivers/video/fbdev/sm712fb.c static int smtcfb_pci_resume(struct device *device) · line 1617
Quoted 10 lines
drivers/video/fbdev/sm712fb.c +1
-3- -#endif /* !CONFIG_PM */ static struct pci_driver smtcfb_driver = { .name ="smtcfb" , .id_table = smtcfb_pci_table, .probe = smtcfb_pci_probe, .remove = smtcfb_pci_remove, - .driver.pm =SM7XX_PM_OPS , + .driver.pm = &sm7xx_pm_ops,
Hence now there will always be a struct dev_pm_ops in the binary, which contains 23 pointers, i.e 92 or 184 bytes.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
Quoted 8 lines · On Sunday 22 November 2015 21:51:54 Geert Uytterhoeven wrote:
Hi Arnd,
Quoted 5 lines · Arnd Bergmann
The sm712fb framebuffer driver encloses the power-management functions in #ifdef
CONFIG_PM, but the smtcfb_pci_suspend/resume functions are only really used whenCONFIG_PM_SLEEPis also set, as a frequent gcc warning shows:
Quoted 8 lines
Quoted 5 lines
fbdev/sm712fb.c:1549:12: warning: 'smtcfb_pci_suspend' defined but not usedfbdev/sm712fb.c:1572:12: warning: 'smtcfb_pci_resume' defined but not usedThe driver also avoids using the
SIMPLE_DEV_PM_OPSmacro whenCONFIG_PMis unset, which is redundant.Is it? AFAIK there's no dummy of
SIMPLE_DEV_PM_OPS()for the !CONFIG_PM case yet. May be a good idea to have, though.
The idea of the macro seems to be that the assignment of the pointers is left out, but the structure is still there. We could fix that, but I'd rather try to fix the macro in a way that creates an unused reference to the functions, so we never need any #ifdef or __maybe_unused annotation. We could also come up with a way to remove the structure from the binary in that case, but I can't think of an obvious solution for that at the moment.
Arnd
Tomi Valkeinen
AppliedQuoted 11 lines · Arnd Bergmann
The sm712fb framebuffer driver encloses the power-management functions in #ifdef
CONFIG_PM, but the smtcfb_pci_suspend/resume functions are only really used whenCONFIG_PM_SLEEPis also set, as a frequent gcc warning shows:
fbdev/sm712fb.c:1549:12: warning: 'smtcfb_pci_suspend' defined but not usedfbdev/sm712fb.c:1572:12: warning: 'smtcfb_pci_resume' defined but not usedThe driver also avoids using the
SIMPLE_DEV_PM_OPSmacro whenCONFIG_PMis unset, which is redundant.
Quoted 6 lines
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]>
Thanks, applied for 4.5.
Tomi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20151207/2a677302/attachment.sig>