/* revert to the OMAP4 mechanism of DISPC Smart Standby operation */
        bool mstandby_workaround:1;
+
+       bool set_max_preload:1;
 };
 
 #define DISPC_MAX_NR_FIFOS 5
        dispc_write_reg(DISPC_OVL_FIFO_THRESHOLD(plane),
                        FLD_VAL(high, hi_start, hi_end) |
                        FLD_VAL(low, lo_start, lo_end));
+
+       /*
+        * configure the preload to the pipeline's high threhold, if HT it's too
+        * large for the preload field, set the threshold to the maximum value
+        * that can be held by the preload register
+        */
+       if (dss_has_feature(FEAT_PRELOAD) && dispc.feat->set_max_preload &&
+                       plane != OMAP_DSS_WB)
+               dispc_write_reg(DISPC_OVL_PRELOAD(plane), min(high, 0xfffu));
 }
 EXPORT_SYMBOL(dispc_ovl_set_fifo_threshold);
 
        .calc_core_clk          =       calc_core_clk_24xx,
        .num_fifos              =       3,
        .no_framedone_tv        =       true,
+       .set_max_preload        =       false,
 };
 
 static const struct dispc_features omap34xx_rev1_0_dispc_feats __initconst = {
        .calc_core_clk          =       calc_core_clk_34xx,
        .num_fifos              =       3,
        .no_framedone_tv        =       true,
+       .set_max_preload        =       false,
 };
 
 static const struct dispc_features omap34xx_rev3_0_dispc_feats __initconst = {
        .calc_core_clk          =       calc_core_clk_34xx,
        .num_fifos              =       3,
        .no_framedone_tv        =       true,
+       .set_max_preload        =       false,
 };
 
 static const struct dispc_features omap44xx_dispc_feats __initconst = {
        .calc_core_clk          =       calc_core_clk_44xx,
        .num_fifos              =       5,
        .gfx_fifo_workaround    =       true,
+       .set_max_preload        =       true,
 };
 
 static const struct dispc_features omap54xx_dispc_feats __initconst = {
        .num_fifos              =       5,
        .gfx_fifo_workaround    =       true,
        .mstandby_workaround    =       true,
+       .set_max_preload        =       true,
 };
 
 static int __init dispc_init_features(struct platform_device *pdev)