summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/soc/intel/common/block/uart/uart.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/soc/intel/common/block/uart/uart.c b/src/soc/intel/common/block/uart/uart.c
index 9d820ffd7e..82e5df401c 100644
--- a/src/soc/intel/common/block/uart/uart.c
+++ b/src/soc/intel/common/block/uart/uart.c
@@ -33,8 +33,11 @@
extern const struct uart_gpio_pad_config uart_gpio_pads[];
extern const int uart_max_index;
-static void uart_lpss_init(uintptr_t baseaddr)
+static void uart_lpss_init(struct device *dev, uintptr_t baseaddr)
{
+ /* Ensure controller is in D0 state */
+ lpss_set_power_state(dev, STATE_D0);
+
/* Take UART out of reset */
lpss_reset_release(baseaddr);
@@ -81,7 +84,7 @@ void uart_common_init(struct device *device, uintptr_t baseaddr)
/* Enable memory access and bus master */
pci_write_config32(dev, PCI_COMMAND, UART_PCI_ENABLE);
- uart_lpss_init(baseaddr);
+ uart_lpss_init(device, baseaddr);
}
struct device *uart_get_device(void)
@@ -224,7 +227,7 @@ static void uart_common_enable_resources(struct device *dev)
base = pci_read_config32(dev, PCI_BASE_ADDRESS_0) & ~0xFFF;
if (base)
- uart_lpss_init(base);
+ uart_lpss_init(dev, base);
}
}