[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