diff options
author | Brian Starkey <brian.starkey@arm.com> | 2016-10-11 17:26:05 +0300 |
---|---|---|
committer | Liviu Dudau <Liviu.Dudau@arm.com> | 2016-11-04 20:08:38 +0300 |
commit | a46a096a40c8533f94e781d376b798c1a5208cfd (patch) | |
tree | 6fcc7d50c9def569a85a103c3a707dc918eeaddc /drivers/gpu/drm/arm/malidp_planes.c | |
parent | a228062cb4e43e0f94bf48107338757d4d5857b9 (diff) | |
download | linux-a46a096a40c8533f94e781d376b798c1a5208cfd.tar.xz |
drm: mali-dp: Add pitch alignment check for planes
Check that the framebuffer pitches are appropriately aligned when
checking planes.
Signed-off-by: Brian Starkey <brian.starkey@arm.com>
Signed-off-by: Liviu Dudau <Liviu.Dudau@arm.com>
Diffstat (limited to 'drivers/gpu/drm/arm/malidp_planes.c')
-rw-r--r-- | drivers/gpu/drm/arm/malidp_planes.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/drm/arm/malidp_planes.c b/drivers/gpu/drm/arm/malidp_planes.c index abaca03b9d36..eaae81908de2 100644 --- a/drivers/gpu/drm/arm/malidp_planes.c +++ b/drivers/gpu/drm/arm/malidp_planes.c @@ -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; |