Here GPIO pin 3 is used for Power Button, add _E03 in ACPI DSDT table.
Signed-off-by: Shannon Zhao <[email protected]>
Signed-off-by: Shannon Zhao <[email protected]>
---
hw/arm/virt-acpi-build.c | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index 80ce51c..54f88c9 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -336,6 +336,19 @@ static void acpi_dsdt_add_gpio(Aml *scope, const
MemMapEntry *gpio_memmap,
aml_append(crs, aml_interrupt(AML_CONSUMER, AML_EDGE, AML_ACTIVE_HIGH,
AML_EXCLUSIVE, gpio_irq));
aml_append(dev, aml_name_decl("_CRS", crs));
+
+ Aml *aei = aml_resource_template();
+ /* Pin 3 for power button */
+ int32_t pin_num[1] = {3};
+ aml_append(aei, aml_gpio_int(AML_CONSUMER_PRODUCER, AML_EDGE,
+ AML_ACTIVE_HIGH, AML_EXCLUSIVE, AML_PULL_UP,
0,
+ pin_num, 1, "GPO0", NULL));
+ aml_append(dev, aml_name_decl("_AEI", aei));
+
+ /* _E03 is handle for power button */
+ Aml *method = aml_method("_E03", 0);
+ aml_append(method, aml_notify(aml_name("PWRB"), aml_int(0x80)));
+ aml_append(dev, method);
aml_append(scope, dev);
}
--
2.1.0