mfd: stmfx: Disable IRQ in suspend to avoid spurious interrupt
[ Upstream commit 97eda5dcc2cde5dcc778bef7a9344db3b6bf8ef5 ] 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: 06252ade9156 ("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>
This commit is contained in:
parent
d8d1b8b417
commit
9669bf039f
@ -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
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user