summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAleksey Kuleshov <rndfax@yandex.ru>2015-11-06 08:52:18 +0300
committerSascha Hauer <s.hauer@pengutronix.de>2015-11-06 07:35:11 +0100
commitf72056d14e9cb309b7127033da07be1bb678a5fc (patch)
tree99080dd0c3b8411f6e92ba2cde0d3d6e2b8484a4 /drivers
parent769ddc6133cd8a6d0bca7356a9f6b7b718f16dbf (diff)
downloadbarebox-f72056d14e9cb309b7127033da07be1bb678a5fc.tar.gz
barebox-f72056d14e9cb309b7127033da07be1bb678a5fc.tar.xz
fb: satisfy semantics for shadowfb's alloc/free
Console enable -> alloc shadowfb. Console disable -> free shadowfb. Otherwise, if resolution gets changed, shadowfb will not be affected. Signed-off-by: Aleksey Kuleshov <rndfax@yandex.ru> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/video/fb.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/video/fb.c b/drivers/video/fb.c
index 3672c44202..bd8bab0496 100644
--- a/drivers/video/fb.c
+++ b/drivers/video/fb.c
@@ -31,6 +31,12 @@ static int fb_ioctl(struct cdev* cdev, int req, void *data)
return 0;
}
+static void fb_release_shadowfb(struct fb_info *info)
+{
+ free(info->screen_base_shadow);
+ info->screen_base_shadow = NULL;
+}
+
static int fb_alloc_shadowfb(struct fb_info *info)
{
if (info->screen_base_shadow && info->shadowfb)
@@ -47,8 +53,7 @@ static int fb_alloc_shadowfb(struct fb_info *info)
memcpy(info->screen_base_shadow, info->screen_base,
info->line_length * info->yres);
} else {
- free(info->screen_base_shadow);
- info->screen_base_shadow = NULL;
+ fb_release_shadowfb(info);
}
return 0;
@@ -79,6 +84,8 @@ int fb_disable(struct fb_info *info)
info->fbops->fb_disable(info);
+ fb_release_shadowfb(info);
+
info->enabled = false;
return 0;