ALSA: aoa-soundbus: Switch to dev_pm_ops
authorLars-Peter Clausen <lars@metafoo.de>
Wed, 5 Aug 2015 14:19:31 +0000 (16:19 +0200)
committerTakashi Iwai <tiwai@suse.de>
Wed, 5 Aug 2015 14:47:47 +0000 (16:47 +0200)
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@metafoo.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/aoa/fabrics/layout.c
sound/aoa/soundbus/core.c
sound/aoa/soundbus/soundbus.h

index 9dc5806d23dd51134b90fb0f8c0966a0588ccd6c..8f71f7e4d96604915d837df191eebfa5bd6c2414 100644 (file)
@@ -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
        }
 };
 
index 3edf736319fe4548453376760bc6e3f807502bc4..70bcaa7f93ddc1ee5bfe719446449d29510abee4 100644 (file)
@@ -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,
 };
 
index 21e756cf2824819357c0bf8ee53041f53ed2e95a..ae4022438e6499ad4d94baba818f4f5677e2c03c 100644 (file)
@@ -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;