diff options
-rw-r--r-- | chip/npcx/gpio.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/chip/npcx/gpio.c b/chip/npcx/gpio.c index 5b9c0ec417..fb95f101f1 100644 --- a/chip/npcx/gpio.c +++ b/chip/npcx/gpio.c @@ -788,16 +788,16 @@ void __gpio_wk0efgh_interrupt(void) { #ifdef CONFIG_LPC /* Pending bit 7 or 6 ? */ - if (NPCX_WKPND(MIWU_TABLE_0 , MIWU_GROUP_5) & 0xC0) { - if (IS_BIT_SET(NPCX_WKPND(MIWU_TABLE_0 , MIWU_GROUP_5), 6)) { - /* Clear pending bit of WUI */ - SET_BIT(NPCX_WKPCL(MIWU_TABLE_0 , MIWU_GROUP_5), 6); - /* Disable host wake-up */ - CLEAR_BIT(NPCX_WKEN(MIWU_TABLE_0, MIWU_GROUP_5), 6); - } - if (IS_BIT_SET(NPCX_WKPND(MIWU_TABLE_0 , MIWU_GROUP_5), 7)) - lpc_lreset_pltrst_handler(); - } else + if (IS_BIT_SET(NPCX_WKEN(MIWU_TABLE_0 , MIWU_GROUP_5), 6) && + IS_BIT_SET(NPCX_WKPND(MIWU_TABLE_0 , MIWU_GROUP_5), 6)) { + /* Disable host wake-up */ + CLEAR_BIT(NPCX_WKEN(MIWU_TABLE_0, MIWU_GROUP_5), 6); + /* Clear pending bit of WUI */ + SET_BIT(NPCX_WKPCL(MIWU_TABLE_0 , MIWU_GROUP_5), 6); + } else if (IS_BIT_SET(NPCX_WKEN(MIWU_TABLE_0 , MIWU_GROUP_5), 7) && + IS_BIT_SET(NPCX_WKPND(MIWU_TABLE_0 , MIWU_GROUP_5), 7)) + lpc_lreset_pltrst_handler(); + else /* FW will jump into ISR again if other GPIOs' INT still issued */ #endif gpio_interrupt(NPCX_IRQ_WKINTEFGH_0); } |