On Wed, 6 Oct 2021 at 00:43, Dmitry Osipenko <digetx@xxxxxxxxx> wrote: > > 06.10.2021 01:19, Dmitry Osipenko пишет: > ... > > I reproduced the OFF problem by removing the clk prepare/unprepare from > > the suspend/resume of the clk driver and making some extra changes to > > clock tree topology and etc to trigger the problem on Nexus 7. > > > > tegra-pmc 7000e400.pmc: failed to turn off PM domain heg: -13 > > > > It happens from genpd_suspend_noirq() -> tegra_genpd_power_off() -> clk > > -> GENPD -> I2C -> runtime-pm. > > > > -13 is EACCES, it comes from the runtime PM of I2C device. RPM is > > prohibited/disabled during late (NOIRQ) suspend by the drivers core. > > My bad, I double-checked and it's not I2C RPM that is failing now, but > the clock's RPM [1], which is also unavailable during NOIRQ. Yes, that sounds reasonable. You would then need a similar patch for the tegra clock driver as I suggested for tegra I2C driver. That should solve the problem, I think. > > [1] > https://elixir.free-electrons.com/linux/v5.15-rc4/source/drivers/clk/clk.c#L116 > > Previously it was I2C RPM that was failing in a similar way, but code > changed a tad since that time. Alright. In any case, as long as the devices gets suspended in the correct order, I think it should be fine to cook a patch along the lines of what I suggest for the I2C driver as well. It should work, I think. Although, maybe you want to avoid runtime resuming the I2C device, unless it's the device belonging to the PMIC interface, if there is a way to distinguish that for the driver. Kind regards Uffe