diff mbox

[media] smiapp: make PM functions as __maybe_unused

Message ID 20161026203814.1904690-1-arnd@arndb.de (mailing list archive)
State New, archived
Headers show

Commit Message

Arnd Bergmann Oct. 26, 2016, 8:38 p.m. UTC
The rework of the PM support has caused two functions to
be orphaned when CONFIG_PM is disabled:

media/i2c/smiapp/smiapp-core.c:1352:12: error: 'smiapp_power_off' defined but not used [-Werror=unused-function]
media/i2c/smiapp/smiapp-core.c:1206:12: error: 'smiapp_power_on' defined but not used [-Werror=unused-function]

This changes all four PM entry points to __maybe_unused and
removes the #ifdef markers for consistency. This avoids the
warnings even when something changes again.

Fixes: cbba45d43631 ("[media] smiapp: Use runtime PM")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/media/i2c/smiapp/smiapp-core.c | 17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

Comments

Sakari Ailus Oct. 27, 2016, 7:28 a.m. UTC | #1
Hi Arnd,

On Wed, Oct 26, 2016 at 10:38:01PM +0200, Arnd Bergmann wrote:
> The rework of the PM support has caused two functions to
> be orphaned when CONFIG_PM is disabled:
> 
> media/i2c/smiapp/smiapp-core.c:1352:12: error: 'smiapp_power_off' defined but not used [-Werror=unused-function]
> media/i2c/smiapp/smiapp-core.c:1206:12: error: 'smiapp_power_on' defined but not used [-Werror=unused-function]
> 
> This changes all four PM entry points to __maybe_unused and
> removes the #ifdef markers for consistency. This avoids the
> warnings even when something changes again.
> 
> Fixes: cbba45d43631 ("[media] smiapp: Use runtime PM")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

The power-on sequence is in fact mandatory as it involves writing the
initial configuration to the sensor as well.

Instead, I believe the correct fix is to make the driver depend on
CONFIG_PM.
Arnd Bergmann Oct. 27, 2016, 7:43 a.m. UTC | #2
On Thursday, October 27, 2016 10:28:18 AM CEST Sakari Ailus wrote:
> 
> On Wed, Oct 26, 2016 at 10:38:01PM +0200, Arnd Bergmann wrote:
> > The rework of the PM support has caused two functions to
> > be orphaned when CONFIG_PM is disabled:
> > 
> > media/i2c/smiapp/smiapp-core.c:1352:12: error: 'smiapp_power_off' defined but not used [-Werror=unused-function]
> > media/i2c/smiapp/smiapp-core.c:1206:12: error: 'smiapp_power_on' defined but not used [-Werror=unused-function]
> > 
> > This changes all four PM entry points to __maybe_unused and
> > removes the #ifdef markers for consistency. This avoids the
> > warnings even when something changes again.
> > 
> > Fixes: cbba45d43631 ("[media] smiapp: Use runtime PM")
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> 
> The power-on sequence is in fact mandatory as it involves writing the
> initial configuration to the sensor as well.
> 
> Instead, I believe the correct fix is to make the driver depend on
> CONFIG_PM.

(adding linux-pm list)

That would be a rather unusual dependency, though it's possible that
a lot of drivers in fact need it but never listed this explictly in
Kconfig.

What do other drivers do that need to have their runtime_resume
function called at probe time when CONFIG_PM is disabled?

	Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Sakari Ailus Oct. 27, 2016, 8:08 a.m. UTC | #3
Hi Arnd,

On Thu, Oct 27, 2016 at 09:43:16AM +0200, Arnd Bergmann wrote:
> On Thursday, October 27, 2016 10:28:18 AM CEST Sakari Ailus wrote:
> > 
> > On Wed, Oct 26, 2016 at 10:38:01PM +0200, Arnd Bergmann wrote:
> > > The rework of the PM support has caused two functions to
> > > be orphaned when CONFIG_PM is disabled:
> > > 
> > > media/i2c/smiapp/smiapp-core.c:1352:12: error: 'smiapp_power_off' defined but not used [-Werror=unused-function]
> > > media/i2c/smiapp/smiapp-core.c:1206:12: error: 'smiapp_power_on' defined but not used [-Werror=unused-function]
> > > 
> > > This changes all four PM entry points to __maybe_unused and
> > > removes the #ifdef markers for consistency. This avoids the
> > > warnings even when something changes again.
> > > 
> > > Fixes: cbba45d43631 ("[media] smiapp: Use runtime PM")
> > > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > 
> > The power-on sequence is in fact mandatory as it involves writing the
> > initial configuration to the sensor as well.
> > 
> > Instead, I believe the correct fix is to make the driver depend on
> > CONFIG_PM.
> 
> (adding linux-pm list)
> 
> That would be a rather unusual dependency, though it's possible that
> a lot of drivers in fact need it but never listed this explictly in
> Kconfig.
> 
> What do other drivers do that need to have their runtime_resume
> function called at probe time when CONFIG_PM is disabled?

That's certainly possible as well.

V4L2 sub-device core operation s_power() no longer works (as it now uses
runtime PM) but I don't think that's an issue if PM is disabled anyway ---
we should really get rid of that in most drivers.

I can submit a patch.
diff mbox

Patch

diff --git a/drivers/media/i2c/smiapp/smiapp-core.c b/drivers/media/i2c/smiapp/smiapp-core.c
index 59872b31f832..fc0142838834 100644
--- a/drivers/media/i2c/smiapp/smiapp-core.c
+++ b/drivers/media/i2c/smiapp/smiapp-core.c
@@ -1203,7 +1203,7 @@  static int smiapp_setup_flash_strobe(struct smiapp_sensor *sensor)
  * Power management
  */
 
-static int smiapp_power_on(struct device *dev)
+static int __maybe_unused smiapp_power_on(struct device *dev)
 {
 	struct i2c_client *client = to_i2c_client(dev);
 	struct v4l2_subdev *subdev = i2c_get_clientdata(client);
@@ -1349,7 +1349,7 @@  static int smiapp_power_on(struct device *dev)
 	return rval;
 }
 
-static int smiapp_power_off(struct device *dev)
+static int __maybe_unused smiapp_power_off(struct device *dev)
 {
 	struct i2c_client *client = to_i2c_client(dev);
 	struct v4l2_subdev *subdev = i2c_get_clientdata(client);
@@ -2741,9 +2741,7 @@  static const struct v4l2_subdev_internal_ops smiapp_internal_ops = {
  * I2C Driver
  */
 
-#ifdef CONFIG_PM
-
-static int smiapp_suspend(struct device *dev)
+static int __maybe_unused smiapp_suspend(struct device *dev)
 {
 	struct i2c_client *client = to_i2c_client(dev);
 	struct v4l2_subdev *subdev = i2c_get_clientdata(client);
@@ -2768,7 +2766,7 @@  static int smiapp_suspend(struct device *dev)
 	return 0;
 }
 
-static int smiapp_resume(struct device *dev)
+static int __maybe_unused smiapp_resume(struct device *dev)
 {
 	struct i2c_client *client = to_i2c_client(dev);
 	struct v4l2_subdev *subdev = i2c_get_clientdata(client);
@@ -2783,13 +2781,6 @@  static int smiapp_resume(struct device *dev)
 	return rval;
 }
 
-#else
-
-#define smiapp_suspend	NULL
-#define smiapp_resume	NULL
-
-#endif /* CONFIG_PM */
-
 static struct smiapp_hwconfig *smiapp_get_hwconfig(struct device *dev)
 {
 	struct smiapp_hwconfig *hwcfg;