return wm831x_device_suspend(wm831x);
 }
 
-static void wm831x_i2c_shutdown(struct i2c_client *i2c)
+static int wm831x_i2c_poweroff(struct device *dev)
 {
-       struct wm831x *wm831x = i2c_get_clientdata(i2c);
+       struct wm831x *wm831x = dev_get_drvdata(dev);
 
        wm831x_device_shutdown(wm831x);
+
+       return 0;
 }
 
 static const struct i2c_device_id wm831x_i2c_id[] = {
 
 static const struct dev_pm_ops wm831x_pm_ops = {
        .suspend = wm831x_i2c_suspend,
+       .poweroff = wm831x_i2c_poweroff,
 };
 
 static struct i2c_driver wm831x_i2c_driver = {
        },
        .probe = wm831x_i2c_probe,
        .remove = wm831x_i2c_remove,
-       .shutdown = wm831x_i2c_shutdown,
        .id_table = wm831x_i2c_id,
 };
 
 
        return wm831x_device_suspend(wm831x);
 }
 
-static void wm831x_spi_shutdown(struct spi_device *spi)
+static int wm831x_spi_poweroff(struct device *dev)
 {
-       struct wm831x *wm831x = spi_get_drvdata(spi);
+       struct wm831x *wm831x = dev_get_drvdata(dev);
 
        wm831x_device_shutdown(wm831x);
+
+       return 0;
 }
 
 static const struct dev_pm_ops wm831x_spi_pm = {
        .freeze = wm831x_spi_suspend,
        .suspend = wm831x_spi_suspend,
+       .poweroff = wm831x_spi_poweroff,
 };
 
 static const struct spi_device_id wm831x_spi_ids[] = {
        .id_table       = wm831x_spi_ids,
        .probe          = wm831x_spi_probe,
        .remove         = wm831x_spi_remove,
-       .shutdown       = wm831x_spi_shutdown,
 };
 
 static int __init wm831x_spi_init(void)