Re: [PATCH 4/5] input: gpio-keys: switch to new dev_pm_ops

Daniel Mack
2009-08-05T22:33:52Z

On Wed, Aug 05, 2009 at 10:15:52PM +0200, pHilipp Zabel wrote:
> On Wed, Aug 5, 2009 at 8:29 PM, Daniel Mack<daniel@caiaq.de> wrote:
> > -static int gpio_keys_resume(struct platform_device *pdev)
> > +static int gpio_keys_resume(struct device *dev)
> >  {
> > -       struct gpio_keys_platform_data *pdata = pdev->dev.platform_data;
> > +       struct gpio_keys_platform_data *pdata = dev->platform_data;
> >        int i;
> >
> > -       if (device_may_wakeup(&pdev->dev)) {
> > +       if (device_may_wakeup(dev)) {
> >                for (i = 0; i < pdata->nbuttons; i++) {
> >                        struct gpio_keys_button *button = &pdata->buttons[i];
> >                        if (button->wakeup) {
> > @@ -251,19 +251,27 @@ static int gpio_keys_resume(struct platform_device *pdev)
> >
> >        return 0;
> >  }
> > +
> > +static struct dev_pm_ops gpio_keys_pm_ops = {
> > +       .suspend        = gpio_keys_suspend,
> > +       .freeze         = gpio_keys_suspend,
> > +       .resume         = gpio_keys_resume,
> > +       .thaw           = gpio_keys_resume,
>
> I'm not sure I understand hibernation correctly, but isn't
> .freeze/.thaw about saving state and halting/resuming the device
> operation only?
> It seems to me that enabling system wakeup functionality should go
> into .poweroff. (See <linux/pm.h>)

Frankly, I'm not sure either. But luckily, the linux-pm list is copied
so someone can elborate on this :)

Daniel