Use the newly introduced pm_ptr() macro, and mark the suspend/resume functions __maybe_unused. These functions can then be moved outside the CONFIG_PM_SUSPEND block, and the compiler can then process them and detect build failures independently of the config. If unused, they will simply be discarded by the compiler. Signed-off-by: Paul Cercueil <paul@xxxxxxxxxxxxxxx> --- drivers/usb/gadget/udc/mv_u3d_core.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/usb/gadget/udc/mv_u3d_core.c b/drivers/usb/gadget/udc/mv_u3d_core.c index 5486f5a70868..a7e3736fd0c1 100644 --- a/drivers/usb/gadget/udc/mv_u3d_core.c +++ b/drivers/usb/gadget/udc/mv_u3d_core.c @@ -1988,8 +1988,7 @@ static int mv_u3d_probe(struct platform_device *dev) return retval; } -#ifdef CONFIG_PM_SLEEP -static int mv_u3d_suspend(struct device *dev) +static int __maybe_unused mv_u3d_suspend(struct device *dev) { struct mv_u3d *u3d = dev_get_drvdata(dev); @@ -2012,7 +2011,7 @@ static int mv_u3d_suspend(struct device *dev) return 0; } -static int mv_u3d_resume(struct device *dev) +static int __maybe_unused mv_u3d_resume(struct device *dev) { struct mv_u3d *u3d = dev_get_drvdata(dev); int retval; @@ -2031,7 +2030,6 @@ static int mv_u3d_resume(struct device *dev) return 0; } -#endif static SIMPLE_DEV_PM_OPS(mv_u3d_pm_ops, mv_u3d_suspend, mv_u3d_resume); @@ -2051,7 +2049,7 @@ static struct platform_driver mv_u3d_driver = { .shutdown = mv_u3d_shutdown, .driver = { .name = "mv-u3d", - .pm = &mv_u3d_pm_ops, + .pm = pm_ptr(&mv_u3d_pm_ops), }, }; -- 2.28.0