On Thu, Nov 19, 2015 at 2:18 PM, Rafael J. Wysocki <rafael@xxxxxxxxxx> wrote: > Hi, > > On Thu, Nov 19, 2015 at 7:24 PM, Dmitry Torokhov > <dmitry.torokhov@xxxxxxxxx> wrote: >> On Thu, Nov 19, 2015 at 02:26:37PM +0200, Irina Tirdea wrote: >>> Implement suspend/resume for goodix driver. >>> > > [cut] > >>> >>> +static int __maybe_unused goodix_suspend(struct device *dev) >>> +{ >>> + struct i2c_client *client = to_i2c_client(dev); >>> + struct goodix_ts_data *ts = i2c_get_clientdata(client); >>> + int error; >>> + >>> + /* We need gpio pins to suspend/resume */ >>> + if (!ts->gpiod_int || !ts->gpiod_rst) >>> + return 0; >>> + >>> + wait_for_completion(&ts->firmware_loading_complete); >> >> This is not that nice as it may lead to angry splats from the PM core if >> firmware loading takes too long and we start suspending before it >> completes. > > What exactly do you mean? The suspend watchdog or something else? I was thinking about dpm watchdog that will panic the system if suspend takes too long. Hmm, this is debug facility and the default timeout is 60 seconds, so I guess we can ignore my concern. > >> Rafael, if we issue pm_stay_awake() before requesting firmware and >> pm_relax() once it is done, will this prevent the current suspend >> timeouts? > > pm_stay_awake() only works if the checking of wakeup sources is > enabled which generally depends on what user space does. I see. Thanks. -- Dmitry -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html