From 2139479722c1ecd431eae25b006c20d6f3d88ce5 Mon Sep 17 00:00:00 2001 From: "Najumon B.A" Date: Fri, 2 Feb 2024 19:12:06 +0530 Subject: [PATCH] lib: acpi: fix for build error when acpi not enabled fix for acpi.h header file generates invalid C-code when CONFIG_ACPI=n Signed-off-by: Najumon B.A --- include/zephyr/acpi/acpi.h | 7 ++----- lib/acpi/acpi.c | 7 +++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/include/zephyr/acpi/acpi.h b/include/zephyr/acpi/acpi.h index 0685355e6d1..87be59ce9f3 100644 --- a/include/zephyr/acpi/acpi.h +++ b/include/zephyr/acpi/acpi.h @@ -62,11 +62,8 @@ struct acpi_mcfg { struct acpi_irq_resource { uint32_t flags; - union { - uint16_t irq; - uint16_t irqs[CONFIG_ACPI_IRQ_VECTOR_MAX]; - }; uint8_t irq_vector_max; + uint16_t *irqs; }; struct acpi_reg_base { @@ -79,8 +76,8 @@ struct acpi_reg_base { }; struct acpi_mmio_resource { - struct acpi_reg_base reg_base[CONFIG_ACPI_MMIO_ENTRIES_MAX]; uint8_t mmio_max; + struct acpi_reg_base *reg_base; }; /** diff --git a/lib/acpi/acpi.c b/lib/acpi/acpi.c index 291c2c9eeb5..d0ab79f72a5 100644 --- a/lib/acpi/acpi.c +++ b/lib/acpi/acpi.c @@ -457,11 +457,10 @@ int acpi_device_irq_get(struct acpi_dev *child_dev, struct acpi_irq_resource *ir return -ENODEV; } - if (res->Data.ExtendedIrq.InterruptCount > CONFIG_ACPI_IRQ_VECTOR_MAX) { + if (res->Data.ExtendedIrq.InterruptCount > irq_res->irq_vector_max) { return -ENOMEM; } - memset(irq_res, 0, sizeof(struct acpi_irq_resource)); irq_res->irq_vector_max = res->Data.ExtendedIrq.InterruptCount; for (int i = 0; i < irq_res->irq_vector_max; i++) { irq_res->irqs[i] = (uint16_t)res->Data.ExtendedIrq.Interrupts[i]; @@ -470,7 +469,7 @@ int acpi_device_irq_get(struct acpi_dev *child_dev, struct acpi_irq_resource *ir irq_res->flags = arch_acpi_encode_irq_flags(res->Data.ExtendedIrq.Polarity, res->Data.ExtendedIrq.Triggering); } else { - if (res->Data.Irq.InterruptCount > CONFIG_ACPI_IRQ_VECTOR_MAX) { + if (res->Data.Irq.InterruptCount > irq_res->irq_vector_max) { return -ENOMEM; } @@ -531,7 +530,7 @@ int acpi_device_mmio_get(struct acpi_dev *child_dev, struct acpi_mmio_resource * } res = ACPI_NEXT_RESOURCE(res); - if (mmio_cnt >= CONFIG_ACPI_MMIO_ENTRIES_MAX && + if (mmio_cnt >= mmio_res->mmio_max && res->Type != ACPI_RESOURCE_TYPE_END_TAG) { return -ENOMEM; }