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

Commit 07209157 authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "drm/msm/sde: reset plane state if not used in first commit"

parents 4ce2beb7 a1665093
Loading
Loading
Loading
Loading
+26 −0
Original line number Diff line number Diff line
@@ -1047,6 +1047,9 @@ static void _sde_kms_release_splash_resource(struct sde_kms *sde_kms,
{
	struct msm_drm_private *priv;
	struct sde_splash_display *splash_display;
	struct drm_plane *plane;
	enum sde_sspp plane_id;
	bool is_virtual;
	int i;

	if (!sde_kms || !crtc)
@@ -1069,6 +1072,29 @@ static void _sde_kms_release_splash_resource(struct sde_kms *sde_kms,
	if (i >= MAX_DSI_DISPLAYS)
		return;

	/*
	 * For planes attached in continuous splash, reset the plane state
	 * only if first commit is not using the plane for display.
	 * Valid fb indicates client is using the plane.
	 */
	for (i = 0; i < splash_display->pipe_cnt; i++) {
		drm_for_each_plane(plane, sde_kms->dev) {
			plane_id = sde_plane_pipe(plane);
			is_virtual = is_sde_plane_virtual(plane);

			if ((plane_id != splash_display->pipes[i].sspp) ||
				(splash_display->pipes[i].is_virtual !=
					 is_virtual) || (plane->state->fb))
				continue;

			plane->crtc = NULL;
			plane->state->crtc = NULL;
			SDE_DEBUG("reset crtc plane:%d rect:%d\n",
					plane_id, is_virtual);
			break;
		}
	}

	_sde_kms_splash_mem_put(sde_kms, splash_display->splash);

	if (splash_display->cont_splash_enabled) {