aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss/dss_features.c
diff options
context:
space:
mode:
authorArchit Taneja <archit@ti.com>2011-09-26 02:17:29 -0400
committerTomi Valkeinen <tomi.valkeinen@ti.com>2011-10-03 09:51:54 -0400
commit11354dd58da1134ec9c96b65104e5cf2d50e1eb9 (patch)
treea836cd3a6ece346f3cdad52f690ab4bfeba200ca /drivers/video/omap2/dss/dss_features.c
parent28748782b736b1a87bd1224d678e416a8375ea13 (diff)
OMAPDSS/OMAP_VOUT: Fix incorrect OMAP3-alpha compatibility setting
On OMAP3, in order to enable alpha blending for LCD and TV managers, we needed to set LCDALPHABLENDERENABLE/TVALPHABLENDERENABLE bits in DISPC_CONFIG. On OMAP4, alpha blending is always enabled by default, if the above bits are set, we switch to an OMAP3 compatibility mode where the zorder values in the pipeline attribute registers are ignored and a fixed priority is configured. Rename the manager_info member "alpha_enabled" to "partial_alpha_enabled" for more clarity. Introduce two dss_features FEAT_ALPHA_FIXED_ZORDER and FEAT_ALPHA_FREE_ZORDER which represent OMAP3-alpha compatibility mode and OMAP4 alpha mode respectively. Introduce an overlay cap for ZORDER. The DSS2 user is expected to check for the ZORDER cap, if an overlay doesn't have this cap, the user is expected to set the parameter partial_alpha_enabled. If the overlay has ZORDER cap, the DSS2 user can assume that alpha blending is already enabled. Don't support OMAP3 compatibility mode for now. Trying to read/write to alpha_blending_enabled sysfs attribute issues a warning for OMAP4 and does not set the LCDALPHABLENDERENABLE/TVALPHABLENDERENABLE bits. Change alpha_enabled to partial_alpha_enabled in the omap_vout driver. Use overlay cap "OMAP_DSS_OVL_CAP_GLOBAL_ALPHA" to check if overlay supports alpha blending or not. Replace this with checks for VIDEO1 pipeline. Cc: linux-media@vger.kernel.org Cc: Lajos Molnar <molnar@ti.com> Signed-off-by: Archit Taneja <archit@ti.com> Acked-by: Vaibhav Hiremath <hvaibhav@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss/dss_features.c')
-rw-r--r--drivers/video/omap2/dss/dss_features.c22
1 files changed, 11 insertions, 11 deletions
diff --git a/drivers/video/omap2/dss/dss_features.c b/drivers/video/omap2/dss/dss_features.c
index a2fc8e05868..eb08b003ba4 100644
--- a/drivers/video/omap2/dss/dss_features.c
+++ b/drivers/video/omap2/dss/dss_features.c
@@ -248,15 +248,16 @@ static const enum omap_overlay_caps omap3630_dss_overlay_caps[] = {
248 248
249static const enum omap_overlay_caps omap4_dss_overlay_caps[] = { 249static const enum omap_overlay_caps omap4_dss_overlay_caps[] = {
250 /* OMAP_DSS_GFX */ 250 /* OMAP_DSS_GFX */
251 OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA, 251 OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA |
252 OMAP_DSS_OVL_CAP_ZORDER,
252 253
253 /* OMAP_DSS_VIDEO1 */ 254 /* OMAP_DSS_VIDEO1 */
254 OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | 255 OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
255 OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA, 256 OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER,
256 257
257 /* OMAP_DSS_VIDEO2 */ 258 /* OMAP_DSS_VIDEO2 */
258 OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA | 259 OMAP_DSS_OVL_CAP_SCALE | OMAP_DSS_OVL_CAP_GLOBAL_ALPHA |
259 OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA, 260 OMAP_DSS_OVL_CAP_PRE_MULT_ALPHA | OMAP_DSS_OVL_CAP_ZORDER,
260}; 261};
261 262
262static const char * const omap2_dss_clk_source_names[] = { 263static const char * const omap2_dss_clk_source_names[] = {
@@ -342,13 +343,13 @@ static const struct omap_dss_features omap3430_dss_features = {
342 .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields), 343 .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields),
343 344
344 .has_feature = 345 .has_feature =
345 FEAT_GLOBAL_ALPHA | FEAT_LCDENABLEPOL | 346 FEAT_LCDENABLEPOL |
346 FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE | 347 FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE |
347 FEAT_FUNCGATED | FEAT_ROWREPEATENABLE | 348 FEAT_FUNCGATED | FEAT_ROWREPEATENABLE |
348 FEAT_LINEBUFFERSPLIT | FEAT_RESIZECONF | 349 FEAT_LINEBUFFERSPLIT | FEAT_RESIZECONF |
349 FEAT_DSI_PLL_FREQSEL | FEAT_DSI_REVERSE_TXCLKESC | 350 FEAT_DSI_PLL_FREQSEL | FEAT_DSI_REVERSE_TXCLKESC |
350 FEAT_VENC_REQUIRES_TV_DAC_CLK | FEAT_CPR | FEAT_PRELOAD | 351 FEAT_VENC_REQUIRES_TV_DAC_CLK | FEAT_CPR | FEAT_PRELOAD |
351 FEAT_FIR_COEF_V, 352 FEAT_FIR_COEF_V | FEAT_ALPHA_FIXED_ZORDER,
352 353
353 .num_mgrs = 2, 354 .num_mgrs = 2,
354 .num_ovls = 3, 355 .num_ovls = 3,
@@ -366,13 +367,13 @@ static const struct omap_dss_features omap3630_dss_features = {
366 .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields), 367 .num_reg_fields = ARRAY_SIZE(omap3_dss_reg_fields),
367 368
368 .has_feature = 369 .has_feature =
369 FEAT_GLOBAL_ALPHA | FEAT_LCDENABLEPOL | 370 FEAT_LCDENABLEPOL |
370 FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE | 371 FEAT_LCDENABLESIGNAL | FEAT_PCKFREEENABLE |
371 FEAT_FUNCGATED | 372 FEAT_FUNCGATED |
372 FEAT_ROWREPEATENABLE | FEAT_LINEBUFFERSPLIT | 373 FEAT_ROWREPEATENABLE | FEAT_LINEBUFFERSPLIT |
373 FEAT_RESIZECONF | FEAT_DSI_PLL_PWR_BUG | 374 FEAT_RESIZECONF | FEAT_DSI_PLL_PWR_BUG |
374 FEAT_DSI_PLL_FREQSEL | FEAT_CPR | FEAT_PRELOAD | 375 FEAT_DSI_PLL_FREQSEL | FEAT_CPR | FEAT_PRELOAD |
375 FEAT_FIR_COEF_V, 376 FEAT_FIR_COEF_V | FEAT_ALPHA_FIXED_ZORDER,
376 377
377 .num_mgrs = 2, 378 .num_mgrs = 2,
378 .num_ovls = 3, 379 .num_ovls = 3,
@@ -392,12 +393,12 @@ static const struct omap_dss_features omap4430_es1_0_dss_features = {
392 .num_reg_fields = ARRAY_SIZE(omap4_dss_reg_fields), 393 .num_reg_fields = ARRAY_SIZE(omap4_dss_reg_fields),
393 394
394 .has_feature = 395 .has_feature =
395 FEAT_GLOBAL_ALPHA |
396 FEAT_MGR_LCD2 | 396 FEAT_MGR_LCD2 |
397 FEAT_CORE_CLK_DIV | FEAT_LCD_CLK_SRC | 397 FEAT_CORE_CLK_DIV | FEAT_LCD_CLK_SRC |
398 FEAT_DSI_DCS_CMD_CONFIG_VC | FEAT_DSI_VC_OCP_WIDTH | 398 FEAT_DSI_DCS_CMD_CONFIG_VC | FEAT_DSI_VC_OCP_WIDTH |
399 FEAT_DSI_GNQ | FEAT_HANDLE_UV_SEPARATE | FEAT_ATTR2 | 399 FEAT_DSI_GNQ | FEAT_HANDLE_UV_SEPARATE | FEAT_ATTR2 |
400 FEAT_CPR | FEAT_PRELOAD | FEAT_FIR_COEF_V, 400 FEAT_CPR | FEAT_PRELOAD | FEAT_FIR_COEF_V |
401 FEAT_ALPHA_FREE_ZORDER,
401 402
402 .num_mgrs = 3, 403 .num_mgrs = 3,
403 .num_ovls = 3, 404 .num_ovls = 3,
@@ -416,13 +417,12 @@ static const struct omap_dss_features omap4_dss_features = {
416 .num_reg_fields = ARRAY_SIZE(omap4_dss_reg_fields), 417 .num_reg_fields = ARRAY_SIZE(omap4_dss_reg_fields),
417 418
418 .has_feature = 419 .has_feature =
419 FEAT_GLOBAL_ALPHA |
420 FEAT_MGR_LCD2 | 420 FEAT_MGR_LCD2 |
421 FEAT_CORE_CLK_DIV | FEAT_LCD_CLK_SRC | 421 FEAT_CORE_CLK_DIV | FEAT_LCD_CLK_SRC |
422 FEAT_DSI_DCS_CMD_CONFIG_VC | FEAT_DSI_VC_OCP_WIDTH | 422 FEAT_DSI_DCS_CMD_CONFIG_VC | FEAT_DSI_VC_OCP_WIDTH |
423 FEAT_DSI_GNQ | FEAT_HDMI_CTS_SWMODE | 423 FEAT_DSI_GNQ | FEAT_HDMI_CTS_SWMODE |
424 FEAT_HANDLE_UV_SEPARATE | FEAT_ATTR2 | FEAT_CPR | 424 FEAT_HANDLE_UV_SEPARATE | FEAT_ATTR2 | FEAT_CPR |
425 FEAT_PRELOAD | FEAT_FIR_COEF_V, 425 FEAT_PRELOAD | FEAT_FIR_COEF_V | FEAT_ALPHA_FREE_ZORDER,
426 426
427 .num_mgrs = 3, 427 .num_mgrs = 3,
428 .num_ovls = 3, 428 .num_ovls = 3,