diff --git a/src/soc/intel/denverton_ns/uart.c b/src/soc/intel/denverton_ns/uart.c
index ca4e8b5..78f1d56 100644
--- a/src/soc/intel/denverton_ns/uart.c
+++ b/src/soc/intel/denverton_ns/uart.c
@@ -26,11 +26,26 @@
 #include <device/pci_ids.h>
 #include <soc/pci_devs.h>
 #include <console/console.h>
+#include <soc/uart.h>
+#include <fsp/api.h>
 
 static void dnv_ns_uart_read_resources(struct device *dev)
 {
 	/* read resources to be visible in the log*/
 	pci_dev_read_resources(dev);
+	if (!IS_ENABLED(CONFIG_LEGACY_UART_MODE))
+		return;
+	struct resource *res = find_resource(dev, PCI_BASE_ADDRESS_0);
+	if (res == NULL)
+		return;
+	res->size = 0x8;
+	res->flags = IORESOURCE_IO | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
+	/* Do not configure membar */
+	res = find_resource(dev, PCI_BASE_ADDRESS_1);
+	if (res != NULL)
+		res->flags = 0;
+	compact_resources(dev);
+
 }
 
 static struct device_operations uart_ops = {
@@ -51,3 +66,27 @@
 	.vendor = PCI_VENDOR_ID_INTEL,
 	.devices = uart_ids
 };
+
+static void hide_hsuarts(void)
+{
+	int i;
+	printk(BIOS_DEBUG, "HIDING HSUARTs.\n");
+	/* There is a hardware requirement to hide functions starting from the
+	   last one. */
+	for (i = DENVERTON_UARTS_TO_INI - 1; i >= 0; i--) {
+		struct device *uart_dev;
+		uart_dev = dev_find_slot(0, PCI_DEVFN(HSUART_DEV, i));
+		if (uart_dev == NULL)
+			continue;
+		pci_or_config32(uart_dev, PCI_FUNC_RDCFG_HIDE, 1);
+	}
+}
+
+/* Hide HSUART PCI device very last when FSP no longer needs it */
+void platform_fsp_notify_status(enum fsp_notify_phase phase)
+{
+	if (phase != END_OF_FIRMWARE)
+		return;
+	if (IS_ENABLED(CONFIG_LEGACY_UART_MODE))
+		hide_hsuarts();
+}
