Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9dd5942b authored by Fabien Dessenne's avatar Fabien Dessenne Committed by Vincent Abriou
Browse files

drm/sti: run hqvdp init sequence only once



Do not rely on plane->status to define whether this is the first update
but rather check for hqvdp->xp70_initialized bit status.
This avoids multiple and unwanted calls to sti_vtg_register_client()
which breaks the kernel scheduler.

Signed-off-by: default avatarFabien Dessenne <fabien.dessenne@st.com>
Acked-by: default avatarVincent Abriou <vincent.abriou@st.com>
parent 29ffa776
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -771,6 +771,7 @@ static void sti_hqvdp_disable(struct sti_hqvdp *hqvdp)
		DRM_ERROR("XP70 could not revert to idle\n");

	hqvdp->plane.status = STI_PLANE_DISABLED;
	hqvdp->xp70_initialized = false;
}

/**
@@ -1013,7 +1014,6 @@ static int sti_hqvdp_atomic_check(struct drm_plane *drm_plane,
	struct sti_hqvdp *hqvdp = to_sti_hqvdp(plane);
	struct drm_crtc *crtc = state->crtc;
	struct drm_framebuffer *fb = state->fb;
	bool first_prepare = plane->status == STI_PLANE_DISABLED ? true : false;
	struct drm_crtc_state *crtc_state;
	struct drm_display_mode *mode;
	int dst_x, dst_y, dst_w, dst_h;
@@ -1064,7 +1064,7 @@ static int sti_hqvdp_atomic_check(struct drm_plane *drm_plane,
		return -EINVAL;
	}

	if (first_prepare) {
	if (!hqvdp->xp70_initialized) {
		/* Start HQVDP XP70 coprocessor */
		sti_hqvdp_start_xp70(hqvdp);