uint32_t max_width, max_height;
        bool out_of_bounds = false;
        uint32_t caps = 0;
-       struct drm_rect clip;
+       struct drm_rect clip = {};
        int min_scale, max_scale;
        int ret;
 
                return -ERANGE;
        }
 
-       clip.x1 = 0;
-       clip.y1 = 0;
-       clip.x2 = crtc_state->adjusted_mode.hdisplay;
-       clip.y2 = crtc_state->adjusted_mode.vdisplay;
        min_scale = FRAC_16_16(1, 8);
        max_scale = FRAC_16_16(8, 1);
 
+       if (crtc_state->enable)
+               drm_mode_get_hv_timing(&crtc_state->mode,
+                                      &clip.x2, &clip.y2);
+
        ret = drm_atomic_helper_check_plane_state(state, crtc_state, &clip,
                                                  min_scale, max_scale,
                                                  true, true);
 {
        struct mdp5_plane_state *mdp5_state = to_mdp5_plane_state(state);
        struct drm_crtc_state *crtc_state;
-       struct drm_rect clip;
+       struct drm_rect clip = {};
        int min_scale, max_scale;
        int ret;
 
            plane->state->fb != state->fb)
                return -EINVAL;
 
-       clip.x1 = 0;
-       clip.y1 = 0;
-       clip.x2 = crtc_state->adjusted_mode.hdisplay;
-       clip.y2 = crtc_state->adjusted_mode.vdisplay;
        min_scale = FRAC_16_16(1, 8);
        max_scale = FRAC_16_16(8, 1);
 
+       if (crtc_state->enable)
+               drm_mode_get_hv_timing(&crtc_state->mode,
+                                      &clip.x2, &clip.y2);
+
        ret = drm_atomic_helper_check_plane_state(state, crtc_state, &clip,
                                                  min_scale, max_scale,
                                                  true, true);