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);