aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Chen <b02280@freescale.com>2011-08-30 10:19:58 +0800
committerEric Miao <eric.miao@linaro.org>2011-11-10 10:40:32 +0800
commita2ba7a0a9707dc80325bdc2a2dabf9d0a21fd111 (patch)
tree2eaf6bce44d7d5a345b3dcc3f94a741287c60b66
parente4fbc3c887710e09ce8fc026b273a0c70e92c618 (diff)
fb: add PREMODE_CHANGE event support.
add PREMODE_CHANGE event to handle driver presetting before fb_set_par. Signed-off-by: Jason Chen <b02280@freescale.com>
-rw-r--r--drivers/video/fbmem.c11
-rw-r--r--include/linux/fb.h2
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index ad936295d8f..a65f5b57391 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -991,6 +991,17 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
old_var = info->var;
info->var = *var;
+ /* call pre-mode change */
+ if (flags & FBINFO_MISC_USEREVENT) {
+ struct fb_event event;
+ int evnt = FB_EVENT_PREMODE_CHANGE;
+
+ info->flags &= ~FBINFO_MISC_USEREVENT;
+ event.info = info;
+ event.data = &mode;
+ fb_notifier_call_chain(evnt, &event);
+ }
+
if (info->fbops->fb_set_par) {
ret = info->fbops->fb_set_par(info);
diff --git a/include/linux/fb.h b/include/linux/fb.h
index 1d6836c498d..a67fe1e2b02 100644
--- a/include/linux/fb.h
+++ b/include/linux/fb.h
@@ -549,6 +549,8 @@ struct fb_cursor_user {
#define FB_EVENT_FB_UNBIND 0x0E
/* CONSOLE-SPECIFIC: remap all consoles to new fb - for vga switcheroo */
#define FB_EVENT_REMAP_ALL_CONSOLE 0x0F
+/* PRE MODE CHANGE added by fsl */
+#define FB_EVENT_PREMODE_CHANGE 0x10
struct fb_event {
struct fb_info *info;