xref: /linux/drivers/video/console/dummycon.c (revision ca55b2fef3a9373fcfc30f82fd26bc7fccbda732)
1 /*
2  *  linux/drivers/video/dummycon.c -- A dummy console driver
3  *
4  *  To be used if there's no other console driver (e.g. for plain VGA text)
5  *  available, usually until fbcon takes console over.
6  */
7 
8 #include <linux/types.h>
9 #include <linux/kdev_t.h>
10 #include <linux/console.h>
11 #include <linux/vt_kern.h>
12 #include <linux/screen_info.h>
13 #include <linux/init.h>
14 #include <linux/module.h>
15 
16 /*
17  *  Dummy console driver
18  */
19 
20 #if defined(__arm__)
21 #define DUMMY_COLUMNS	screen_info.orig_video_cols
22 #define DUMMY_ROWS	screen_info.orig_video_lines
23 #else
24 /* set by Kconfig. Use 80x25 for 640x480 and 160x64 for 1280x1024 */
25 #define DUMMY_COLUMNS	CONFIG_DUMMY_CONSOLE_COLUMNS
26 #define DUMMY_ROWS	CONFIG_DUMMY_CONSOLE_ROWS
27 #endif
28 
29 static const char *dummycon_startup(void)
30 {
31     return "dummy device";
32 }
33 
34 static void dummycon_init(struct vc_data *vc, int init)
35 {
36     vc->vc_can_do_color = 1;
37     if (init) {
38 	vc->vc_cols = DUMMY_COLUMNS;
39 	vc->vc_rows = DUMMY_ROWS;
40     } else
41 	vc_resize(vc, DUMMY_COLUMNS, DUMMY_ROWS);
42 }
43 
44 static int dummycon_dummy(void)
45 {
46     return 0;
47 }
48 
49 #define DUMMY	(void *)dummycon_dummy
50 
51 /*
52  *  The console `switch' structure for the dummy console
53  *
54  *  Most of the operations are dummies.
55  */
56 
57 const struct consw dummy_con = {
58     .owner =		THIS_MODULE,
59     .con_startup =	dummycon_startup,
60     .con_init =		dummycon_init,
61     .con_deinit =	DUMMY,
62     .con_clear =	DUMMY,
63     .con_putc =		DUMMY,
64     .con_putcs =	DUMMY,
65     .con_cursor =	DUMMY,
66     .con_scroll =	DUMMY,
67     .con_bmove =	DUMMY,
68     .con_switch =	DUMMY,
69     .con_blank =	DUMMY,
70     .con_font_set =	DUMMY,
71     .con_font_get =	DUMMY,
72     .con_font_default =	DUMMY,
73     .con_font_copy =	DUMMY,
74     .con_set_palette =	DUMMY,
75     .con_scrolldelta =	DUMMY,
76 };
77 EXPORT_SYMBOL_GPL(dummy_con);
78