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>
diff --git a/src/device/Kconfig b/src/device/Kconfig
index 5210223..0e5de45 100644
--- a/src/device/Kconfig
+++ b/src/device/Kconfig
@@ -521,6 +521,14 @@
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 234ebb4..8798405 100644
--- a/src/include/device/pci_mmio_cfg.h
+++ b/src/include/device/pci_mmio_cfg.h
@@ -101,6 +101,10 @@
#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.