diff options
Diffstat (limited to 'drivers/video/console/fbcon.c')
| -rw-r--r-- | drivers/video/console/fbcon.c | 17 | 
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index 64b3d30027b..0b2adefe9e3 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c @@ -2118,7 +2118,7 @@ static void fbcon_bmove_rec(struct vc_data *vc, struct display *p, int sy, int s  		   height, width);  } -static __inline__ void updatescrollmode(struct display *p, +static void updatescrollmode(struct display *p,  					struct fb_info *info,  					struct vc_data *vc)  { @@ -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) @@ -3534,12 +3531,18 @@ static void fbcon_exit(void)  	softback_buf = 0UL;  	for (i = 0; i < FB_MAX; i++) { +		int pending; +  		mapped = 0;  		info = registered_fb[i];  		if (info == NULL)  			continue; +		pending = cancel_work_sync(&info->queue); +		DPRINTK("fbcon: %s pending work\n", (pending ? "canceled" : +			"no")); +  		for (j = first_fb_vc; j <= last_fb_vc; j++) {  			if (con2fb_map[j] == i)  				mapped = 1;  |