On Tue, 2018-08-07 at 21:01 +0200, Stefan Agner wrote:
On 06.08.2018 21:31, Leonard Crestez wrote:
The lcdif block is only powered on when display is active so plane updates when not enabled are not valid. Writing to an unpowered IP block is mostly ignored but can trigger bus errors on some chips.
Prevent this situation by switching to drm_atomic_helper_commit_tail_rpm and having the drm core ensure atomic_plane_update is only called while the crtc is active. This avoids having to keep track of "enabled" bits inside the mxsfb driver.
This also requires handling the vblank event for disable from ~~mxsfb_pipe_update~~ **mxsfb_pipe_disable**.
Hm, I don't think this is a new requirement. Simple KMS Helper Reference clearly states that it should be called from update.
Probably using drm_atomic_helper_commit_tail_rpm just exacerbates an issue which we haven't seen before...
Since I think it is a general fix, I'd rather prefer have it in a separate commit.
I wrote the commit message wrong, what I meant is that it requires handling the vblank event from *disable*.
Switching to atomic_helper_commit_tail_rpm means atomic_update is no longer called when !state->active so nobody dispatches the last vblank event for disabling the crtc. This causes a warning in drm_atomic_helper_commit_hw_done on disable.
Looking through the docs there seems to be a lot of complexity behind vblank events so maybe I'm missing something.