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

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

Merge "drm/msm/sde: add plane check in continuous splash case"

parents 7419ca37 fcff63b1
Loading
Loading
Loading
Loading
+39 −0
Original line number Diff line number Diff line
@@ -3583,6 +3583,43 @@ static int _sde_plane_validate_scaler_v2(struct sde_plane *psde,
	return 0;
}

static int _sde_plane_validate_shared_crtc(struct sde_plane *psde,
				struct drm_plane_state *state)
{
	struct sde_kms *sde_kms;
	struct sde_splash_display *splash_display;
	int i, j;

	sde_kms = _sde_plane_get_kms(&psde->base);

	if (!sde_kms || !state->crtc)
		return 0;

	for (i = 0; i < MAX_DSI_DISPLAYS; i++) {
		splash_display = &sde_kms->splash_data.splash_display[i];

		if (splash_display && splash_display->cont_splash_enabled &&
			splash_display->encoder &&
			state->crtc != splash_display->encoder->crtc) {

			for (j = 0; j < MAX_DATA_PATH_PER_DSIPLAY; j++) {

				if (splash_display->pipes[j].sspp ==
						psde->pipe) {
					SDE_ERROR_PLANE(psde,
					"pipe:%d used in cont-splash on crtc:%d\n",
					psde->pipe,
					splash_display->encoder->crtc->base.id);
					return -EINVAL;
				}
			}
		}
	}

	return 0;

}

static int sde_plane_sspp_atomic_check(struct drm_plane *plane,
		struct drm_plane_state *state)
{
@@ -3722,6 +3759,8 @@ static int sde_plane_sspp_atomic_check(struct drm_plane *plane,
				rstate->out_fb_height,
				src.w, src.h, deci_w, deci_h)) {
		ret = -EINVAL;
	} else if (_sde_plane_validate_shared_crtc(psde, state)) {
		ret = -EINVAL;
	}

	/* check excl rect configs */