Merge tag 'block-5.15-2021-09-05' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / kernel / printk / braille.c
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 }