diff options
Diffstat (limited to 'power/intel_x86.c')
-rw-r--r-- | power/intel_x86.c | 19 |
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) { /* |