Linux-libre 5.7.3-gnu
[librecmc/linux-libre.git] / arch / mips / dec / prom / console.c
1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  *      DECstation PROM-based early console support.
4  *
5  *      Copyright (C) 2004, 2007  Maciej W. Rozycki
6  */
7 #include <linux/console.h>
8 #include <linux/init.h>
9 #include <linux/kernel.h>
10 #include <linux/string.h>
11
12 #include <asm/dec/prom.h>
13
14 static void __init prom_console_write(struct console *con, const char *s,
15                                       unsigned int c)
16 {
17         char buf[81];
18         unsigned int chunk = sizeof(buf) - 1;
19
20         while (c > 0) {
21                 if (chunk > c)
22                         chunk = c;
23                 memcpy(buf, s, chunk);
24                 buf[chunk] = '\0';
25                 prom_printf("%s", buf);
26                 s += chunk;
27                 c -= chunk;
28         }
29 }
30
31 static struct console promcons __initdata = {
32         .name   = "prom",
33         .write  = prom_console_write,
34         .flags  = CON_BOOT | CON_PRINTBUFFER,
35         .index  = -1,
36 };
37
38 void __init register_prom_console(void)
39 {
40         register_console(&promcons);
41 }