diff options
Diffstat (limited to 'drivers/firmware')
-rw-r--r-- | drivers/firmware/pcdp.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/firmware/pcdp.c b/drivers/firmware/pcdp.c index 53c95c0bbf46..ae1fb45dbb40 100644 --- a/drivers/firmware/pcdp.c +++ b/drivers/firmware/pcdp.c | |||
@@ -25,14 +25,22 @@ setup_serial_console(struct pcdp_uart *uart) | |||
25 | #ifdef CONFIG_SERIAL_8250_CONSOLE | 25 | #ifdef CONFIG_SERIAL_8250_CONSOLE |
26 | int mmio; | 26 | int mmio; |
27 | static char options[64], *p = options; | 27 | static char options[64], *p = options; |
28 | char parity; | ||
28 | 29 | ||
29 | mmio = (uart->addr.address_space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY); | 30 | mmio = (uart->addr.address_space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY); |
30 | p += sprintf(p, "console=uart,%s,0x%lx", | 31 | p += sprintf(p, "console=uart,%s,0x%lx", |
31 | mmio ? "mmio" : "io", uart->addr.address); | 32 | mmio ? "mmio" : "io", uart->addr.address); |
32 | if (uart->baud) | 33 | if (uart->baud) { |
33 | p += sprintf(p, ",%lu", uart->baud); | 34 | p += sprintf(p, ",%lu", uart->baud); |
34 | if (uart->bits) | 35 | if (uart->bits) { |
35 | p += sprintf(p, "n%d", uart->bits); | 36 | switch (uart->parity) { |
37 | case 0x2: parity = 'e'; break; | ||
38 | case 0x3: parity = 'o'; break; | ||
39 | default: parity = 'n'; | ||
40 | } | ||
41 | p += sprintf(p, "%c%d", parity, uart->bits); | ||
42 | } | ||
43 | } | ||
36 | 44 | ||
37 | return early_serial_console_init(options); | 45 | return early_serial_console_init(options); |
38 | #else | 46 | #else |