summaryrefslogtreecommitdiff
path: root/power/intel_x86.c
diff options
context:
space:
mode:
Diffstat (limited to 'power/intel_x86.c')
-rw-r--r--power/intel_x86.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/power/intel_x86.c b/power/intel_x86.c
index 093e9cbc1a..ace891c8b9 100644
--- a/power/intel_x86.c
+++ b/power/intel_x86.c
@@ -604,6 +604,25 @@ enum power_state common_intel_x86_power_handle_state(enum power_state state)
return state;
}
+void intel_x86_rsmrst_signal_interrupt(enum gpio_signal signal)
+{
+ int rsmrst_in = gpio_get_level(GPIO_RSMRST_L_PGOOD);
+ int rsmrst_out = gpio_get_level(GPIO_PCH_RSMRST_L);
+
+ /*
+ * This function is called when rsmrst changes state. If rsmrst
+ * has been asserted (high -> low) then pass this new state to PCH.
+ */
+ if (!rsmrst_in && (rsmrst_in != rsmrst_out))
+ gpio_set_level(GPIO_PCH_RSMRST_L, rsmrst_in);
+
+ /*
+ * Call the main power signal interrupt handler to wake up the chipset
+ * task which handles low->high rsmrst pass through.
+ */
+ power_signal_interrupt(signal);
+}
+
void common_intel_x86_handle_rsmrst(enum power_state state)
{
/*