Commit f6dc8150 authored by Tomi Valkeinen's avatar Tomi Valkeinen

OMAP: DSS2: Add GLOBAL_ALPHA & PRE_MULT_ALPHA to ovl caps

Add OMAP_DSS_OVL_CAP_GLOBAL_ALPHA and OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA to
overlay capabilities. Use these instead of FEAT_GLOBAL_ALPHA,
FEAT_GLOBAL_ALPHA_VID1 and FEAT_PRE_MULT_ALPHA in code.

Remove FEAT_GLOBAL_ALPHA_VID1 and FEAT_PRE_MULT_ALPHA which are no
longer used. FEAT_GLOBAL_ALPHA is still used to decide if the HW has
global alpha register.
Signed-off-by: default avatarTomi Valkeinen <tomi.valkeinen@ti.com>
Acked-by: default avatarArchit Taneja <archit@ti.com>
parent 67019db8
...@@ -725,11 +725,9 @@ static void _dispc_set_vid_size(enum omap_plane plane, int width, int height) ...@@ -725,11 +725,9 @@ static void _dispc_set_vid_size(enum omap_plane plane, int width, int height)
static void _dispc_set_pre_mult_alpha(enum omap_plane plane, bool enable) static void _dispc_set_pre_mult_alpha(enum omap_plane plane, bool enable)
{ {
if (!dss_has_feature(FEAT_PRE_MULT_ALPHA)) struct omap_overlay *ovl = omap_dss_get_overlay(plane);
return;
if (!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) && if ((ovl->caps & OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA) == 0)
plane == OMAP_DSS_VIDEO1)
return; return;
REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(plane), enable ? 1 : 0, 28, 28); REG_FLD_MOD(DISPC_OVL_ATTRIBUTES(plane), enable ? 1 : 0, 28, 28);
...@@ -739,12 +737,9 @@ static void _dispc_setup_global_alpha(enum omap_plane plane, u8 global_alpha) ...@@ -739,12 +737,9 @@ static void _dispc_setup_global_alpha(enum omap_plane plane, u8 global_alpha)
{ {
static const unsigned shifts[] = { 0, 8, 16, }; static const unsigned shifts[] = { 0, 8, 16, };
int shift; int shift;
struct omap_overlay *ovl = omap_dss_get_overlay(plane);
if (!dss_has_feature(FEAT_GLOBAL_ALPHA)) if ((ovl->caps & OMAP_DSS_OVL_CAP_GLOBAL_ALPHA) == 0)
return;
if (!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
plane == OMAP_DSS_VIDEO1)
return; return;
shift = shifts[plane]; shift = shifts[plane];
......
...@@ -225,35 +225,38 @@ static const enum omap_overlay_caps omap2_dss_overlay_caps[] = { ...@@ -225,35 +225,38 @@ static const enum omap_overlay_caps omap2_dss_overlay_caps[] = {
static const enum omap_overlay_caps omap3430_dss_overlay_caps[] = { static const enum omap_overlay_caps omap3430_dss_overlay_caps[] = {
/* OMAP_DSS_GFX */ /* OMAP_DSS_GFX */
0, OMAP_DSS_OVL_CAP_GLOBAL_ALPHA,
/* OMAP_DSS_VIDEO1 */ /* OMAP_DSS_VIDEO1 */
OMAP_DSS_OVL_CAP_SCALE, OMAP_DSS_OVL_CAP_SCALE,
/* OMAP_DSS_VIDEO2 */ /* OMAP_DSS_VIDEO2 */
OMAP_DSS_OVL_CAP_SCALE, OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA,
}; };
static const enum omap_overlay_caps omap3630_dss_overlay_caps[] = { static const enum omap_overlay_caps omap3630_dss_overlay_caps[] = {
/* OMAP_DSS_GFX */ /* OMAP_DSS_GFX */
0, OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA,
/* OMAP_DSS_VIDEO1 */ /* OMAP_DSS_VIDEO1 */
OMAP_DSS_OVL_CAP_SCALE, OMAP_DSS_OVL_CAP_SCALE,
/* OMAP_DSS_VIDEO2 */ /* OMAP_DSS_VIDEO2 */
OMAP_DSS_OVL_CAP_SCALE, OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA,
}; };
static const enum omap_overlay_caps omap4_dss_overlay_caps[] = { static const enum omap_overlay_caps omap4_dss_overlay_caps[] = {
/* OMAP_DSS_GFX */ /* OMAP_DSS_GFX */
0, OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA,
/* OMAP_DSS_VIDEO1 */ /* OMAP_DSS_VIDEO1 */
OMAP_DSS_OVL_CAP_SCALE, OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA,
/* OMAP_DSS_VIDEO2 */ /* OMAP_DSS_VIDEO2 */
OMAP_DSS_OVL_CAP_SCALE, OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA,
}; };
static const char * const omap2_dss_clk_source_names[] = { static const char * const omap2_dss_clk_source_names[] = {
...@@ -359,7 +362,7 @@ static const struct omap_dss_features omap3630_dss_features = { ...@@ -359,7 +362,7 @@ static const struct omap_dss_features omap3630_dss_features = {
.has_feature = .has_feature =
FEAT_GLOBAL_ALPHA | FEAT_LCDENABLEPOL | FEAT_GLOBAL_ALPHA | FEAT_LCDENABLEPOL |
FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE | FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE |
FEAT_PRE_MULT_ALPHA | FEAT_FUNCGATED | FEAT_FUNCGATED |
FEAT_ROWREPEATENABLE | FEAT_LINEBUFFERSPLIT | FEAT_ROWREPEATENABLE | FEAT_LINEBUFFERSPLIT |
FEAT_RESIZECONF | FEAT_DSI_PLL_PWR_BUG | FEAT_RESIZECONF | FEAT_DSI_PLL_PWR_BUG |
FEAT_DSI_PLL_FREQSEL | FEAT_CPR | FEAT_PRELOAD | FEAT_DSI_PLL_FREQSEL | FEAT_CPR | FEAT_PRELOAD |
...@@ -383,8 +386,8 @@ static const struct omap_dss_features omap4430_es1_0_dss_features = { ...@@ -383,8 +386,8 @@ static const struct omap_dss_features omap4430_es1_0_dss_features = {
.num_reg_fields = ARRAY_SIZE(omap4_dss_reg_fields), .num_reg_fields = ARRAY_SIZE(omap4_dss_reg_fields),
.has_feature = .has_feature =
FEAT_GLOBAL_ALPHA | FEAT_PRE_MULT_ALPHA | FEAT_GLOBAL_ALPHA |
FEAT_MGR_LCD2 | FEAT_GLOBAL_ALPHA_VID1 | FEAT_MGR_LCD2 |
FEAT_CORE_CLK_DIV | FEAT_LCD_CLK_SRC | FEAT_CORE_CLK_DIV | FEAT_LCD_CLK_SRC |
FEAT_DSI_DCS_CMD_CONFIG_VC | FEAT_DSI_VC_OCP_WIDTH | FEAT_DSI_DCS_CMD_CONFIG_VC | FEAT_DSI_VC_OCP_WIDTH |
FEAT_DSI_GNQ | FEAT_HANDLE_UV_SEPARATE | FEAT_ATTR2 | FEAT_DSI_GNQ | FEAT_HANDLE_UV_SEPARATE | FEAT_ATTR2 |
...@@ -407,8 +410,8 @@ static const struct omap_dss_features omap4_dss_features = { ...@@ -407,8 +410,8 @@ static const struct omap_dss_features omap4_dss_features = {
.num_reg_fields = ARRAY_SIZE(omap4_dss_reg_fields), .num_reg_fields = ARRAY_SIZE(omap4_dss_reg_fields),
.has_feature = .has_feature =
FEAT_GLOBAL_ALPHA | FEAT_PRE_MULT_ALPHA | FEAT_GLOBAL_ALPHA |
FEAT_MGR_LCD2 | FEAT_GLOBAL_ALPHA_VID1 | FEAT_MGR_LCD2 |
FEAT_CORE_CLK_DIV | FEAT_LCD_CLK_SRC | FEAT_CORE_CLK_DIV | FEAT_LCD_CLK_SRC |
FEAT_DSI_DCS_CMD_CONFIG_VC | FEAT_DSI_VC_OCP_WIDTH | FEAT_DSI_DCS_CMD_CONFIG_VC | FEAT_DSI_VC_OCP_WIDTH |
FEAT_DSI_GNQ | FEAT_HDMI_CTS_SWMODE | FEAT_DSI_GNQ | FEAT_HDMI_CTS_SWMODE |
......
...@@ -28,8 +28,6 @@ ...@@ -28,8 +28,6 @@
/* DSS has feature id */ /* DSS has feature id */
enum dss_feat_id { enum dss_feat_id {
FEAT_GLOBAL_ALPHA = 1 << 0, FEAT_GLOBAL_ALPHA = 1 << 0,
FEAT_GLOBAL_ALPHA_VID1 = 1 << 1,
FEAT_PRE_MULT_ALPHA = 1 << 2,
FEAT_LCDENABLEPOL = 1 << 3, FEAT_LCDENABLEPOL = 1 << 3,
FEAT_LCDENABLESIGNAL = 1 << 4, FEAT_LCDENABLESIGNAL = 1 << 4,
FEAT_PCKFREEENABLE = 1 << 5, FEAT_PCKFREEENABLE = 1 << 5,
......
...@@ -248,7 +248,7 @@ static ssize_t overlay_global_alpha_store(struct omap_overlay *ovl, ...@@ -248,7 +248,7 @@ static ssize_t overlay_global_alpha_store(struct omap_overlay *ovl,
u8 alpha; u8 alpha;
struct omap_overlay_info info; struct omap_overlay_info info;
if (!dss_has_feature(FEAT_GLOBAL_ALPHA)) if ((ovl->caps & OMAP_DSS_OVL_CAP_GLOBAL_ALPHA) == 0)
return -ENODEV; return -ENODEV;
r = kstrtou8(buf, 0, &alpha); r = kstrtou8(buf, 0, &alpha);
...@@ -257,13 +257,6 @@ static ssize_t overlay_global_alpha_store(struct omap_overlay *ovl, ...@@ -257,13 +257,6 @@ static ssize_t overlay_global_alpha_store(struct omap_overlay *ovl,
ovl->get_overlay_info(ovl, &info); ovl->get_overlay_info(ovl, &info);
/* Video1 plane does not support global alpha
* to always make it 255 completely opaque
*/
if (!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
ovl->id == OMAP_DSS_VIDEO1)
info.global_alpha = 255;
else
info.global_alpha = alpha; info.global_alpha = alpha;
r = ovl->set_overlay_info(ovl, &info); r = ovl->set_overlay_info(ovl, &info);
...@@ -293,19 +286,15 @@ static ssize_t overlay_pre_mult_alpha_store(struct omap_overlay *ovl, ...@@ -293,19 +286,15 @@ static ssize_t overlay_pre_mult_alpha_store(struct omap_overlay *ovl,
u8 alpha; u8 alpha;
struct omap_overlay_info info; struct omap_overlay_info info;
if ((ovl->caps & OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA) == 0)
return -ENODEV;
r = kstrtou8(buf, 0, &alpha); r = kstrtou8(buf, 0, &alpha);
if (r) if (r)
return r; return r;
ovl->get_overlay_info(ovl, &info); ovl->get_overlay_info(ovl, &info);
/* only GFX and Video2 plane support pre alpha multiplied
* set zero for Video1 plane
*/
if (!dss_has_feature(FEAT_GLOBAL_ALPHA_VID1) &&
ovl->id == OMAP_DSS_VIDEO1)
info.pre_mult_alpha = 0;
else
info.pre_mult_alpha = alpha; info.pre_mult_alpha = alpha;
r = ovl->set_overlay_info(ovl, &info); r = ovl->set_overlay_info(ovl, &info);
......
...@@ -162,6 +162,8 @@ enum omap_dss_rotation_angle { ...@@ -162,6 +162,8 @@ enum omap_dss_rotation_angle {
enum omap_overlay_caps { enum omap_overlay_caps {
OMAP_DSS_OVL_CAP_SCALE = 1 << 0, OMAP_DSS_OVL_CAP_SCALE = 1 << 0,
OMAP_DSS_OVL_CAP_GLOBAL_ALPHA = 1 << 1,
OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA = 1 << 2,
}; };
enum omap_overlay_manager_caps { enum omap_overlay_manager_caps {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment