summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAngel Pons <th3fanbus@gmail.com>2021-01-28 13:04:06 +0100
committerAngel Pons <th3fanbus@gmail.com>2021-01-30 23:10:22 +0000
commit50632878bf9dbae54fac4b48070482531002a290 (patch)
tree86946d6b92dfc0e2823a50f755f2e30538da97ef
parent67df3ff8003bf3f78e5168245a727e10752e2062 (diff)
downloadcoreboot-50632878bf9dbae54fac4b48070482531002a290.tar.xz
device/Kconfig: Introduce MMCONF_LENGTH
This is necessary because ASL Memory32Fixed values cannot contain operations, even if they can be evaluated to constants. Add a sanity check in pci_mmio_cfg.h to ensure consistency with MMCONF_BUS_NUMBER. Change-Id: I8f0b5edf166580cc12c1363d8d6b6ef0f2854be9 Signed-off-by: Angel Pons <th3fanbus@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/50033 Reviewed-by: Arthur Heymans <arthur@aheymans.xyz> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/device/Kconfig8
-rw-r--r--src/include/device/pci_mmio_cfg.h4
2 files changed, 12 insertions, 0 deletions
diff --git a/src/device/Kconfig b/src/device/Kconfig
index 52102230a3..0e5de456ae 100644
--- a/src/device/Kconfig
+++ b/src/device/Kconfig
@@ -521,6 +521,14 @@ config MMCONF_BUS_NUMBER
int
depends on MMCONF_SUPPORT
+config MMCONF_LENGTH
+ hex
+ depends on MMCONF_SUPPORT
+ default 0x04000000 if MMCONF_BUS_NUMBER = 64
+ default 0x08000000 if MMCONF_BUS_NUMBER = 128
+ default 0x10000000 if MMCONF_BUS_NUMBER = 256
+ default 0x0
+
config PCI_ALLOW_BUS_MASTER
bool "Allow coreboot to set optional PCI bus master bits"
default y
diff --git a/src/include/device/pci_mmio_cfg.h b/src/include/device/pci_mmio_cfg.h
index 234ebb4c2c..8798405776 100644
--- a/src/include/device/pci_mmio_cfg.h
+++ b/src/include/device/pci_mmio_cfg.h
@@ -101,6 +101,10 @@ uint32_t *pci_mmio_config32_addr(pci_devfn_t dev, uint16_t reg)
#error "CONFIG_MMCONF_BASE_ADDRESS undefined!"
#endif
+#if CONFIG_MMCONF_BUS_NUMBER * MiB != CONFIG_MMCONF_LENGTH
+#error "CONFIG_MMCONF_LENGTH does not correspond with CONFIG_MMCONF_BUS_NUMBER!"
+#endif
+
/* Avoid name collisions as different stages have different signature
* for these functions. The _s_ stands for simple, fundamental IO or
* MMIO variant.