|
@@ -773,13 +773,26 @@ static void _dispc_set_vid_size(enum omap_plane plane, int width, int height)
|
|
|
dispc_write_reg(vsi_reg[plane-1], val);
|
|
|
}
|
|
|
|
|
|
+static void _dispc_set_pre_mult_alpha(enum omap_plane plane, bool enable)
|
|
|
+{
|
|
|
+ if (!dss_has_feature(FEAT_PRE_MULT_ALPHA))
|
|
|
+ return;
|
|
|
+
|
|
|
+ if (!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
|
|
|
+ plane == OMAP_DSS_VIDEO1)
|
|
|
+ return;
|
|
|
+
|
|
|
+ REG_FLD_MOD(dispc_reg_att[plane], enable ? 1 : 0, 28, 28);
|
|
|
+}
|
|
|
+
|
|
|
static void _dispc_setup_global_alpha(enum omap_plane plane, u8 global_alpha)
|
|
|
{
|
|
|
if (!dss_has_feature(FEAT_GLOBAL_ALPHA))
|
|
|
return;
|
|
|
|
|
|
- BUG_ON(!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
|
|
|
- plane == OMAP_DSS_VIDEO1);
|
|
|
+ if (!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
|
|
|
+ plane == OMAP_DSS_VIDEO1)
|
|
|
+ return;
|
|
|
|
|
|
if (plane == OMAP_DSS_GFX)
|
|
|
REG_FLD_MOD(DISPC_GLOBAL_ALPHA, global_alpha, 7, 0);
|
|
@@ -1507,7 +1520,8 @@ static int _dispc_setup_plane(enum omap_plane plane,
|
|
|
bool ilace,
|
|
|
enum omap_dss_rotation_type rotation_type,
|
|
|
u8 rotation, int mirror,
|
|
|
- u8 global_alpha)
|
|
|
+ u8 global_alpha,
|
|
|
+ u8 pre_mult_alpha)
|
|
|
{
|
|
|
const int maxdownscale = cpu_is_omap34xx() ? 4 : 2;
|
|
|
bool five_taps = 0;
|
|
@@ -1693,8 +1707,8 @@ static int _dispc_setup_plane(enum omap_plane plane,
|
|
|
|
|
|
_dispc_set_rotation_attrs(plane, rotation, mirror, color_mode);
|
|
|
|
|
|
- if (plane != OMAP_DSS_VIDEO1)
|
|
|
- _dispc_setup_global_alpha(plane, global_alpha);
|
|
|
+ _dispc_set_pre_mult_alpha(plane, pre_mult_alpha);
|
|
|
+ _dispc_setup_global_alpha(plane, global_alpha);
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -3138,7 +3152,8 @@ int dispc_setup_plane(enum omap_plane plane,
|
|
|
enum omap_color_mode color_mode,
|
|
|
bool ilace,
|
|
|
enum omap_dss_rotation_type rotation_type,
|
|
|
- u8 rotation, bool mirror, u8 global_alpha)
|
|
|
+ u8 rotation, bool mirror, u8 global_alpha,
|
|
|
+ u8 pre_mult_alpha)
|
|
|
{
|
|
|
int r = 0;
|
|
|
|
|
@@ -3160,7 +3175,8 @@ int dispc_setup_plane(enum omap_plane plane,
|
|
|
color_mode, ilace,
|
|
|
rotation_type,
|
|
|
rotation, mirror,
|
|
|
- global_alpha);
|
|
|
+ global_alpha,
|
|
|
+ pre_mult_alpha);
|
|
|
|
|
|
enable_clocks(0);
|
|
|
|