aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/omap2/dss/overlay.c
diff options
context:
space:
mode:
authorMykhailo Denysiuk <x0172934@ti.com>2012-06-24 14:22:47 +0300
committerZiyann <jaraidaniel@gmail.com>2014-11-19 21:11:38 +0100
commite2a102a2b096ee2395f7e08a1dd4a7aae855a731 (patch)
treebff225fa731dfd8c3e17036a7cffaf42ae557781 /drivers/video/omap2/dss/overlay.c
parent07583f9eec39c06f1e82be16baefcda92cbb6cdf (diff)
downloadkernel_samsung_tuna-e2a102a2b096ee2395f7e08a1dd4a7aae855a731.zip
kernel_samsung_tuna-e2a102a2b096ee2395f7e08a1dd4a7aae855a731.tar.gz
kernel_samsung_tuna-e2a102a2b096ee2395f7e08a1dd4a7aae855a731.tar.bz2
OMAPDSS: DSS: Add MEM2MEM manager mode
This change adds memory-to-memory (M2M) mode with using of the manager. The main idea is to connect write back (WB) pipeline to the manager (overlay, in terms of technical reference manual) which is not in use (physical interface is turned-off) for using advantages of hardware manager in M2M mode. In this case several pipelines can be connected to the manager. Change-Id: Ifa649bd5b18f54f3ce583fdee802c799b2c30711 Co-author: Sergiy Kibrik <sergiikibrik@ti.com> Signed-off-by: Mykhailo Denysiuk <x0172934@ti.com>
Diffstat (limited to 'drivers/video/omap2/dss/overlay.c')
-rw-r--r--drivers/video/omap2/dss/overlay.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/video/omap2/dss/overlay.c b/drivers/video/omap2/dss/overlay.c
index da51da6..adcfb1a 100644
--- a/drivers/video/omap2/dss/overlay.c
+++ b/drivers/video/omap2/dss/overlay.c
@@ -537,6 +537,8 @@ static struct kobj_type overlay_ktype = {
int dss_check_overlay(struct omap_overlay *ovl, struct omap_dss_device *dssdev)
{
struct omap_overlay_info *info;
+ struct omap_writeback_info wb_info;
+ struct omap_writeback *wb;
u16 outw, outh;
u16 dw, dh;
@@ -553,7 +555,16 @@ int dss_check_overlay(struct omap_overlay *ovl, struct omap_dss_device *dssdev)
return -EINVAL;
}
- dssdev->driver->get_resolution(dssdev, &dw, &dh);
+ wb = omap_dss_get_wb(0);
+
+ wb->get_wb_info(wb, &wb_info);
+
+ if (wb && wb_info.enabled && wb_info.mode == OMAP_WB_MEM2MEM_MODE &&
+ ovl->manager->id == wb_info.source) {
+ dw = wb_info.width;
+ dh = wb_info.height;
+ } else
+ dssdev->driver->get_resolution(dssdev, &dw, &dh);
DSSDBG("check_overlay %d: (%d,%d %dx%d -> %dx%d) disp (%dx%d)\n",
ovl->id,