Commit 1a910c11 authored by Guido Günther's avatar Guido Günther Committed by Lucas Stach
Browse files

drm/etnaviv: Ignore MC when checking runtime suspend idleness



Without that runtime suspend is often blocked due to
etnaviv_gpu_rpm_suspend() returning -EBUSY since the FE seems to trigger
the MC in its idle loop.

Ignoring the MC bit makes the GPU suspend as expected. This was tested
on GC7000.

Signed-off-by: default avatarGuido Günther <agx@sigxcpu.org>
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
parent b1704551
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1835,8 +1835,9 @@ static int etnaviv_gpu_rpm_suspend(struct device *dev)
	if (atomic_read(&gpu->sched.hw_rq_count))
		return -EBUSY;

	/* Check whether the hardware (except FE) is idle */
	mask = gpu->idle_mask & ~VIVS_HI_IDLE_STATE_FE;
	/* Check whether the hardware (except FE and MC) is idle */
	mask = gpu->idle_mask & ~(VIVS_HI_IDLE_STATE_FE |
				  VIVS_HI_IDLE_STATE_MC);
	idle = gpu_read(gpu, VIVS_HI_IDLE_STATE) & mask;
	if (idle != mask)
		return -EBUSY;