width = ipu_src_rect_width(new_state);
        else
                width = drm_rect_width(&new_state->src) >> 16;
+       height = drm_rect_height(&new_state->src) >> 16;
 
        eba = drm_plane_state_to_eba(new_state, 0);
 
        if (ipu_state->use_pre) {
                axi_id = ipu_chan_assign_axi_id(ipu_plane->dma);
                ipu_prg_channel_configure(ipu_plane->ipu_ch, axi_id, width,
-                                         drm_rect_height(&new_state->src) >> 16,
-                                         fb->pitches[0], fb->format->format,
-                                         fb->modifier, &eba);
+                                         height, fb->pitches[0],
+                                         fb->format->format, fb->modifier,
+                                         &eba);
        }
 
        if (!old_state->fb ||
 
        ipu_dmfc_config_wait4eot(ipu_plane->dmfc, width);
 
-       height = drm_rect_height(&new_state->src) >> 16;
        info = drm_format_info(fb->format->format);
        ipu_calculate_bursts(width, info->cpp[0], fb->pitches[0],
                             &burstsize, &num_bursts);
                ipu_cpmem_set_burstsize(ipu_plane->ipu_ch, 16);
 
                ipu_cpmem_zero(ipu_plane->alpha_ch);
-               ipu_cpmem_set_resolution(ipu_plane->alpha_ch, width,
-                                        drm_rect_height(&new_state->src) >> 16);
+               ipu_cpmem_set_resolution(ipu_plane->alpha_ch, width, height);
                ipu_cpmem_set_format_passthrough(ipu_plane->alpha_ch, 8);
                ipu_cpmem_set_high_priority(ipu_plane->alpha_ch);
                ipu_idmac_set_double_buffer(ipu_plane->alpha_ch, 1);