aboutsummaryrefslogtreecommitdiff
path: root/drivers/video
diff options
context:
space:
mode:
authorChris Redpath <chris.redpath@arm.com>2012-07-12 12:33:13 +0100
committerAlex Shi <alex.shi@linaro.org>2014-07-16 09:52:41 +0800
commit30e77716dc7558d550731156c9e872c31db62264 (patch)
tree21e81762b9819917a34c222ea079bcb466d40c8d /drivers/video
parent4450ca21f8f91a648a087031601d3fca9d38e926 (diff)
ARM HDLCD: Add developer option to remove double-height framebuffers
This option can be used with Android to push the graphics subsystem into a different composition strategy which is more effective when used on hardware where the framebuffer memory is not cacheable. Signed-off-by: Chris Redpath <chris.redpath@arm.com> (cherry picked from commit f2f662336fed53bb7a34d422bcd0cdd3a896f837) Signed-off-by: Alex Shi <alex.shi@linaro.org>
Diffstat (limited to 'drivers/video')
-rw-r--r--drivers/video/arm-hdlcd.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/video/arm-hdlcd.c b/drivers/video/arm-hdlcd.c
index f16bb882e0c5..9600c70209b2 100644
--- a/drivers/video/arm-hdlcd.c
+++ b/drivers/video/arm-hdlcd.c
@@ -205,7 +205,11 @@ static int hdlcd_check_var(struct fb_var_screeninfo *var, struct fb_info *info)
struct hdlcd_device *hdlcd = to_hdlcd_device(info);
int bytes_per_pixel = var->bits_per_pixel / 8;
+#ifdef HDLCD_NO_VIRTUAL_SCREEN
+ var->yres_virtual = var->yres;
+#else
var->yres_virtual = 2 * var->yres;
+#endif
if ((var->xres_virtual * bytes_per_pixel * var->yres_virtual) > hdlcd->fb.fix.smem_len)
return -ENOMEM;
@@ -570,7 +574,11 @@ static int hdlcd_setup(struct hdlcd_device *hdlcd)
hdlcd->fb.var.yres, hdlcd->fb.var.bits_per_pixel,
hdlcd->fb.mode ? hdlcd->fb.mode->refresh : 60);
hdlcd->fb.var.xres_virtual = hdlcd->fb.var.xres;
+#ifdef HDLCD_NO_VIRTUAL_SCREEN
+ hdlcd->fb.var.yres_virtual = hdlcd->fb.var.yres;
+#else
hdlcd->fb.var.yres_virtual = hdlcd->fb.var.yres * 2;
+#endif
/* initialise and set the palette */
if (fb_alloc_cmap(&hdlcd->fb.cmap, NR_PALETTE, 0)) {