]> git.baikalelectronics.ru Git - kernel.git/commit
drm/imx: add deferred plane disabling
authorPhilipp Zabel <p.zabel@pengutronix.de>
Fri, 24 Feb 2017 17:31:05 +0000 (18:31 +0100)
committerPhilipp Zabel <p.zabel@pengutronix.de>
Wed, 15 Mar 2017 14:42:29 +0000 (15:42 +0100)
commitb21e566efdf745fc6bd53f9bd513e572ac6774f4
tree611b38e501938c45ff62972b62f480838f057213
parent58c2f719ba15db61c008d99c276ac6d82ce1ab4a
drm/imx: add deferred plane disabling

The DP (display processor) channel disable code tried to busy wait for
the DP sync flow end interrupt status bit when disabling the partial
plane without a full modeset. That never worked reliably, and it was
disabled completely by the recent "gpu: ipu-v3: remove IRQ dance on DC
channel disable" patch, causing ipu_wait_interrupt to always time out
after 50 ms, which in turn would trigger a timeout in
drm_atomic_helper_wait_for_vblanks.

This patch changes ipu_plane_atomic_disable to only queue a DP channel
register update at the next frame boundary and set a flag, which can be
done without any waiting whatsoever. The imx_drm_atomic_commit_tail then
calls a new ipu_plane_disable_deferred function that does the actual
IDMAC teardown of the planes that are flagged for deferred disabling,
after waiting for the vblank.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Lucas Stach <l.stach@pengutronix.de>
drivers/gpu/drm/imx/imx-drm-core.c
drivers/gpu/drm/imx/ipuv3-crtc.c
drivers/gpu/drm/imx/ipuv3-plane.c
drivers/gpu/drm/imx/ipuv3-plane.h
drivers/gpu/ipu-v3/ipu-dp.c