1
0
Fork 0

mfd: stmfx: Disable IRQ in suspend to avoid spurious interrupt

[ Upstream commit 97eda5dcc2 ]

When STMFX supply is stopped, spurious interrupt can occur. To avoid that,
disable the interrupt in suspend before disabling the regulator and
re-enable it at the end of resume.

Fixes: 06252ade91 ("mfd: Add ST Multi-Function eXpander (STMFX) core driver")
Signed-off-by: Amelie Delaunay <amelie.delaunay@st.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
5.4-rM2-2.2.x-imx-squashed
Amelie Delaunay 2020-04-22 11:08:33 +02:00 committed by Greg Kroah-Hartman
parent d8d1b8b417
commit 9669bf039f
2 changed files with 7 additions and 0 deletions

View File

@ -296,6 +296,8 @@ static int stmfx_irq_init(struct i2c_client *client)
if (ret)
goto irq_exit;
stmfx->irq = client->irq;
return 0;
irq_exit:
@ -486,6 +488,8 @@ static int stmfx_suspend(struct device *dev)
if (ret)
return ret;
disable_irq(stmfx->irq);
if (stmfx->vdd)
return regulator_disable(stmfx->vdd);
@ -529,6 +533,8 @@ static int stmfx_resume(struct device *dev)
if (ret)
return ret;
enable_irq(stmfx->irq);
return 0;
}
#endif

View File

@ -109,6 +109,7 @@ struct stmfx {
struct device *dev;
struct regmap *map;
struct regulator *vdd;
int irq;
struct irq_domain *irq_domain;
struct mutex lock; /* IRQ bus lock */
u8 irq_src;