[alsa-devel] [PATCH] ALSA: aoa-soundbus: Switch to dev_pm_ops

Takashi Iwai tiwai at suse.de
Wed Aug 5 16:48:31 CEST 2015


On Wed, 05 Aug 2015 16:19:31 +0200,
Lars-Peter Clausen wrote:
> 
> Update the aoa-soundbus framework to use dev_pm_ops rather than the
> deprecated legacy suspend and resume callbacks.
> 
> Since there isn't anything special to do at the bus level the bus driver
> does not have to implement any callbacks. The device driver core will
> automatically pick up and execute the device's PM ops.
> 
> As there is only a single aoa-soundbus driver implementing suspend and
> resume, update both the core and driver at the same time to avoid
> unnecessary code churn.
> 
> Signed-off-by: Lars-Peter Clausen <lars at metafoo.de>

Applied, thanks.


Takashi

> ---
>  sound/aoa/fabrics/layout.c    | 21 ++++++++++++---------
>  sound/aoa/soundbus/core.c     | 28 ----------------------------
>  sound/aoa/soundbus/soundbus.h |  2 --
>  3 files changed, 12 insertions(+), 39 deletions(-)
> 
> diff --git a/sound/aoa/fabrics/layout.c b/sound/aoa/fabrics/layout.c
> index 9dc5806..8f71f7e 100644
> --- a/sound/aoa/fabrics/layout.c
> +++ b/sound/aoa/fabrics/layout.c
> @@ -1120,10 +1120,10 @@ static int aoa_fabric_layout_remove(struct soundbus_dev *sdev)
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PM
> -static int aoa_fabric_layout_suspend(struct soundbus_dev *sdev, pm_message_t state)
> +#ifdef CONFIG_PM_SLEEP
> +static int aoa_fabric_layout_suspend(struct device *dev)
>  {
> -	struct layout_dev *ldev = dev_get_drvdata(&sdev->ofdev.dev);
> +	struct layout_dev *ldev = dev_get_drvdata(dev);
>  
>  	if (ldev->gpio.methods && ldev->gpio.methods->all_amps_off)
>  		ldev->gpio.methods->all_amps_off(&ldev->gpio);
> @@ -1131,15 +1131,19 @@ static int aoa_fabric_layout_suspend(struct soundbus_dev *sdev, pm_message_t sta
>  	return 0;
>  }
>  
> -static int aoa_fabric_layout_resume(struct soundbus_dev *sdev)
> +static int aoa_fabric_layout_resume(struct device *dev)
>  {
> -	struct layout_dev *ldev = dev_get_drvdata(&sdev->ofdev.dev);
> +	struct layout_dev *ldev = dev_get_drvdata(dev);
>  
>  	if (ldev->gpio.methods && ldev->gpio.methods->all_amps_restore)
>  		ldev->gpio.methods->all_amps_restore(&ldev->gpio);
>  
>  	return 0;
>  }
> +
> +static SIMPLE_DEV_PM_OPS(aoa_fabric_layout_pm_ops,
> +	aoa_fabric_layout_suspend, aoa_fabric_layout_resume);
> +
>  #endif
>  
>  static struct soundbus_driver aoa_soundbus_driver = {
> @@ -1147,12 +1151,11 @@ static struct soundbus_driver aoa_soundbus_driver = {
>  	.owner = THIS_MODULE,
>  	.probe = aoa_fabric_layout_probe,
>  	.remove = aoa_fabric_layout_remove,
> -#ifdef CONFIG_PM
> -	.suspend = aoa_fabric_layout_suspend,
> -	.resume = aoa_fabric_layout_resume,
> -#endif
>  	.driver = {
>  		.owner = THIS_MODULE,
> +#ifdef CONFIG_PM_SLEEP
> +		.pm = &aoa_fabric_layout_pm_ops,
> +#endif
>  	}
>  };
>  
> diff --git a/sound/aoa/soundbus/core.c b/sound/aoa/soundbus/core.c
> index 3edf736..70bcaa7 100644
> --- a/sound/aoa/soundbus/core.c
> +++ b/sound/aoa/soundbus/core.c
> @@ -126,30 +126,6 @@ static void soundbus_device_shutdown(struct device *dev)
>  		drv->shutdown(soundbus_dev);
>  }
>  
> -#ifdef CONFIG_PM
> -
> -static int soundbus_device_suspend(struct device *dev, pm_message_t state)
> -{
> -	struct soundbus_dev * soundbus_dev = to_soundbus_device(dev);
> -	struct soundbus_driver * drv = to_soundbus_driver(dev->driver);
> -
> -	if (dev->driver && drv->suspend)
> -		return drv->suspend(soundbus_dev, state);
> -	return 0;
> -}
> -
> -static int soundbus_device_resume(struct device * dev)
> -{
> -	struct soundbus_dev * soundbus_dev = to_soundbus_device(dev);
> -	struct soundbus_driver * drv = to_soundbus_driver(dev->driver);
> -
> -	if (dev->driver && drv->resume)
> -		return drv->resume(soundbus_dev);
> -	return 0;
> -}
> -
> -#endif /* CONFIG_PM */
> -
>  /* soundbus_dev_attrs is declared in sysfs.c */
>  ATTRIBUTE_GROUPS(soundbus_dev);
>  static struct bus_type soundbus_bus_type = {
> @@ -158,10 +134,6 @@ static struct bus_type soundbus_bus_type = {
>  	.uevent		= soundbus_uevent,
>  	.remove		= soundbus_device_remove,
>  	.shutdown	= soundbus_device_shutdown,
> -#ifdef CONFIG_PM
> -	.suspend	= soundbus_device_suspend,
> -	.resume		= soundbus_device_resume,
> -#endif
>  	.dev_groups	= soundbus_dev_groups,
>  };
>  
> diff --git a/sound/aoa/soundbus/soundbus.h b/sound/aoa/soundbus/soundbus.h
> index 21e756c..ae40224 100644
> --- a/sound/aoa/soundbus/soundbus.h
> +++ b/sound/aoa/soundbus/soundbus.h
> @@ -188,8 +188,6 @@ struct soundbus_driver {
>  	int	(*probe)(struct soundbus_dev* dev);
>  	int	(*remove)(struct soundbus_dev* dev);
>  
> -	int	(*suspend)(struct soundbus_dev* dev, pm_message_t state);
> -	int	(*resume)(struct soundbus_dev* dev);
>  	int	(*shutdown)(struct soundbus_dev* dev);
>  
>  	struct device_driver driver;
> -- 
> 2.1.4
> 
> 


More information about the Alsa-devel mailing list