mb/google/nissa/var/rull: Add 6W and 15W DPTF parameters
[coreboot.git] / src / soc / intel / denverton_ns / uart.c
blobca2e67f7522183a54e9716a4541347384a6ab63d
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 /*
4 * The sole purpose of this driver is to avoid BAR to be changed during
5 * resource allocation. Since configuration space is just 32 bytes it
6 * shouldn't cause any fragmentation.
7 */
9 #include <console/uart.h>
10 #include <device/device.h>
11 #include <device/pci.h>
12 #include <device/pci_ops.h>
13 #include <device/pci_ids.h>
14 #include <soc/pci_devs.h>
15 #include <console/console.h>
16 #include <soc/uart.h>
17 #include <fsp/api.h>
19 static void dnv_ns_uart_read_resources(struct device *dev)
21 /* read resources to be visible in the log*/
22 pci_dev_read_resources(dev);
23 if (!CONFIG(LEGACY_UART_MODE))
24 return;
25 struct resource *res = probe_resource(dev, PCI_BASE_ADDRESS_0);
26 if (res == NULL)
27 return;
28 res->size = 0x8;
29 res->flags = IORESOURCE_IO | IORESOURCE_ASSIGNED | IORESOURCE_FIXED;
30 /* Do not configure membar */
31 res = probe_resource(dev, PCI_BASE_ADDRESS_1);
32 if (res != NULL)
33 res->flags = 0;
34 compact_resources(dev);
37 static struct device_operations uart_ops = {
38 .read_resources = dnv_ns_uart_read_resources,
39 .set_resources = pci_dev_set_resources,
40 .enable_resources = pci_dev_enable_resources,
41 .init = pci_dev_init,
44 static const struct pci_driver uart_driver __pci_driver = {
45 .ops = &uart_ops,
46 .vendor = PCI_VID_INTEL,
47 .device = PCI_DID_INTEL_DNV_HSUART
50 static void hide_hsuarts(void)
52 int i;
53 printk(BIOS_DEBUG, "HIDING HSUARTs.\n");
54 /* There is a hardware requirement to hide functions starting from the
55 last one. */
56 for (i = DENVERTON_UARTS_TO_INI - 1; i >= 0; i--) {
57 struct device *uart_dev;
58 uart_dev = pcidev_on_root(HSUART_DEV, i);
59 if (uart_dev == NULL)
60 continue;
61 pci_or_config32(uart_dev, PCI_FUNC_RDCFG_HIDE, 1);
65 /* Hide HSUART PCI device very last when FSP no longer needs it */
66 void platform_fsp_notify_status(enum fsp_notify_phase phase)
68 if (phase != END_OF_FIRMWARE)
69 return;
70 if (CONFIG(LEGACY_UART_MODE))
71 hide_hsuarts();