| From 28f1b4255121eca797b450fbe6e8e16b49ccc160 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Sat, 8 May 2021 00:51:50 -0700 |
| Subject: ASoC: rt5682: Disable irq on shutdown |
| |
| From: Stephen Boyd <swboyd@chromium.org> |
| |
| [ Upstream commit 47bcb1c7108363418cd578283333d72e310dfeaa ] |
| |
| We cancel the work queues, and reset the device on shutdown, but the irq |
| isn't disabled so the work queues could be queued again. Let's disable |
| the irq during shutdown so that we don't have to worry about this device |
| trying to do anything anymore. This fixes a problem seen where the i2c |
| bus is shutdown at reboot but this device irq still comes in and tries |
| to make another i2c transaction when the bus doesn't work. |
| |
| Cc: Jairaj Arava <jairaj.arava@intel.com> |
| Cc: Sathyanarayana Nujella <sathyanarayana.nujella@intel.com> |
| Cc: Pierre-Louis Bossart <pierre-louis.bossart@intel.com> |
| Cc: Shuming Fan <shumingf@realtek.com> |
| Cc: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> |
| Fixes: 45a2702ce109 ("ASoC: rt5682: Fix panic in rt5682_jack_detect_handler happening during system shutdown") |
| Signed-off-by: Stephen Boyd <swboyd@chromium.org> |
| Link: https://lore.kernel.org/r/20210508075151.1626903-1-swboyd@chromium.org |
| Signed-off-by: Mark Brown <broonie@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| sound/soc/codecs/rt5682-i2c.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| diff --git a/sound/soc/codecs/rt5682-i2c.c b/sound/soc/codecs/rt5682-i2c.c |
| index 7e652843c57d..547445d1e3c6 100644 |
| --- a/sound/soc/codecs/rt5682-i2c.c |
| +++ b/sound/soc/codecs/rt5682-i2c.c |
| @@ -268,6 +268,7 @@ static void rt5682_i2c_shutdown(struct i2c_client *client) |
| { |
| struct rt5682_priv *rt5682 = i2c_get_clientdata(client); |
| |
| + disable_irq(client->irq); |
| cancel_delayed_work_sync(&rt5682->jack_detect_work); |
| cancel_delayed_work_sync(&rt5682->jd_check_work); |
| |
| -- |
| 2.30.2 |
| |