Attention is currently required from: Cliff Huang, Lance Zhao, Tim Wawrzynczak.
Arthur Heymans has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/79217?usp=email )
Change subject: acpigen.c: Add resource producer functions for mmio ......................................................................
acpigen.c: Add resource producer functions for mmio
Signed-off-by: Arthur Heymans arthur@aheymans.xyz Change-Id: Id9e4adcd976e1f56ef7f502d9df16dbefce95c3e --- M src/acpi/acpigen.c M src/include/acpi/acpigen.h 2 files changed, 33 insertions(+), 2 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/17/79217/1
diff --git a/src/acpi/acpigen.c b/src/acpi/acpigen.c index b2db19d..554ff56 100644 --- a/src/acpi/acpigen.c +++ b/src/acpi/acpigen.c @@ -2257,7 +2257,7 @@ io_limit - io_base + 1); /* length */ }
-static void acpigen_resource_producer_mmio32(u32 mmio_base, u32 mmio_limit, u16 type_flags) +static void acpigen_resource_x_mmio32(bool is_producer, u32 mmio_base, u32 mmio_limit, u16 type_flags) { acpigen_resource_dword(RSRC_TYPE_MEM, /* res_type */ ADDR_SPACE_GENERAL_FLAG_MAX_FIXED @@ -2272,7 +2272,7 @@ mmio_limit - mmio_base + 1); /* length */ }
-static void acpigen_resource_producer_mmio64(u64 mmio_base, u64 mmio_limit, u16 type_flags) +static void acpigen_resource_x_mmio64(bool is_producer, u64 mmio_base, u64 mmio_limit, u16 type_flags) { acpigen_resource_qword(RSRC_TYPE_MEM, /* res_type */ ADDR_SPACE_GENERAL_FLAG_MAX_FIXED @@ -2287,6 +2287,17 @@ mmio_limit - mmio_base + 1); /* length */ }
+ +static void acpigen_resource_producer_mmio32(u32 mmio_base, u32 mmio_limit, u16 type_flags) +{ + acpigen_resource_x_mmio32(true, mmio_base, mmio_limit, type_flags); +} + +static void acpigen_resource_producer_mmio64(u64 mmio_base, u64 mmio_limit, u16 type_flags) +{ + acpigen_resource_x_mmio64(true, mmio_base, mmio_limit, type_flags); +} + void acpigen_resource_producer_mmio(u64 mmio_base, u64 mmio_limit, u16 type_flags) { if (mmio_base < 4ULL * GiB && mmio_limit < 4ULL * GiB) @@ -2295,6 +2306,25 @@ acpigen_resource_producer_mmio64(mmio_base, mmio_limit, type_flags); }
+static void acpigen_resource_consumer_mmio32(u32 mmio_base, u32 mmio_limit, u16 type_flags) +{ + acpigen_resource_x_mmio32(false, mmio_base, mmio_limit, type_flags); +} + +static void acpigen_resource_consumer_mmio64(u64 mmio_base, u64 mmio_limit, u16 type_flags) +{ + acpigen_resource_x_mmio64(false, mmio_base, mmio_limit, type_flags); +} + +void acpigen_resource_consumer_mmio(u64 mmio_base, u64 mmio_limit, u16 type_flags) +{ + if (mmio_base < 4ULL * GiB && mmio_limit < 4ULL * GiB) + acpigen_resource_consumer_mmio32(mmio_base, mmio_limit, type_flags); + else + acpigen_resource_consumer_mmio64(mmio_base, mmio_limit, type_flags); +} + + void acpigen_write_ADR(uint64_t adr) { acpigen_write_name_qword("_ADR", adr); diff --git a/src/include/acpi/acpigen.h b/src/include/acpi/acpigen.h index 346ae73..7a5be51 100644 --- a/src/include/acpi/acpigen.h +++ b/src/include/acpi/acpigen.h @@ -691,6 +691,7 @@ void acpigen_resource_producer_bus_number(u16 bus_base, u16 bus_limit); void acpigen_resource_producer_io(u16 io_base, u16 io_limit); void acpigen_resource_producer_mmio(u64 mmio_base, u64 mmio_limit, u16 type_flags); +void acpigen_resource_consumer_mmio(u64 mmio_base, u64 mmio_limit, u16 type_flags);
/* Emits Notify(namestr, value) */ void acpigen_notify(const char *namestr, int value);