aboutsummaryrefslogtreecommitdiff
path: root/src/soc/intel/apollolake/uart.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/apollolake/uart.c')
-rw-r--r--src/soc/intel/apollolake/uart.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/soc/intel/apollolake/uart.c b/src/soc/intel/apollolake/uart.c
index 3db460a999..673039cbe8 100644
--- a/src/soc/intel/apollolake/uart.c
+++ b/src/soc/intel/apollolake/uart.c
@@ -20,20 +20,38 @@
* shouldn't cause any fragmentation.
*/
+#include <cbmem.h>
#include <device/device.h>
#include <device/pci.h>
#include <intelblocks/uart.h>
+#include <soc/nvs.h>
#include <soc/pci_devs.h>
+#if !ENV_SMM
void pch_uart_read_resources(struct device *dev)
{
pci_dev_read_resources(dev);
- if ((IS_ENABLED(CONFIG_SOC_UART_DEBUG) &&
- dev->path.pci.devfn == _PCH_DEVFN(UART,
- CONFIG_UART_FOR_CONSOLE))) {
+ if (IS_ENABLED(CONFIG_SOC_UART_DEBUG) &&
+ uart_is_debug_controller(dev)) {
/* will override existing resource. */
fixed_mem_resource(dev, PCI_BASE_ADDRESS_0,
CONFIG_CONSOLE_UART_BASE_ADDRESS >> 10, 4, 0);
}
}
+#endif
+
+bool pch_uart_init_debug_controller_on_resume(void)
+{
+ global_nvs_t *gnvs = cbmem_find(CBMEM_ID_ACPI_GNVS);
+
+ if (gnvs)
+ return !!gnvs->uior;
+
+ return false;
+}
+
+device_t pch_uart_get_debug_controller(void)
+{
+ return _PCH_DEV(UART, CONFIG_UART_FOR_CONSOLE);
+}