blob: 25d5bc3dcdb5eb15c71e92a7eff5c90491047efa [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
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>
Linus Torvalds1da177e2005-04-16 15:20:36 -070010#include <linux/console.h>
11#include <linux/vt_kern.h>
Jon Smirl894673e2006-07-10 04:44:13 -070012#include <linux/screen_info.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070013#include <linux/init.h>
14#include <linux/module.h>
15
16/*
17 * Dummy console driver
18 */
19
20#if defined(__arm__)
H. Peter Anvin3ea33512007-10-16 22:36:04 -070021#define DUMMY_COLUMNS screen_info.orig_video_cols
22#define DUMMY_ROWS screen_info.orig_video_lines
Geert Uytterhoeven8f5b1e62015-01-12 21:17:02 +010023#else
Linus Torvalds1da177e2005-04-16 15:20:36 -070024/* set by Kconfig. Use 80x25 for 640x480 and 160x64 for 1280x1024 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070025#define DUMMY_COLUMNS CONFIG_DUMMY_CONSOLE_COLUMNS
26#define DUMMY_ROWS CONFIG_DUMMY_CONSOLE_ROWS
Linus Torvalds1da177e2005-04-16 15:20:36 -070027#endif
28
29static const char *dummycon_startup(void)
30{
31 return "dummy device";
32}
33
34static 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
Sami Tolvanend93a9632017-05-11 15:05:07 -070044static void dummycon_deinit(struct vc_data *vc)
45{
46}
47
48static void dummycon_clear(struct vc_data *vc, int a, int b, int c, int d)
49{
50}
51
52static void dummycon_putc(struct vc_data *vc, int a, int b, int c)
53{
54}
55
56static void dummycon_putcs(struct vc_data *vc, const unsigned short *s, int a, int b, int c)
57{
58}
59
60static void dummycon_cursor(struct vc_data *vc, int a)
61{
62}
63
64static int dummycon_scroll(struct vc_data *vc, int a, int b, int c, int d)
Linus Torvalds1da177e2005-04-16 15:20:36 -070065{
66 return 0;
67}
68
Sami Tolvanend93a9632017-05-11 15:05:07 -070069static int dummycon_switch(struct vc_data *vc)
70{
71 return 0;
72}
73
74static int dummycon_blank(struct vc_data *vc, int a, int b)
75{
76 return 0;
77}
78
79static int dummycon_font_set(struct vc_data *vc, struct console_font *f, unsigned u)
80{
81 return 0;
82}
83
84static int dummycon_font_default(struct vc_data *vc, struct console_font *f, char *c)
85{
86 return 0;
87}
88
89static int dummycon_font_copy(struct vc_data *vc, int a)
90{
91 return 0;
92}
Linus Torvalds1da177e2005-04-16 15:20:36 -070093
94/*
95 * The console `switch' structure for the dummy console
96 *
97 * Most of the operations are dummies.
98 */
99
100const struct consw dummy_con = {
101 .owner = THIS_MODULE,
102 .con_startup = dummycon_startup,
103 .con_init = dummycon_init,
Sami Tolvanend93a9632017-05-11 15:05:07 -0700104 .con_deinit = dummycon_deinit,
105 .con_clear = dummycon_clear,
106 .con_putc = dummycon_putc,
107 .con_putcs = dummycon_putcs,
108 .con_cursor = dummycon_cursor,
109 .con_scroll = dummycon_scroll,
110 .con_switch = dummycon_switch,
111 .con_blank = dummycon_blank,
112 .con_font_set = dummycon_font_set,
113 .con_font_default = dummycon_font_default,
114 .con_font_copy = dummycon_font_copy,
Linus Torvalds1da177e2005-04-16 15:20:36 -0700115};
Daniel Vettera4de0522014-06-05 16:20:46 +0200116EXPORT_SYMBOL_GPL(dummy_con);