diff options
Diffstat (limited to 'src/soc/intel/apollolake/uart.c')
-rw-r--r-- | src/soc/intel/apollolake/uart.c | 24 |
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); +} |