From: Bjorn Helgaas The HCDP specs (i.e., PCDP revision < 3) allow zero as a default value for baud rate and data bits. So if firmware doesn't supply them, let early_serial_console_init() probe for them rather than telling it the baud rate is zero. Also, update the URL for the PCDP spec. Signed-off-by: Bjorn Helgaas Signed-off-by: Andrew Morton --- drivers/firmware/pcdp.c | 11 +++++++---- drivers/firmware/pcdp.h | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff -puN drivers/firmware/pcdp.c~pcdp-handle-tables-that-dont-supply-baud-rate drivers/firmware/pcdp.c --- 25/drivers/firmware/pcdp.c~pcdp-handle-tables-that-dont-supply-baud-rate Thu Jun 2 16:55:44 2005 +++ 25-akpm/drivers/firmware/pcdp.c Thu Jun 2 16:55:44 2005 @@ -23,12 +23,15 @@ setup_serial_console(struct pcdp_uart *u { #ifdef CONFIG_SERIAL_8250_CONSOLE int mmio; - static char options[64]; + static char options[64], *p = options; mmio = (uart->addr.address_space_id == ACPI_ADR_SPACE_SYSTEM_MEMORY); - snprintf(options, sizeof(options), "console=uart,%s,0x%lx,%lun%d", - mmio ? "mmio" : "io", uart->addr.address, uart->baud, - uart->bits ? uart->bits : 8); + p += sprintf(p, "console=uart,%s,0x%lx", + mmio ? "mmio" : "io", uart->addr.address); + if (uart->baud) + p += sprintf(p, ",%lu", uart->baud); + if (uart->bits) + p += sprintf(p, "n%d", uart->bits); return early_serial_console_init(options); #else diff -puN drivers/firmware/pcdp.h~pcdp-handle-tables-that-dont-supply-baud-rate drivers/firmware/pcdp.h --- 25/drivers/firmware/pcdp.h~pcdp-handle-tables-that-dont-supply-baud-rate Thu Jun 2 16:55:44 2005 +++ 25-akpm/drivers/firmware/pcdp.h Thu Jun 2 16:55:44 2005 @@ -2,7 +2,7 @@ * Definitions for PCDP-defined console devices * * v1.0a: http://www.dig64.org/specifications/DIG64_HCDPv10a_01.pdf - * v2.0: http://www.dig64.org/specifications/DIG64_HCDPv20_042804.pdf + * v2.0: http://www.dig64.org/specifications/DIG64_PCDPv20.pdf * * (c) Copyright 2002, 2004 Hewlett-Packard Development Company, L.P. * Khalid Aziz _