summaryrefslogtreecommitdiff
path: root/common/power_button.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/power_button.c')
-rw-r--r--common/power_button.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/common/power_button.c b/common/power_button.c
index 36d7e510d2..484d25154a 100644
--- a/common/power_button.c
+++ b/common/power_button.c
@@ -184,6 +184,15 @@ static void power_button_change_deferred(void)
}
DECLARE_DEFERRED(power_button_change_deferred);
+static void power_button_simulate_deferred(void)
+{
+ ccprintf("Simulating %s release.\n", power_button.name);
+ simulate_power_pressed = 0;
+ power_button_is_stable = 0;
+ power_button_change_deferred();
+}
+DECLARE_DEFERRED(power_button_simulate_deferred);
+
void power_button_interrupt(enum gpio_signal signal)
{
/*
@@ -205,15 +214,9 @@ void power_button_simulate_press(unsigned int duration)
ccprintf("Simulating %d ms %s press.\n", duration, power_button.name);
simulate_power_pressed = 1;
power_button_is_stable = 0;
- hook_call_deferred(&power_button_change_deferred_data, 0);
-
- if (duration > 0)
- msleep(duration);
-
- ccprintf("Simulating %s release.\n", power_button.name);
- simulate_power_pressed = 0;
- power_button_is_stable = 0;
- hook_call_deferred(&power_button_change_deferred_data, 0);
+ power_button_change_deferred();
+ hook_call_deferred(&power_button_simulate_deferred_data,
+ duration * MSEC);
}
/*****************************************************************************/