On Fri, May 08, 2020 at 06:00:57PM +0300, Dmitry Osipenko wrote: > 08.05.2020 13:31, Thierry Reding пишет: > ... > >> Is it legal to touch DPAUX registers while DPAUX is in a suspended state? > > > > DPAUX is never runtime suspended and the dependency from the I2C > > controller on DPAUX should ensure that they are suspended and resumed in > > the right order during system sleep. > > 1. Could you please explain why DPAUX is never suspended? Isn't it a > problem? > > It looks a bit odd that driver is doing this [1][2]. RPM is supposed to > be used for the *dynamic* power management. Should we remove RPM usage > from the DPAUX driver? > > [1] > https://elixir.bootlin.com/linux/v5.7-rc4/source/drivers/gpu/drm/tegra/dpaux.c#L524 > [2] > https://elixir.bootlin.com/linux/v5.7-rc4/source/drivers/gpu/drm/tegra/dpaux.c#L591 Looks more like the intention had been to eventually enable dynamic power management but I never got around to it. The runtime PM implementations are what's necessary to runtime suspend the device, so all that should be needed is hook up the pm_runtime_get() and pm_runtime_put() calls correctly. > 2. Could you please explain why I2C driver has to care about restoring > the pinmux state? Why pinctrl driver isn't doing that for I2C and > everything else? We could probably do it either way. I did it this way because the runtime suspend/resume will get called either way, so might as well reuse the same code paths rather than add context save/restore. Thierry