aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/xen-fbfront.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/xen-fbfront.c')
-rw-r--r--drivers/video/xen-fbfront.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/video/xen-fbfront.c b/drivers/video/xen-fbfront.c
index 619a6f8d65a2..4e10876e62fc 100644
--- a/drivers/video/xen-fbfront.c
+++ b/drivers/video/xen-fbfront.c
@@ -18,6 +18,7 @@
18 * frame buffer. 18 * frame buffer.
19 */ 19 */
20 20
21#include <linux/console.h>
21#include <linux/kernel.h> 22#include <linux/kernel.h>
22#include <linux/errno.h> 23#include <linux/errno.h>
23#include <linux/fb.h> 24#include <linux/fb.h>
@@ -48,6 +49,7 @@ struct xenfb_info {
48 49
49static u32 xenfb_mem_len = XENFB_WIDTH * XENFB_HEIGHT * XENFB_DEPTH / 8; 50static u32 xenfb_mem_len = XENFB_WIDTH * XENFB_HEIGHT * XENFB_DEPTH / 8;
50 51
52static void xenfb_make_preferred_console(void);
51static int xenfb_remove(struct xenbus_device *); 53static int xenfb_remove(struct xenbus_device *);
52static void xenfb_init_shared_page(struct xenfb_info *); 54static void xenfb_init_shared_page(struct xenfb_info *);
53static int xenfb_connect_backend(struct xenbus_device *, struct xenfb_info *); 55static int xenfb_connect_backend(struct xenbus_device *, struct xenfb_info *);
@@ -348,6 +350,7 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
348 if (ret < 0) 350 if (ret < 0)
349 goto error; 351 goto error;
350 352
353 xenfb_make_preferred_console();
351 return 0; 354 return 0;
352 355
353 error_nomem: 356 error_nomem:
@@ -358,6 +361,28 @@ static int __devinit xenfb_probe(struct xenbus_device *dev,
358 return ret; 361 return ret;
359} 362}
360 363
364static __devinit void
365xenfb_make_preferred_console(void)
366{
367 struct console *c;
368
369 if (console_set_on_cmdline)
370 return;
371
372 acquire_console_sem();
373 for (c = console_drivers; c; c = c->next) {
374 if (!strcmp(c->name, "tty") && c->index == 0)
375 break;
376 }
377 release_console_sem();
378 if (c) {
379 unregister_console(c);
380 c->flags |= CON_CONSDEV;
381 c->flags &= ~CON_PRINTBUFFER; /* don't print again */
382 register_console(c);
383 }
384}
385
361static int xenfb_resume(struct xenbus_device *dev) 386static int xenfb_resume(struct xenbus_device *dev)
362{ 387{
363 struct xenfb_info *info = dev->dev.driver_data; 388 struct xenfb_info *info = dev->dev.driver_data;