@@ -337,6 +337,19 @@ static void acpi_dsdt_add_gpio(Aml *scope, const MemMapEntry *gpio_memmap,
aml_append(crs, aml_interrupt(AML_CONSUMER, AML_LEVEL, 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);
}