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
12int _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
37int
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
51int
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