aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/arm/hdlcd_crtc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/arm/hdlcd_crtc.c')
-rw-r--r--drivers/gpu/drm/arm/hdlcd_crtc.c23
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/gpu/drm/arm/hdlcd_crtc.c b/drivers/gpu/drm/arm/hdlcd_crtc.c
index 8978d82159e5..e4d67b70244d 100644
--- a/drivers/gpu/drm/arm/hdlcd_crtc.c
+++ b/drivers/gpu/drm/arm/hdlcd_crtc.c
@@ -229,6 +229,8 @@ static const struct drm_crtc_helper_funcs hdlcd_crtc_helper_funcs = {
229static int hdlcd_plane_atomic_check(struct drm_plane *plane, 229static int hdlcd_plane_atomic_check(struct drm_plane *plane,
230 struct drm_plane_state *state) 230 struct drm_plane_state *state)
231{ 231{
232 int i;
233 struct drm_crtc *crtc;
232 struct drm_crtc_state *crtc_state; 234 struct drm_crtc_state *crtc_state;
233 u32 src_h = state->src_h >> 16; 235 u32 src_h = state->src_h >> 16;
234 236
@@ -238,20 +240,17 @@ static int hdlcd_plane_atomic_check(struct drm_plane *plane,
238 return -EINVAL; 240 return -EINVAL;
239 } 241 }
240 242
241 if (!state->fb || !state->crtc) 243 for_each_new_crtc_in_state(state->state, crtc, crtc_state, i) {
242 return 0; 244 /* we cannot disable the plane while the CRTC is active */
243 245 if (!state->fb && crtc_state->active)
244 crtc_state = drm_atomic_get_existing_crtc_state(state->state, 246 return -EINVAL;
245 state->crtc); 247 return drm_atomic_helper_check_plane_state(state, crtc_state,
246 if (!crtc_state) { 248 DRM_PLANE_HELPER_NO_SCALING,
247 DRM_DEBUG_KMS("Invalid crtc state\n"); 249 DRM_PLANE_HELPER_NO_SCALING,
248 return -EINVAL; 250 false, true);
249 } 251 }
250 252
251 return drm_atomic_helper_check_plane_state(state, crtc_state, 253 return 0;
252 DRM_PLANE_HELPER_NO_SCALING,
253 DRM_PLANE_HELPER_NO_SCALING,
254 false, true);
255} 254}
256 255
257static void hdlcd_plane_atomic_update(struct drm_plane *plane, 256static void hdlcd_plane_atomic_update(struct drm_plane *plane,