From ab77cd4785ce24715c33fd4ec8562cad3ea5bffc Mon Sep 17 00:00:00 2001 From: Naresh G Solanki Date: Tue, 15 Nov 2016 10:13:15 +0530 Subject: arch/x86/acpigen: Write DSM method with multiple UUID's Enable generic way of writing DSM method which can write acpi table for multiple UUID's. Change-Id: Ic1fbdc0647e8fdc50ffa407887feb19a63cb48e4 Signed-off-by: Naresh G Solanki Reviewed-on: https://review.coreboot.org/17424 Tested-by: build bot (Jenkins) Reviewed-by: Subrata Banik Reviewed-by: Furquan Shaikh --- src/arch/x86/include/arch/acpigen.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/arch/x86/include') diff --git a/src/arch/x86/include/arch/acpigen.h b/src/arch/x86/include/arch/acpigen.h index dcd8fb7a64..f76d85e9bc 100644 --- a/src/arch/x86/include/arch/acpigen.h +++ b/src/arch/x86/include/arch/acpigen.h @@ -144,6 +144,20 @@ struct opregion { unsigned long regionlen; }; +#define DSM_UUID(DSM_UUID, DSM_CALLBACKS, DSM_COUNT, DSM_ARG) \ + { .uuid = DSM_UUID, \ + .callbacks = DSM_CALLBACKS, \ + .count = DSM_COUNT, \ + .arg = DSM_ARG, \ + } + +struct dsm_uuid { + const char *uuid; + void (**callbacks)(void *); + size_t count; + void *arg; +}; + void acpigen_write_return_integer(uint64_t arg); void acpigen_write_return_string(const char *arg); void acpigen_write_len_f(void); @@ -235,8 +249,9 @@ void acpigen_write_return_byte(uint8_t arg); * argument to pass into the callbacks. Callbacks should ensure that Local0 and * Local1 are left untouched. Use of Local2-Local7 is permitted in callbacks. */ -void acpigen_write_dsm(const char *uuid, void (*callbacks[])(void *), +void acpigen_write_dsm(const char *uuid, void (**callbacks)(void *), size_t count, void *arg); +void acpigen_write_dsm_uuid_arr(struct dsm_uuid *ids, size_t count); /* * Generate ACPI AML code for OperationRegion * This function takes input region name, region space, region offset & region -- cgit v1.2.3