diff options
author | Per Persson <per.xb.persson@stericsson.com> | 2011-04-26 16:14:14 +0200 |
---|---|---|
committer | Jonas ABERG <jonas.aberg@stericsson.com> | 2011-04-27 16:28:17 +0200 |
commit | 6044b9da5b3702c9f236def93210db4e8894d5eb (patch) | |
tree | c2783b9367eb9a1231e50751c429afb53f091ed1 /drivers/video/mcde/mcde_fb.c | |
parent | 5473eb520328523576d47c896a0010a781ec280f (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.c | 24 |
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 */ |