All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] fixed sparkling issue on lcd panel when fb_blank mode is  changed.
@ 2010-03-19  4:36 InKi Dae
  2010-03-19 13:11 ` Richard Purdie
  0 siblings, 1 reply; 5+ messages in thread
From: InKi Dae @ 2010-03-19  4:36 UTC (permalink / raw)
  To: Andrew Morton, Richard Purdie, Pavel Machek, Kyungmin Park,
	linux-fbdev-devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 1582 bytes --]

Hello all,

I am sending a e-mail about fb_blank issue.

This issue is a problem that lcd panel is spakled when fb_blank mode is changed
>From FB_BLANK_UNBLANK to FB_BLANK_POWER or FB_BLANK_POWER to FB_BLANK_UNBLANK.

In case of FB_BLANK_UNBLANK, screen = on, vsync = on, hsync = on and
For FB_BLANK_POWERDOWN screen = blanked, vsync = off, hsync = off
So like this when fb_blank mode becomes FB_BLANK_POWERDOWN,
Display controller and lcd panel should become off to reduce power consumption.

Let's see fb_blank function of fbmem.c file.

fb_blank()
{
    if (info->fbops->fb_blank)
            ret = info->fbops->fb_blank(blank, info(
    if (!ret)
            fb_notifier_call_chain(FB_EVENT_BLANK, &event);
}

This problem is because this code calls fb_blank (fb_blank of device
specific framebuffer driver)
Earlier then fb_notifier_call_chain.

For example,
Device specific fb_blank function is registered to generic framebuffer
driver through register_framebuffer function
And fb_notifier_call_chain calls any callback function registered to
lcd class(lcd.c) through fb_notifier_callback function.
So if fb_blank mode is changed to FB_BLANK_POWERDOWN then display
controller would become off(clock disable)
On the other hand, lcd panel would still be on. at this time, some
situation on lcd panel occers like sparkling
Because video clock to be delivered to ldi module of lcd panel is disabled also.

This patch get fb_notifier_call_chain to be called earlier then fb_blank.
Please, review this patch.

signed-off-by : InKi Dae <inki.dae@samsung.com>

Best Regards,
InKi Dae.

[-- Attachment #2: fbmem.patch --]
[-- Type: application/octet-stream, Size: 1089 bytes --]

diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
index a15b44e..9603f66 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
@@ -1007,24 +1007,24 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
 
 int
 fb_blank(struct fb_info *info, int blank)
-{	
- 	int ret = -EINVAL;
+{
+	struct fb_event event;
+	int ret = -EINVAL;
 
- 	if (blank > FB_BLANK_POWERDOWN)
- 		blank = FB_BLANK_POWERDOWN;
+	if (blank > FB_BLANK_POWERDOWN)
+		blank = FB_BLANK_POWERDOWN;
 
-	if (info->fbops->fb_blank)
- 		ret = info->fbops->fb_blank(blank, info);
+	event.info = info;
+	event.data = &blank;
 
- 	if (!ret) {
-		struct fb_event event;
+	ret = fb_notifier_call_chain(FB_EVENT_BLANK, &event);
+	if ((ret & NOTIFY_STOP_MASK) == NOTIFY_STOP_MASK)
+		printk(KERN_ERR "notifier_call failed.\n");
 
-		event.info = info;
-		event.data = &blank;
-		fb_notifier_call_chain(FB_EVENT_BLANK, &event);
-	}
+	if (info->fbops->fb_blank)
+		ret = info->fbops->fb_blank(blank, info);
 
- 	return ret;
+	return ret;
 }
 
 static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2010-03-22  4:51 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-19  4:36 [PATCH] fixed sparkling issue on lcd panel when fb_blank mode is changed InKi Dae
2010-03-19 13:11 ` Richard Purdie
2010-03-22  3:18   ` InKi Dae
2010-03-22  4:48     ` InKi Dae
2010-03-22  4:51       ` InKi Dae

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.