| // SPDX-License-Identifier: GPL-2.0 | 
 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt | 
 |  | 
 | #include <linux/kernel.h> | 
 | #include <linux/console.h> | 
 | #include <linux/errno.h> | 
 | #include <linux/string.h> | 
 |  | 
 | #include "console_cmdline.h" | 
 | #include "braille.h" | 
 |  | 
 | int _braille_console_setup(char **str, char **brl_options) | 
 | { | 
 | 	size_t len; | 
 |  | 
 | 	len = str_has_prefix(*str, "brl,"); | 
 | 	if (len) { | 
 | 		*brl_options = ""; | 
 | 		*str += len; | 
 | 		return 0; | 
 | 	} | 
 |  | 
 | 	len = str_has_prefix(*str, "brl="); | 
 | 	if (len) { | 
 | 		*brl_options = *str + len; | 
 | 		*str = strchr(*brl_options, ','); | 
 | 		if (!*str) { | 
 | 			pr_err("need port name after brl=\n"); | 
 | 			return -EINVAL; | 
 | 		} | 
 | 		*((*str)++) = 0; | 
 | 	} | 
 |  | 
 | 	return 0; | 
 | } | 
 |  | 
 | int | 
 | _braille_register_console(struct console *console, struct console_cmdline *c) | 
 | { | 
 | 	int rtn = 0; | 
 |  | 
 | 	if (c->brl_options) { | 
 | 		console->flags |= CON_BRL; | 
 | 		rtn = braille_register_console(console, c->index, c->options, | 
 | 					       c->brl_options); | 
 | 	} | 
 |  | 
 | 	return rtn; | 
 | } | 
 |  | 
 | int | 
 | _braille_unregister_console(struct console *console) | 
 | { | 
 | 	if (console->flags & CON_BRL) | 
 | 		return braille_unregister_console(console); | 
 |  | 
 | 	return 0; | 
 | } |