07.10.2021 12:18, Ulf Hansson пишет:
Please let me iterate once again. The problem we currently have is that clock may be enabled during NOIRQ time. In order to enable clock, it needs to be prepared. In order to prepare clock, the clock's device needs to be runtime-resumed. The runtime PM is unavailable at the NOIRQ time.
To solve this problem we need to prepare clock beforehand.
The clock will stay prepared during suspend, but this is not a problem since all the clocks we care about don't require high voltage and voltage is guaranteed to be bumped high during suspend by Tegra's regulator-coupler driver anyways.
So everything we need to do is to keep clocks prepared. There are two options how to do that:
[1] this patch which explicitly prepares clocks using clk API.
[2] Use runtime PM API, like this:
static const struct dev_pm_ops tegra_clock_pm = { SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_resume_and_get, pm_runtime_put) };
Ulf, are you now okay with the current variant [1] of the patch or you prefer the second [2] option more?
I prefer option [2]. The clock_prepare|unprepare() thingy in option [1], looks more like an odd workaround to me.
Does that make sense to you as well?
I don't have a strong preference since both variants give the same effect. I'll keep testing option [2] and will use it in the next version if no problem will be found. Thank you!