On Thu, Oct 25, 2012 at 05:09:16PM +0300, Felipe Balbi wrote: > Hi, > > On Thu, Oct 25, 2012 at 06:31:32PM +0530, Sourav wrote: > > Hi Dmitry, > > > > - pm_runtime_put_sync(dev); > > - > > out: > > pm_runtime_disable(dev); > > return retval; > > @@ -387,8 +385,9 @@ > > return error; > > } > > > > + pm_runtime_put_sync(dev); > > + > > platform_set_drvdata(pdev, keypad_data); > > - pm_runtime_enable(dev); > > > > return 0; > > } > > > > This patch seems to solve the warning and keypad functionality is restored. > > the driver looks wrong to me. Why are calling pm_runtime_put_sync() > after pm_runtime_disable() ??? No, we should not be doing this... OK, so the idea was to do everything via managed resources (devm_*) and not having any gotos :) But I guess we had keypad somewhat alive and it managed to generate an interrupt while parent(s) was sleeping because we did pm_runtime_put_sync()/pm_runtime_disable() after reading register. I wonder if we should have something like: static void omap4_keypad_inhibit() { kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQENABLE, OMAP4_VAL_IRQDISABLE); kbd_write_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS, kbd_read_irqreg(keypad_data, OMAP4_KBD_IRQSTATUS)); } and call it after reading the revision register. Either that or we need devm_pm_runtime_enable(). Thanks. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html