On Wed, Feb 3, 2016 at 12:46 AM, Tony Lindgren [off-list ref] wrote:
* Alan Stern [off-list ref] [160202 13:46]:
quoted
On Tue, 2 Feb 2016, Tony Lindgren wrote:
quoted
quoted
Also, what is autosuspend_delay set to for your device? And is
runtime_auto set?
It's 100 at that point, see the commented snippet below from
omap_hsmmc_probe():
pm_runtime_enable(host->dev);
pm_runtime_get_sync(host->dev);
pm_runtime_set_autosuspend_delay(host->dev, MMC_AUTOSUSPEND_DELAY);
/* NOTE: pm_runtime_dont_use_autosuspend(host->dev) needed here? */
pm_runtime_use_autosuspend(host->dev);
...
/* gets -EPROBE_DEFER */
err_irq:
...
pm_runtime_put_sync(host->dev);
You could try changing this to pm_runtime_put_sync_suspend(). But
putting pm_runtime_dont_use_autosuspend() before the put_sync seems
like a perfectly reasonable thing to do, especially if you feel you
should reverse all the changes you made at the start.
FWIW, I'd call pm_runtime_dont_use_autosuspend() before put_sync().
After all, the driver doesn't want to use autosuspend going forward,
so stating that explicitly looks like the right thing to do.
Thanks,
Rafael