diff --git a/[refs] b/[refs] index ce13e1b7453f..33623e794cd8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: fcc764dca80ead39b7391ff2c67a6b78de16d7a9 +refs/heads/master: f17d04fbbb201c05700359e94e2747c210f99852 diff --git a/trunk/drivers/video/omap2/dss/apply.c b/trunk/drivers/video/omap2/dss/apply.c index dccddd264436..242cb1c983c0 100644 --- a/trunk/drivers/video/omap2/dss/apply.c +++ b/trunk/drivers/video/omap2/dss/apply.c @@ -834,11 +834,35 @@ void dss_mgr_disable(struct omap_overlay_manager *mgr) mutex_unlock(&apply_lock); } +static int dss_mgr_simple_check(struct omap_overlay_manager *mgr, + const struct omap_overlay_manager_info *info) +{ + if (dss_has_feature(FEAT_ALPHA_FIXED_ZORDER)) { + /* + * OMAP3 supports only graphics source transparency color key + * and alpha blending simultaneously. See TRM 15.4.2.4.2.2 + * Alpha Mode. + */ + if (info->partial_alpha_enabled && info->trans_enabled + && info->trans_key_type != OMAP_DSS_COLOR_KEY_GFX_DST) { + DSSERR("check_manager: illegal transparency key\n"); + return -EINVAL; + } + } + + return 0; +} + int dss_mgr_set_info(struct omap_overlay_manager *mgr, struct omap_overlay_manager_info *info) { struct mgr_priv_data *mp = get_mgr_priv(mgr); unsigned long flags; + int r; + + r = dss_mgr_simple_check(mgr, info); + if (r) + return r; spin_lock_irqsave(&data_lock, flags);