aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss/dispc.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/omap2/dss/dispc.c')
-rw-r--r--drivers/video/omap2/dss/dispc.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
index fa7aadfec7b..6892cfd2e3b 100644
--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -739,6 +739,27 @@ static void dispc_ovl_set_vid_size(enum omap_plane plane, int width, int height)
739 dispc_write_reg(DISPC_OVL_SIZE(plane), val); 739 dispc_write_reg(DISPC_OVL_SIZE(plane), val);
740} 740}
741 741
742static void dispc_ovl_set_zorder(enum omap_plane plane, u8 zorder)
743{
744 struct omap_overlay *ovl = omap_dss_get_overlay(plane);
745
746 if ((ovl->caps & OMAP_DSS_OVL_CAP_ZORDER) == 0)
747 return;
748
749 REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(plane), zorder, 27, 26);
750}
751
752static void dispc_ovl_enable_zorder_planes(void)
753{
754 int i;
755
756 if (!dss_has_feature(FEAT_ALPHA_FREE_ZORDER))
757 return;
758
759 for (i = 0; i < dss_feat_get_num_ovls(); i++)
760 REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(i), 1, 25, 25);
761}
762
742static void dispc_ovl_set_pre_mult_alpha(enum omap_plane plane, bool enable) 763static void dispc_ovl_set_pre_mult_alpha(enum omap_plane plane, bool enable)
743{ 764{
744 struct omap_overlay *ovl = omap_dss_get_overlay(plane); 765 struct omap_overlay *ovl = omap_dss_get_overlay(plane);
@@ -1866,6 +1887,7 @@ int dispc_ovl_setup(enum omap_plane plane, struct omap_overlay_info *oi,
1866 dispc_ovl_set_rotation_attrs(plane, oi->rotation, oi->mirror, 1887 dispc_ovl_set_rotation_attrs(plane, oi->rotation, oi->mirror,
1867 oi->color_mode); 1888 oi->color_mode);
1868 1889
1890 dispc_ovl_set_zorder(plane, oi->zorder);
1869 dispc_ovl_set_pre_mult_alpha(plane, oi->pre_mult_alpha); 1891 dispc_ovl_set_pre_mult_alpha(plane, oi->pre_mult_alpha);
1870 dispc_ovl_setup_global_alpha(plane, oi->global_alpha); 1892 dispc_ovl_setup_global_alpha(plane, oi->global_alpha);
1871 1893
@@ -3317,6 +3339,8 @@ static void _omap_dispc_initial_config(void)
3317 dispc_read_plane_fifo_sizes(); 3339 dispc_read_plane_fifo_sizes();
3318 3340
3319 dispc_configure_burst_sizes(); 3341 dispc_configure_burst_sizes();
3342
3343 dispc_ovl_enable_zorder_planes();
3320} 3344}
3321 3345
3322/* DISPC HW IP initialisation */ 3346/* DISPC HW IP initialisation */