diff options
Diffstat (limited to 'drivers/video/console/fbcon.c')
-rw-r--r-- | drivers/video/console/fbcon.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/drivers/video/console/fbcon.c b/drivers/video/console/fbcon.c index b27a91c9880..18d02c6af70 100644 --- a/drivers/video/console/fbcon.c +++ b/drivers/video/console/fbcon.c | |||
@@ -530,6 +530,33 @@ static int search_for_mapped_con(void) | |||
530 | return retval; | 530 | return retval; |
531 | } | 531 | } |
532 | 532 | ||
533 | static int do_fbcon_takeover(int show_logo) | ||
534 | { | ||
535 | int err, i; | ||
536 | |||
537 | if (!num_registered_fb) | ||
538 | return -ENODEV; | ||
539 | |||
540 | if (!show_logo) | ||
541 | logo_shown = FBCON_LOGO_DONTSHOW; | ||
542 | |||
543 | for (i = first_fb_vc; i <= last_fb_vc; i++) | ||
544 | con2fb_map[i] = info_idx; | ||
545 | |||
546 | err = do_take_over_console(&fb_con, first_fb_vc, last_fb_vc, | ||
547 | fbcon_is_default); | ||
548 | |||
549 | if (err) { | ||
550 | for (i = first_fb_vc; i <= last_fb_vc; i++) | ||
551 | con2fb_map[i] = -1; | ||
552 | info_idx = -1; | ||
553 | } else { | ||
554 | fbcon_has_console_bind = 1; | ||
555 | } | ||
556 | |||
557 | return err; | ||
558 | } | ||
559 | |||
533 | static int fbcon_takeover(int show_logo) | 560 | static int fbcon_takeover(int show_logo) |
534 | { | 561 | { |
535 | int err, i; | 562 | int err, i; |
@@ -3122,7 +3149,7 @@ static int fbcon_fb_registered(struct fb_info *info) | |||
3122 | } | 3149 | } |
3123 | 3150 | ||
3124 | if (info_idx != -1) | 3151 | if (info_idx != -1) |
3125 | ret = fbcon_takeover(1); | 3152 | ret = do_fbcon_takeover(1); |
3126 | } else { | 3153 | } else { |
3127 | for (i = first_fb_vc; i <= last_fb_vc; i++) { | 3154 | for (i = first_fb_vc; i <= last_fb_vc; i++) { |
3128 | if (con2fb_map_boot[i] == idx) | 3155 | if (con2fb_map_boot[i] == idx) |