Skip to content

Commit

Permalink
ACPI: SPCR: work around clock issue on xgene UART
Browse files Browse the repository at this point in the history
xgene v1/v2 8250 UARTs don't run at the standard clock rate expected by
the driver and there is no information on clocking available from the
SPCR table. As there has been no progress on relevant vendors updating
DBG2/SPCR specifications to fix this work around this using the previous
xgene quirk handling to avoid setting a baud rate and therefore using
the UART as configured by firmware.

Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
Tested-by: Mark Salter <msalter@redhat.com>
Reviewed-by: Mark Salter <msalter@redhat.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
  • Loading branch information
Graeme Gregory authored and Rafael J. Wysocki committed Aug 16, 2017
1 parent dee82bc commit 03c3876
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions drivers/acpi/spcr.c
Original file line number Diff line number Diff line change
Expand Up @@ -188,11 +188,19 @@ int __init parse_spcr(bool earlycon)
uart = "qdf2400_e44";
}

if (xgene_8250_erratum_present(table))
if (xgene_8250_erratum_present(table)) {
iotype = "mmio32";

snprintf(opts, sizeof(opts), "%s,%s,0x%llx,%d", uart, iotype,
table->serial_port.address, baud_rate);
/* for xgene v1 and v2 we don't know the clock rate of the
* UART so don't attempt to change to the baud rate state
* in the table because driver cannot calculate the dividers
*/
snprintf(opts, sizeof(opts), "%s,%s,0x%llx", uart, iotype,
table->serial_port.address);
} else {
snprintf(opts, sizeof(opts), "%s,%s,0x%llx,%d", uart, iotype,
table->serial_port.address, baud_rate);
}

pr_info("console: %s\n", opts);

Expand Down

0 comments on commit 03c3876

Please sign in to comment.