diff options
author | Andrey Petrov <anpetrov@fb.com> | 2019-09-10 20:32:56 -0700 |
---|---|---|
committer | Patrick Georgi <pgeorgi@google.com> | 2019-09-24 10:29:58 +0000 |
commit | 2fa4938796bb000a273f6935db139de64e200712 (patch) | |
tree | f4696a5adf1bd4701d4c3e9dab5c88b32b1a3f75 /src/soc/intel/fsp_broadwell_de/include | |
parent | 8dc95ddbd4a9354eec124393f996a36c3a7329e2 (diff) |
soc/fsp_broadwell_de: Add devhide functionality
Add function to hide IIO PCIe root ports.
TEST=On OCP Monolake, hide built-in NIC PCIe root port [0.2.2 and 0.2.3]
and make sure OS does not detect built-in NIC.
Change-Id: I2fcac5b7d9a7a52a2801c010bfccf247f2a44581
Signed-off-by: Andrey Petrov <anpetrov@fb.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35321
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
Reviewed-by: Werner Zeh <werner.zeh@siemens.com>
Diffstat (limited to 'src/soc/intel/fsp_broadwell_de/include')
-rw-r--r-- | src/soc/intel/fsp_broadwell_de/include/soc/pci_devs.h | 224 | ||||
-rw-r--r-- | src/soc/intel/fsp_broadwell_de/include/soc/ubox.h | 9 |
2 files changed, 133 insertions, 100 deletions
diff --git a/src/soc/intel/fsp_broadwell_de/include/soc/pci_devs.h b/src/soc/intel/fsp_broadwell_de/include/soc/pci_devs.h index 58591dcda0..ad8d80a71b 100644 --- a/src/soc/intel/fsp_broadwell_de/include/soc/pci_devs.h +++ b/src/soc/intel/fsp_broadwell_de/include/soc/pci_devs.h @@ -20,106 +20,130 @@ #include <device/pci_def.h> -#define BUS0 0 - -#define SOC_DEV 0 -#define SOC_FUNC 0 -#define SOC_DEVID 0x2F00 -#define SOC_DEVID_ES2 0x6F00 -#define SOC_DEV_FUNC PCI_DEVFN(SOC_DEV, SOC_FUNC) - -#define VTD_DEV 5 -#define VTD_FUNC 0 -#define VTD_DEVID 0x6f28 -#define VTD_DEV_FUNC PCI_DEVFN(VTD_DEV, VTD_FUNC) -#define VTD_PCI_DEV PCI_DEV(BUS0, VTD_DEV, VTD_FUNC) - -#define LPC_DEV 31 -#define LPC_FUNC 0 -#define LPC_DEVID 0x8C42 -#define LPC_DEVID_ES2 0x8C54 -#define LPC_DEV_FUNC PCI_DEVFN(LPC_DEV, LPC_FUNC) - -#define SATA_DEV 31 -#define SATA_FUNC 2 -#define AHCI_DEVID 0x8C02 -#define SATA_DEV_FUNC PCI_DEVFN(SATA_DEV, SATA_FUNC) - -#define SMBUS_DEV 31 -#define SMBUS_FUNC 3 -#define SMBUS_DEVID 0x8C22 -#define SMBUS_DEV_FUNC PCI_DEVFN(SMBUS_DEV, SMBUS_FUNC) - -#define SATA2_DEV 31 -#define SATA2_FUNC 5 -#define SATA2_DEV_FUNC PCI_DEVFN(SATA2_DEV, SATA2_FUNC) - -#define EHCI1_DEV 29 -#define EHCI1_FUNC 0 -#define EHCI1_DEVID 0x8C26 -#define EHCI1_DEV_FUNC PCI_DEVFN(EHCI_DEV1, EHCI_FUNC1) - -#define EHCI2_DEV 26 -#define EHCI2_FUNC 0 -#define EHCI2_DEVID 0x8C2D -#define EHCI2_DEV_FUNC PCI_DEVFN(EHCI_DEV2, EHCI_FUNC2) - -#define XHCI_DEV 20 -#define XHCI_FUNC 0 -#define XHCI_DEVID 0x8C31 -#define XHCI_FUS_REG 0xE0 -#define XHCI_FUNC_DISABLE (1 << 0) -#define XHCI_USB2PR_REG 0xD0 -#define XHCI_DEV_FUNC PCI_DEVFN(XHCI_DEV, XHCI_FUNC) - -#define GBE_DEV 25 -#define GBE_FUNC 0 -#define GBE_DEVID 0x8C33 -#define GBE_DEV_FUNC PCI_DEVFN(GBE_DEV, GBE_FUNC) - -#define ME_DEV 22 -#define ME_FUNC 0 -#define ME_DEVID 0x8C3A -#define ME_DEV_FUNC PCI_DEVFN(ME_DEV, ME_FUNC) - -#define HDA_DEV 27 -#define HDA_FUNC 0 -#define HDA_DEVID 0x8C20 -#define HDA_DEV_FUNC PCI_DEVFN(HDA_DEV, HDA_FUNC) - -#define PCIE_DEV 28 -#define PCIE_PORT1_DEV PCIE_DEV -#define PCIE_PORT1_FUNC 0 -#define PCIE_PORT1_DEVID 0x8C10 -#define PCIE_PORT2_DEV PCIE_DEV -#define PCIE_PORT2_FUNC 1 -#define PCIE_PORT2_DEVID 0x8C12 -#define PCIE_PORT3_DEV PCIE_DEV -#define PCIE_PORT3_FUNC 2 -#define PCIE_PORT3_DEVID 0x8C14 -#define PCIE_PORT4_DEV PCIE_DEV -#define PCIE_PORT4_FUNC 3 -#define PCIE_PORT4_DEVID 0x8C16 -#define PCIE_PORT5_DEV PCIE_DEV -#define PCIE_PORT5_FUNC 4 -#define PCIE_PORT5_DEVID 0x8C18 -#define PCIE_PORT6_DEV PCIE_DEV -#define PCIE_PORT6_FUNC 5 -#define PCIE_PORT6_DEVID 0x8C1A -#define PCIE_PORT7_DEV PCIE_DEV -#define PCIE_PORT7_FUNC 6 -#define PCIE_PORT7_DEVID 0x8C1C -#define PCIE_PORT8_DEV PCIE_DEV -#define PCIE_PORT8_FUNC 7 -#define PCIE_PORT8_DEVID 0x8C1E -#define PCIE_PORT1_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT1_FUNC) -#define PCIE_PORT2_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT2_FUNC) -#define PCIE_PORT3_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT3_FUNC) -#define PCIE_PORT4_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT4_FUNC) -#define PCIE_PORT5_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT5_FUNC) -#define PCIE_PORT6_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT6_FUNC) -#define PCIE_PORT7_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT7_FUNC) -#define PCIE_PORT8_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT8_FUNC) +#define BUS0 0 + +#define SOC_DEV 0 +#define SOC_FUNC 0 +#define SOC_DEVID 0x2F00 +#define SOC_DEVID_ES2 0x6F00 +#define SOC_DEV_FUNC PCI_DEVFN(SOC_DEV, SOC_FUNC) + +/* DMI2/PCIe link to PCH */ +#define PCIE_IIO_PORT_0_DEV 0x00 +#define PCIE_IIO_PORT_0_FUNC 0x00 + +/* IOU2, x8 PCIe Gen3 port */ +#define PCIE_IIO_PORT_1_DEV 0x01 +#define PCIE_IIO_PORT_1A_FUNC 0x00 +#define PCIE_IIO_PORT_1B_FUNC 0x01 + +/* IOU0: Internal IOSF bridge to 10 GbE and CBDMA */ +#define PCIE_IIO_PORT_2_DEV 0x02 +#define PCIE_IIO_PORT_2A_FUNC 0x00 +#define PCIE_IIO_PORT_2B_FUNC 0x01 +#define PCIE_IIO_PORT_2C_FUNC 0x02 +#define PCIE_IIO_PORT_2D_FUNC 0x03 + +/* IOU1: x16 PCIe Gen3 port */ +#define PCIE_IIO_PORT_3_DEV 0x03 +#define PCIE_IIO_PORT_3A_FUNC 0x00 +#define PCIE_IIO_PORT_3B_FUNC 0x01 +#define PCIE_IIO_PORT_3C_FUNC 0x02 +#define PCIE_IIO_PORT_3D_FUNC 0x03 + +#define VTD_DEV 5 +#define VTD_FUNC 0 +#define VTD_DEVID 0x6f28 +#define VTD_DEV_FUNC PCI_DEVFN(VTD_DEV, VTD_FUNC) +#define VTD_PCI_DEV PCI_DEV(BUS0, VTD_DEV, VTD_FUNC) + +#define LPC_DEV 31 +#define LPC_FUNC 0 +#define LPC_DEVID 0x8C42 +#define LPC_DEVID_ES2 0x8C54 +#define LPC_DEV_FUNC PCI_DEVFN(LPC_DEV, LPC_FUNC) + +#define SATA_DEV 31 +#define SATA_FUNC 2 +#define AHCI_DEVID 0x8C02 +#define SATA_DEV_FUNC PCI_DEVFN(SATA_DEV, SATA_FUNC) + +#define SMBUS_DEV 31 +#define SMBUS_FUNC 3 +#define SMBUS_DEVID 0x8C22 +#define SMBUS_DEV_FUNC PCI_DEVFN(SMBUS_DEV, SMBUS_FUNC) + +#define SATA2_DEV 31 +#define SATA2_FUNC 5 +#define SATA2_DEV_FUNC PCI_DEVFN(SATA2_DEV, SATA2_FUNC) + +#define EHCI1_DEV 29 +#define EHCI1_FUNC 0 +#define EHCI1_DEVID 0x8C26 +#define EHCI1_DEV_FUNC PCI_DEVFN(EHCI_DEV1, EHCI_FUNC1) + +#define EHCI2_DEV 26 +#define EHCI2_FUNC 0 +#define EHCI2_DEVID 0x8C2D +#define EHCI2_DEV_FUNC PCI_DEVFN(EHCI_DEV2, EHCI_FUNC2) + +#define XHCI_DEV 20 +#define XHCI_FUNC 0 +#define XHCI_DEVID 0x8C31 +#define XHCI_FUS_REG 0xE0 +#define XHCI_FUNC_DISABLE (1 << 0) +#define XHCI_USB2PR_REG 0xD0 +#define XHCI_DEV_FUNC PCI_DEVFN(XHCI_DEV, XHCI_FUNC) + +#define GBE_DEV 25 +#define GBE_FUNC 0 +#define GBE_DEVID 0x8C33 +#define GBE_DEV_FUNC PCI_DEVFN(GBE_DEV, GBE_FUNC) + +#define ME_DEV 22 +#define ME_FUNC 0 +#define ME_DEVID 0x8C3A +#define ME_DEV_FUNC PCI_DEVFN(ME_DEV, ME_FUNC) + +#define HDA_DEV 27 +#define HDA_FUNC 0 +#define HDA_DEVID 0x8C20 +#define HDA_DEV_FUNC PCI_DEVFN(HDA_DEV, HDA_FUNC) + +/* Ports from PCH block with adjustable burification settings */ +#define PCIE_DEV 28 +#define PCIE_PORT1_DEV PCIE_DEV +#define PCIE_PORT1_FUNC 0 +#define PCIE_PORT1_DEVID 0x8C10 +#define PCIE_PORT2_DEV PCIE_DEV +#define PCIE_PORT2_FUNC 1 +#define PCIE_PORT2_DEVID 0x8C12 +#define PCIE_PORT3_DEV PCIE_DEV +#define PCIE_PORT3_FUNC 2 +#define PCIE_PORT3_DEVID 0x8C14 +#define PCIE_PORT4_DEV PCIE_DEV +#define PCIE_PORT4_FUNC 3 +#define PCIE_PORT4_DEVID 0x8C16 +#define PCIE_PORT5_DEV PCIE_DEV +#define PCIE_PORT5_FUNC 4 +#define PCIE_PORT5_DEVID 0x8C18 +#define PCIE_PORT6_DEV PCIE_DEV +#define PCIE_PORT6_FUNC 5 +#define PCIE_PORT6_DEVID 0x8C1A +#define PCIE_PORT7_DEV PCIE_DEV +#define PCIE_PORT7_FUNC 6 +#define PCIE_PORT7_DEVID 0x8C1C +#define PCIE_PORT8_DEV PCIE_DEV +#define PCIE_PORT8_FUNC 7 +#define PCIE_PORT8_DEVID 0x8C1E +#define PCIE_PORT1_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT1_FUNC) +#define PCIE_PORT2_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT2_FUNC) +#define PCIE_PORT3_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT3_FUNC) +#define PCIE_PORT4_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT4_FUNC) +#define PCIE_PORT5_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT5_FUNC) +#define PCIE_PORT6_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT6_FUNC) +#define PCIE_PORT7_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT7_FUNC) +#define PCIE_PORT8_DEV_FUNC PCI_DEVFN(PCIE_DEV, PCIE_PORT8_FUNC) /* The SMM device is located on bus 0xff (QPI) */ #define QPI_BUS 0xff diff --git a/src/soc/intel/fsp_broadwell_de/include/soc/ubox.h b/src/soc/intel/fsp_broadwell_de/include/soc/ubox.h index 9451a39958..baaeac55cb 100644 --- a/src/soc/intel/fsp_broadwell_de/include/soc/ubox.h +++ b/src/soc/intel/fsp_broadwell_de/include/soc/ubox.h @@ -27,10 +27,19 @@ #ifndef _BROADWELL_UBOX_H_ #define _BROADWELL_UBOX_H_ +#include <device/pci_ops.h> +#include <soc/pci_devs.h> +#include <soc/vtd.h> + #define UBOX_UART_ENABLE 0xf8 #define UBOX_UART_ENABLE_PORT0 (1u << 0) #define UBOX_UART_ENABLE_PORT1 (1u << 1) #define UBOX_SC_RESET_STATUS 0xc8 #define UBOX_SC_BYPASS (1u << 3) + +#define UBOX_DEVHIDE0 0xb0 + +void iio_hide(const uint8_t devno, const uint8_t funcno); + #endif |