On Tue, Nov 26, 2024 at 04:00:42PM +0800, Hsin-Te Yuan wrote: > On Tue, Nov 26, 2024 at 5:21 AM Nícolas F. R. A. Prado > <nfraprado@xxxxxxxxxxxxx> wrote: > > > > When configured in filtered mode, the LVTS thermal controller will > > monitor the temperature from the sensors and trigger an interrupt once a > > thermal threshold is crossed. > > > > Currently this is true even during suspend and resume. The problem with > > that is that when enabling the internal clock of the LVTS controller in > > lvts_ctrl_set_enable() during resume, the temperature reading can glitch > > and appear much higher than the real one, resulting in a spurious > > interrupt getting generated. > > > This sounds weird to me. On my end, the symptom is that the device > sometimes cannot suspend. > To be more precise, `echo mem > /sys/power/state` returns almost > immediately. I think the irq is more > likely to be triggered during suspension. Hi Hsin-Te, please also check the first paragraph of the cover letter, and patch 2, that should clarify it. But anyway, I can explain it here too: The issue you observed is caused by two things combined: * When returning from resume with filtered mode enabled, the sensor temperature reading can glitch, appearing much higher. (fixed by this patch) * Since the Stage 3 threshold is enabled and configured to take the maximum reading from the sensors, it will be triggered by that glitch and bring the system into a state where it can no longer suspend, it will just resume right away. (fixed by patch 2) So currently, every so often, during resume both these things will happen, and any future suspend will resume right away. That's why this was never observed by me when testing a single suspend/resume. It only breaks on resume, and only affects future suspends, so you need to test multiple suspend/resumes on the same run to observe this issue. And also since both things are needed to cause this issue, if you apply only patch 1 or only patch 2, it will already fix the issue. Hope this clarifies it. Thanks, Nícolas