mirror of
https://github.com/torvalds/linux.git
synced 2024-12-04 01:51:34 +00:00
f03e8c1060
Driver subsystems may need to translate the preferred console name to the character device name used. We already do some of this in console_setup() with a few hardcoded names, but that does not scale well. The console options are parsed early in console_setup(), and the consoles are added with __add_preferred_console(). At this point we don't know much about the character device names and device drivers getting probed. To allow driver subsystems to set up a preferred console, let's save the kernel command line console options. To add a preferred console from a driver subsystem with optional character device name translation, let's add a new function add_preferred_console_match(). This allows the serial core layer to support console=DEVNAME:0.0 style hardware based addressing in addition to the current console=ttyS0 style naming. And we can start moving console_setup() character device parsing to the driver subsystem specific code. We use a separate array from the console_cmdline array as the character device name and index may be unknown at the console_setup() time. And eventually there's no need to call __add_preferred_console() until the subsystem is ready to handle the console. Adding the console name in addition to the character device name, and a flag for an added console, could be added to the struct console_cmdline. And the console_cmdline array handling could be modified accordingly. But that complicates things compared saving the console options, and then adding the consoles when the subsystems handling the consoles are ready. Co-developed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20240327110021.59793-2-tony@atomide.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23 lines
645 B
C
23 lines
645 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef _CONSOLE_CMDLINE_H
|
|
#define _CONSOLE_CMDLINE_H
|
|
|
|
#define MAX_CMDLINECONSOLES 8
|
|
|
|
int console_opt_save(const char *str, const char *brl_opt);
|
|
int console_opt_add_preferred_console(const char *name, const short idx,
|
|
char *options, char *brl_options);
|
|
|
|
struct console_cmdline
|
|
{
|
|
char name[16]; /* Name of the driver */
|
|
int index; /* Minor dev. to use */
|
|
bool user_specified; /* Specified by command line vs. platform */
|
|
char *options; /* Options for the driver */
|
|
#ifdef CONFIG_A11Y_BRAILLE_CONSOLE
|
|
char *brl_options; /* Options for braille driver */
|
|
#endif
|
|
};
|
|
|
|
#endif
|