mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-30 22:26:55 +00:00
mfd: axp20x: Fix order of pek rise and fall events
The power button can get "stuck" if the rising edge and falling edge irq are read in the same pass. This can often be triggered when resuming from suspend if the power button is released before the kernel handles the interrupt. Swapping the order of the rise and fall events makes sure that the press event is handled first, which prevents this situation. Signed-off-by: Aren Moynihan <aren@peacevolution.org> Reviewed-by: Samuel Holland <samuel@sholland.org> Tested-by: Samuel Holland <samuel@sholland.org> Acked-by: Chen-Yu Tsai <wens@csie.org> Signed-off-by: Lee Jones <lee@kernel.org> Link: https://lore.kernel.org/r/20221208220225.635414-1-aren@peacevolution.org
This commit is contained in:
parent
725a2acd85
commit
8781ba7f45
1 changed files with 10 additions and 5 deletions
|
@ -432,8 +432,9 @@ enum {
|
||||||
AXP152_IRQ_PEK_SHORT,
|
AXP152_IRQ_PEK_SHORT,
|
||||||
AXP152_IRQ_PEK_LONG,
|
AXP152_IRQ_PEK_LONG,
|
||||||
AXP152_IRQ_TIMER,
|
AXP152_IRQ_TIMER,
|
||||||
AXP152_IRQ_PEK_RIS_EDGE,
|
/* out of bit order to make sure the press event is handled first */
|
||||||
AXP152_IRQ_PEK_FAL_EDGE,
|
AXP152_IRQ_PEK_FAL_EDGE,
|
||||||
|
AXP152_IRQ_PEK_RIS_EDGE,
|
||||||
AXP152_IRQ_GPIO3_INPUT,
|
AXP152_IRQ_GPIO3_INPUT,
|
||||||
AXP152_IRQ_GPIO2_INPUT,
|
AXP152_IRQ_GPIO2_INPUT,
|
||||||
AXP152_IRQ_GPIO1_INPUT,
|
AXP152_IRQ_GPIO1_INPUT,
|
||||||
|
@ -472,8 +473,9 @@ enum {
|
||||||
AXP20X_IRQ_LOW_PWR_LVL1,
|
AXP20X_IRQ_LOW_PWR_LVL1,
|
||||||
AXP20X_IRQ_LOW_PWR_LVL2,
|
AXP20X_IRQ_LOW_PWR_LVL2,
|
||||||
AXP20X_IRQ_TIMER,
|
AXP20X_IRQ_TIMER,
|
||||||
AXP20X_IRQ_PEK_RIS_EDGE,
|
/* out of bit order to make sure the press event is handled first */
|
||||||
AXP20X_IRQ_PEK_FAL_EDGE,
|
AXP20X_IRQ_PEK_FAL_EDGE,
|
||||||
|
AXP20X_IRQ_PEK_RIS_EDGE,
|
||||||
AXP20X_IRQ_GPIO3_INPUT,
|
AXP20X_IRQ_GPIO3_INPUT,
|
||||||
AXP20X_IRQ_GPIO2_INPUT,
|
AXP20X_IRQ_GPIO2_INPUT,
|
||||||
AXP20X_IRQ_GPIO1_INPUT,
|
AXP20X_IRQ_GPIO1_INPUT,
|
||||||
|
@ -502,8 +504,9 @@ enum axp22x_irqs {
|
||||||
AXP22X_IRQ_LOW_PWR_LVL1,
|
AXP22X_IRQ_LOW_PWR_LVL1,
|
||||||
AXP22X_IRQ_LOW_PWR_LVL2,
|
AXP22X_IRQ_LOW_PWR_LVL2,
|
||||||
AXP22X_IRQ_TIMER,
|
AXP22X_IRQ_TIMER,
|
||||||
AXP22X_IRQ_PEK_RIS_EDGE,
|
/* out of bit order to make sure the press event is handled first */
|
||||||
AXP22X_IRQ_PEK_FAL_EDGE,
|
AXP22X_IRQ_PEK_FAL_EDGE,
|
||||||
|
AXP22X_IRQ_PEK_RIS_EDGE,
|
||||||
AXP22X_IRQ_GPIO1_INPUT,
|
AXP22X_IRQ_GPIO1_INPUT,
|
||||||
AXP22X_IRQ_GPIO0_INPUT,
|
AXP22X_IRQ_GPIO0_INPUT,
|
||||||
};
|
};
|
||||||
|
@ -571,8 +574,9 @@ enum axp803_irqs {
|
||||||
AXP803_IRQ_LOW_PWR_LVL1,
|
AXP803_IRQ_LOW_PWR_LVL1,
|
||||||
AXP803_IRQ_LOW_PWR_LVL2,
|
AXP803_IRQ_LOW_PWR_LVL2,
|
||||||
AXP803_IRQ_TIMER,
|
AXP803_IRQ_TIMER,
|
||||||
AXP803_IRQ_PEK_RIS_EDGE,
|
/* out of bit order to make sure the press event is handled first */
|
||||||
AXP803_IRQ_PEK_FAL_EDGE,
|
AXP803_IRQ_PEK_FAL_EDGE,
|
||||||
|
AXP803_IRQ_PEK_RIS_EDGE,
|
||||||
AXP803_IRQ_PEK_SHORT,
|
AXP803_IRQ_PEK_SHORT,
|
||||||
AXP803_IRQ_PEK_LONG,
|
AXP803_IRQ_PEK_LONG,
|
||||||
AXP803_IRQ_PEK_OVER_OFF,
|
AXP803_IRQ_PEK_OVER_OFF,
|
||||||
|
@ -623,8 +627,9 @@ enum axp809_irqs {
|
||||||
AXP809_IRQ_LOW_PWR_LVL1,
|
AXP809_IRQ_LOW_PWR_LVL1,
|
||||||
AXP809_IRQ_LOW_PWR_LVL2,
|
AXP809_IRQ_LOW_PWR_LVL2,
|
||||||
AXP809_IRQ_TIMER,
|
AXP809_IRQ_TIMER,
|
||||||
AXP809_IRQ_PEK_RIS_EDGE,
|
/* out of bit order to make sure the press event is handled first */
|
||||||
AXP809_IRQ_PEK_FAL_EDGE,
|
AXP809_IRQ_PEK_FAL_EDGE,
|
||||||
|
AXP809_IRQ_PEK_RIS_EDGE,
|
||||||
AXP809_IRQ_PEK_SHORT,
|
AXP809_IRQ_PEK_SHORT,
|
||||||
AXP809_IRQ_PEK_LONG,
|
AXP809_IRQ_PEK_LONG,
|
||||||
AXP809_IRQ_PEK_OVER_OFF,
|
AXP809_IRQ_PEK_OVER_OFF,
|
||||||
|
|
Loading…
Reference in a new issue