diff options
author | Mykhailo Denysiuk <x0172934@ti.com> | 2012-06-24 14:22:47 +0300 |
---|---|---|
committer | Ziyann <jaraidaniel@gmail.com> | 2014-11-19 21:11:38 +0100 |
commit | e2a102a2b096ee2395f7e08a1dd4a7aae855a731 (patch) | |
tree | bff225fa731dfd8c3e17036a7cffaf42ae557781 /drivers/video/omap2/dss/overlay.c | |
parent | 07583f9eec39c06f1e82be16baefcda92cbb6cdf (diff) | |
download | kernel_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.c | 13 |
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, |