aboutsummaryrefslogtreecommitdiff
path: root/drivers/video/mcde/mcde_fb.c
diff options
context:
space:
mode:
authorPer Persson <per.xb.persson@stericsson.com>2011-04-26 16:14:14 +0200
committerJonas ABERG <jonas.aberg@stericsson.com>2011-04-27 16:28:17 +0200
commit6044b9da5b3702c9f236def93210db4e8894d5eb (patch)
treec2783b9367eb9a1231e50751c429afb53f091ed1 /drivers/video/mcde/mcde_fb.c
parent5473eb520328523576d47c896a0010a781ec280f (diff)
video: mcde_hdmi: Support for HDMI user space service
Add changes needed by HDMI service in user space. HDMI service is a user space service that provide functionality for applications using HDMI. ST-Ericsson ID: 335747 ST-Ericsson Linux next: Not tested, ER 282779 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: I7c2ffd5ae61310f9a152ca984c4f62152fc1e2e0 Signed-off-by: Per Persson <per.xb.persson@stericsson.com> Change-Id: Ie04b52ce91b33961ed36201e1019d92fb696487e Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/20950 Reviewed-by: Marcel TUNNISSEN <marcel.tuennissen@stericsson.com> Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Diffstat (limited to 'drivers/video/mcde/mcde_fb.c')
-rw-r--r--drivers/video/mcde/mcde_fb.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/video/mcde/mcde_fb.c b/drivers/video/mcde/mcde_fb.c
index 8b1cca47339..49924e4fe5d 100644
--- a/drivers/video/mcde/mcde_fb.c
+++ b/drivers/video/mcde/mcde_fb.c
@@ -209,6 +209,7 @@ static int init_var_fmt(struct fb_var_screeninfo *var,
var->yoffset = 0;
var->activate = FB_ACTIVATE_NOW;
var->rotate = rotate;
+
return 0;
};
@@ -692,6 +693,8 @@ struct fb_info *mcde_fb_create(struct mcde_display_device *ddev,
if (ret)
goto fb_register_failed;
+ ddev->fbi = fbi;
+
#ifdef CONFIG_HAS_EARLYSUSPEND
mfb->early_suspend.level =
EARLY_SUSPEND_LEVEL_DISABLE_FB;
@@ -726,9 +729,26 @@ int mcde_fb_attach_overlay(struct fb_info *fb_info, struct mcde_overlay *ovl)
return -EINVAL;
}
-void mcde_fb_destroy(struct fb_info *fb_info)
+void mcde_fb_destroy(struct mcde_display_device *dev)
{
- /* TODO: clean up */
+ struct mcde_fb *mfb;
+ int i;
+
+ dev_vdbg(&dev->dev, "%s\n", __func__);
+
+ mcde_dss_disable_display(dev);
+ mcde_dss_close_channel(dev);
+
+ mfb = to_mcde_fb(dev->fbi);
+ for (i = 0; i < mfb->num_ovlys; i++) {
+ if (mfb->ovlys[i])
+ mcde_dss_destroy_overlay(mfb->ovlys[i]);
+ }
+
+ unregister_framebuffer(dev->fbi);
+ free_fb_mem(dev->fbi);
+ framebuffer_release(dev->fbi);
+ dev->fbi = NULL;
}
/* Overlay fbs' platform device */