mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 10:11:27 +01:00
ns16550: command line parsing adjustments
Allow intermediate parts of the command line options to be absent (expressed by two immediately succeeding commas). Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
This commit is contained in:
1 parent
631126d92d
commit
25c8d48043
2 files changed
+26
-32
No files matched your search
@@ -199,7 +199,7 @@ If set, override Xen's calculation of the level 2 cache line size.
|
||||
If set, override Xen's default choice for the platform timer.
|
||||
|
||||
### com1,com2
|
||||
> `= <baud>[/<clock_hz>][,DPS[,<io-base>[,<irq>[,<port-bdf>[,<bridge-bdf>]]]] | pci | amt ] `
|
||||
> `= <baud>[/<clock_hz>][,[DPS][,[<io-base>|pci|amt][,[<irq>][,[<port-bdf>][,[<bridge-bdf>]]]]]]`
|
||||
|
||||
Both option `com1` and `com2` follow the same format.
|
||||
|
||||
|
||||
+25
-31
@@ -555,26 +555,23 @@ static void __init ns16550_parse_port_config(
|
||||
else if ( (baud = simple_strtoul(conf, &conf, 10)) != 0 )
|
||||
uart->baud = baud;
|
||||
|
||||
if ( *conf == '/')
|
||||
if ( *conf == '/' )
|
||||
{
|
||||
conf++;
|
||||
uart->clock_hz = simple_strtoul(conf, &conf, 0) << 4;
|
||||
}
|
||||
|
||||
if ( *conf != ',' )
|
||||
goto config_parsed;
|
||||
conf++;
|
||||
|
||||
uart->data_bits = simple_strtoul(conf, &conf, 10);
|
||||
|
||||
uart->parity = parse_parity_char(*conf);
|
||||
conf++;
|
||||
|
||||
uart->stop_bits = simple_strtoul(conf, &conf, 10);
|
||||
|
||||
if ( *conf == ',' )
|
||||
if ( *conf == ',' && *++conf != ',' )
|
||||
{
|
||||
uart->data_bits = simple_strtoul(conf, &conf, 10);
|
||||
|
||||
uart->parity = parse_parity_char(*conf);
|
||||
|
||||
uart->stop_bits = simple_strtoul(conf + 1, &conf, 10);
|
||||
}
|
||||
|
||||
if ( *conf == ',' && *++conf != ',' )
|
||||
{
|
||||
conf++;
|
||||
if ( strncmp(conf, "pci", 3) == 0 )
|
||||
{
|
||||
if ( pci_uart_config(uart, 1/* skip AMT */, uart - ns16550_com) )
|
||||
@@ -591,24 +588,21 @@ static void __init ns16550_parse_port_config(
|
||||
{
|
||||
uart->io_base = simple_strtoul(conf, &conf, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if ( *conf == ',' )
|
||||
{
|
||||
conf++;
|
||||
uart->irq = simple_strtoul(conf, &conf, 10);
|
||||
if ( *conf == ',' )
|
||||
{
|
||||
conf++;
|
||||
uart->ps_bdf_enable = 1;
|
||||
parse_pci_bdf(&conf, &uart->ps_bdf[0]);
|
||||
if ( *conf == ',' )
|
||||
{
|
||||
conf++;
|
||||
uart->pb_bdf_enable = 1;
|
||||
parse_pci_bdf(&conf, &uart->pb_bdf[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if ( *conf == ',' && *++conf != ',' )
|
||||
uart->irq = simple_strtol(conf, &conf, 10);
|
||||
|
||||
if ( *conf == ',' && *++conf != ',' )
|
||||
{
|
||||
uart->ps_bdf_enable = 1;
|
||||
parse_pci_bdf(&conf, &uart->ps_bdf[0]);
|
||||
}
|
||||
|
||||
if ( *conf == ',' && *++conf != ',' )
|
||||
{
|
||||
uart->pb_bdf_enable = 1;
|
||||
parse_pci_bdf(&conf, &uart->pb_bdf[0]);
|
||||
}
|
||||
|
||||
config_parsed:
|
||||
|
||||