]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android-sdk/kernel-video.git/commitdiff
OMAPDSS: DSSCOMP: Enable & Disable function support for overlays
authorSreenidhi Koti Ananda Rao <sreenidhi@ti.com>
Mon, 1 Apr 2013 20:06:13 +0000 (15:06 -0500)
committerPraneeth Bajjuri <praneeth@ti.com>
Fri, 12 Jul 2013 22:41:43 +0000 (17:41 -0500)
Description: This patch adds support for enabling and disabling the
overlays in DSSCOMP. In earlier kernels this was handled by the enabled
flag in info structure. It has been deprecated in K3.4 & now overlay
enable & disable needs to be done manually by the omap_overlay
enable & disable functions.

Change-Id: Ic931e01ed3a384e9f32914a6f07602d4f2d7b6ca
Signed-off-by: Arthur Philpott <arthur.philpott@ti.com>
Signed-off-by: Dandawate Saket <dsaket@ti.com>
Conflicts:
drivers/video/omap2/dsscomp/base.c

drivers/video/omap2/dsscomp/base.c
drivers/video/omap2/dsscomp/queue.c

index 0ed32b3b2efacb7286facd943aef364e5392268c..6e42602d424abcd3bb7a5b0ff535bf47730a9d51 100755 (executable)
@@ -183,7 +183,9 @@ int set_dss_ovl_info(struct dss2_ovl_info *oi)
        struct dss2_ovl_cfg *cfg;
        union rect crop, win, vis;
        int c;
+       int bpp;
        enum tiler_fmt fmt;
+       int r = 0;
 
        /* check overlay number */
        if (!oi || oi->cfg.ix >= omap_dss_get_num_overlays())
@@ -194,8 +196,12 @@ int set_dss_ovl_info(struct dss2_ovl_info *oi)
        /* just in case there are new fields, we get the current info */
        ovl->get_overlay_info(ovl, &info);
 
-       if (!cfg->enabled)
+       if (!cfg->enabled) {
+               r = ovl->disable(ovl);
+               if (r)
+                       pr_warn("Error disabling ovl%d\n", cfg->ix);
                goto done;
+       }
 
        /* copied params */
        info.zorder = cfg->zorder;
index 7eff12dcfeea98de9e0533369efe559d08704f9c..d372cfaec3e6d8e8bd4bd215e46adb8c70a5775c 100755 (executable)
@@ -593,6 +593,19 @@ skip_ovl_set:
                /* keep error if set_mgr_info failed */
                if (!r && !cb_programmed)
                        r = -EINVAL;
+               for (oix = 0; oix < comp->frm.num_ovls; oix++) {
+                       struct dss2_ovl_info *oi = comp->ovls + oix;
+                       ovl = cdev->ovls[oi->cfg.ix];
+                       if (oi->cfg.enabled) {
+                               r = ovl->enable(ovl);
+                               if (r) {
+                                       dev_err(DEV(cdev), "[%p] "
+                                               "enable overlay%d failed\n",
+                                               comp, ovl->id);
+                                       goto err;
+                               }
+                       }
+               }
        }
        mutex_unlock(&mtx);
 
@@ -623,6 +636,9 @@ skip_ovl_set:
                        mgr->wait_for_vsync(mgr);
        }
 
+       return r;
+err:
+       mutex_unlock(&mtx);
 done:
        return r;
 }