xref: /openbmc/linux/kernel/printk/braille.c (revision 3e30a927)
1 // SPDX-License-Identifier: GPL-2.0
2 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
3 
4 #include <linux/kernel.h>
5 #include <linux/console.h>
6 #include <linux/errno.h>
7 #include <linux/string.h>
8 
9 #include "console_cmdline.h"
10 #include "braille.h"
11 
12 int _braille_console_setup(char **str, char **brl_options)
13 {
14 	size_t len;
15 
16 	len = str_has_prefix(*str, "brl,");
17 	if (len) {
18 		*brl_options = "";
19 		*str += len;
20 		return 0;
21 	}
22 
23 	len = str_has_prefix(*str, "brl=");
24 	if (len) {
25 		*brl_options = *str + len;
26 		*str = strchr(*brl_options, ',');
27 		if (!*str) {
28 			pr_err("need port name after brl=\n");
29 			return -EINVAL;
30 		}
31 		*((*str)++) = 0;
32 	}
33 
34 	return 0;
35 }
36 
37 int
38 _braille_register_console(struct console *console, struct console_cmdline *c)
39 {
40 	int rtn = 0;
41 
42 	if (c->brl_options) {
43 		console->flags |= CON_BRL;
44 		rtn = braille_register_console(console, c->index, c->options,
45 					       c->brl_options);
46 	}
47 
48 	return rtn;
49 }
50 
51 int
52 _braille_unregister_console(struct console *console)
53 {
54 	if (console->flags & CON_BRL)
55 		return braille_unregister_console(console);
56 
57 	return 0;
58 }
59