summaryrefslogtreecommitdiff
path: root/src/soc/intel/common/block
diff options
context:
space:
mode:
authorUsha P <usha.p@intel.com>2019-08-09 18:42:00 +0530
committerPatrick Georgi <pgeorgi@google.com>2019-08-21 09:28:46 +0000
commit5e59a82c27822df745990c46934e09b9cb2eec52 (patch)
tree3152565baf98225b3052ba7f481241cab5315366 /src/soc/intel/common/block
parent4b5eefa675cc1d1853d9f35bbecafbf0e6e9886d (diff)
downloadcoreboot-5e59a82c27822df745990c46934e09b9cb2eec52.tar.xz
soc/intel/common: Set controller state to active in uart init
Set the controller state to D0 during the uart init sequence, this ensures the controller is up and active. One more argument "const struct device *dev" has been added to uart_lpss_init function. BUG=b:135941367 TEST=Verify no timeouts seen during UART controller enumeration sequence in CML, ICL and APL platforms Change-Id: Ie91b502a38d1a40a3dea3711b015b7a5b7ede2db Signed-off-by: Usha P <usha.p@intel.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/34810 Reviewed-by: Subrata Banik <subrata.banik@intel.com> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Aamir Bohra <aamir.bohra@intel.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/soc/intel/common/block')
-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 f556aed3d6..364835dd0f 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(const 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);
@@ -79,7 +82,7 @@ void uart_common_init(const 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);
}
const struct device *uart_get_device(void)
@@ -231,7 +234,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);
}
}