Skip to content

Commit

Permalink
fbdev: fix FB console blanking
Browse files Browse the repository at this point in the history
The commit aef7db4 fixed the problem with
recursive locking in fb blanking code if blank is caused by user setting
the /sys/class/graphics/fb*/blank.  However this broke the fbcon timeout
blanking.

If you use a driver that defines ->fb_blank operation and at the same time
that driver relies on other driver (e.g.  backlight or lcd class) to blank
the screen, when the fbcon times out and tries to blank the fb, it will
call only fb driver blanker and won't notify the other driver.  Thus FB
output is disabled, but the screen isn't blanked.

Restore fbcon blanking and at the same time apply the proper fix for the
above problem: if fbcon_blank is called with FBINFO_FLAG_USEREVENT, we are
already called through notification from fb_blank, thus we don't have to
blank the fb again.

Signed-off-by: Dmitry Baryshkov <[email protected]>
Cc: Geert Uytterhoeven <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
lumag authored and torvalds committed Dec 2, 2008
1 parent 0380155 commit bca404a
Showing 1 changed file with 3 additions and 6 deletions.
9 changes: 3 additions & 6 deletions drivers/video/console/fbcon.c
Original file line number Diff line number Diff line change
Expand Up @@ -2389,16 +2389,13 @@ static int fbcon_blank(struct vc_data *vc, int blank, int mode_switch)

if (!fbcon_is_inactive(vc, info)) {
if (ops->blank_state != blank) {
int ret = 1;

ops->blank_state = blank;
fbcon_cursor(vc, blank ? CM_ERASE : CM_DRAW);
ops->cursor_flash = (!blank);

if (info->fbops->fb_blank)
ret = info->fbops->fb_blank(blank, info);
if (ret)
fbcon_generic_blank(vc, info, blank);
if (!(info->flags & FBINFO_MISC_USEREVENT))
if (fb_blank(info, blank))
fbcon_generic_blank(vc, info, blank);
}

if (!blank)
Expand Down

0 comments on commit bca404a

Please sign in to comment.