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

Commit a46a096a authored by Brian Starkey's avatar Brian Starkey Committed by Liviu Dudau
Browse files

drm: mali-dp: Add pitch alignment check for planes



Check that the framebuffer pitches are appropriately aligned when
checking planes.

Signed-off-by: default avatarBrian Starkey <brian.starkey@arm.com>
Signed-off-by: default avatarLiviu Dudau <Liviu.Dudau@arm.com>
parent a228062c
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -86,17 +86,30 @@ static int malidp_de_plane_check(struct drm_plane *plane,
{
	struct malidp_plane *mp = to_malidp_plane(plane);
	struct malidp_plane_state *ms = to_malidp_plane_state(state);
	struct drm_framebuffer *fb;
	int n_planes, i;
	u8 format_id;
	u32 src_w, src_h;

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

	fb = state->fb;

	format_id = malidp_hw_get_format_id(&mp->hwdev->map, mp->layer->id,
					    state->fb->pixel_format);
					    fb->pixel_format);
	if (format_id == MALIDP_INVALID_FORMAT_ID)
		return -EINVAL;

	n_planes = drm_format_num_planes(fb->pixel_format);
	for (i = 0; i < n_planes; i++) {
		if (!malidp_hw_pitch_valid(mp->hwdev, fb->pitches[i])) {
			DRM_DEBUG_KMS("Invalid pitch %u for plane %d\n",
				      fb->pitches[i], i);
			return -EINVAL;
		}
	}

	src_w = state->src_w >> 16;
	src_h = state->src_h >> 16;