// SPDX-License-Identifier: GPL-2.0-only /* * Copyright (c) 2012, Intel Corporation * Copyright (c) 2015, Red Hat, Inc. * Copyright (c) 2015, 2016 Linaro Ltd. */ #define pr_fmt(fmt) … #include <linux/acpi.h> #include <linux/console.h> #include <linux/kernel.h> #include <linux/serial_core.h> /* * Erratum 44 for QDF2432v1 and QDF2400v1 SoCs describes the BUSY bit as * occasionally getting stuck as 1. To avoid the potential for a hang, check * TXFE == 0 instead of BUSY == 1. This may not be suitable for all UART * implementations, so only do so if an affected platform is detected in * acpi_parse_spcr(). */ bool qdf2400_e44_present; EXPORT_SYMBOL(…); /* * Some Qualcomm Datacenter Technologies SoCs have a defective UART BUSY bit. * Detect them by examining the OEM fields in the SPCR header, similar to PCI * quirk detection in pci_mcfg.c. */ static bool qdf2400_erratum_44_present(struct acpi_table_header *h) { … } /* * APM X-Gene v1 and v2 UART hardware is an 16550 like device but has its * register aligned to 32-bit. In addition, the BIOS also encoded the * access width to be 8 bits. This function detects this errata condition. */ static bool xgene_8250_erratum_present(struct acpi_table_spcr *tb) { … } /** * acpi_parse_spcr() - parse ACPI SPCR table and add preferred console * @enable_earlycon: set up earlycon for the console specified by the table * @enable_console: setup the console specified by the table. * * For the architectures with support for ACPI, CONFIG_ACPI_SPCR_TABLE may be * defined to parse ACPI SPCR table. As a result of the parsing preferred * console is registered and if @enable_earlycon is true, earlycon is set up. * If @enable_console is true the system console is also configured. * * When CONFIG_ACPI_SPCR_TABLE is defined, this function should be called * from arch initialization code as soon as the DT/ACPI decision is made. */ int __init acpi_parse_spcr(bool enable_earlycon, bool enable_console) { … }