Message ID | 20200422090833.9743-4-amelie.delaunay@st.com (mailing list archive) |
---|---|
State | Mainlined |
Commit | 97eda5dcc2cde5dcc778bef7a9344db3b6bf8ef5 |
Headers | show |
Series | STMFX power related fixes | expand |
On Wed, 22 Apr 2020, Amelie Delaunay wrote: > 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> > --- > drivers/mfd/stmfx.c | 6 ++++++ > include/linux/mfd/stmfx.h | 1 + > 2 files changed, 7 insertions(+) Applied, thanks.
diff --git a/drivers/mfd/stmfx.c b/drivers/mfd/stmfx.c index 1977fe95f876..711979afd90a 100644 --- a/drivers/mfd/stmfx.c +++ b/drivers/mfd/stmfx.c @@ -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 diff --git a/include/linux/mfd/stmfx.h b/include/linux/mfd/stmfx.h index 3c67983678ec..744dce63946e 100644 --- a/include/linux/mfd/stmfx.h +++ b/include/linux/mfd/stmfx.h @@ -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;
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> --- drivers/mfd/stmfx.c | 6 ++++++ include/linux/mfd/stmfx.h | 1 + 2 files changed, 7 insertions(+)