const struct omap_video_timings *mgr_timings,
                u16 width, u16 height, u16 out_width, u16 out_height,
                enum omap_color_mode color_mode, bool *five_taps,
-               int *x_predecim, int *y_predecim, u16 pos_x)
+               int *x_predecim, int *y_predecim, u16 pos_x,
+               enum omap_dss_rotation_type rotation_type)
 {
        struct omap_overlay *ovl = omap_dss_get_overlay(plane);
        const int maxdownscale = dss_feat_get_param_max(FEAT_PARAM_DOWNSCALE);
                return -EINVAL;
 
        *x_predecim = max_decim_limit;
-       *y_predecim = max_decim_limit;
+       *y_predecim = (rotation_type == OMAP_DSS_ROT_TILER &&
+                       dss_has_feature(FEAT_BURST_2D)) ? 2 : max_decim_limit;
 
        if (color_mode == OMAP_DSS_COLOR_CLUT1 ||
            color_mode == OMAP_DSS_COLOR_CLUT2 ||
 
        r = dispc_ovl_calc_scaling(plane, channel, mgr_timings, in_width,
                        in_height, out_width, out_height, oi->color_mode,
-                       &five_taps, &x_predecim, &y_predecim, oi->pos_x);
+                       &five_taps, &x_predecim, &y_predecim, oi->pos_x,
+                       oi->rotation_type);
        if (r)
                return r;