ASoC: rt5640: Only cancel jack-detect work on suspend if active
authorHans de Goede <hdegoede@redhat.com>
Tue, 12 Sep 2023 11:32:45 +0000 (13:32 +0200)
committerMark Brown <broonie@kernel.org>
Tue, 12 Sep 2023 13:37:51 +0000 (14:37 +0100)
If jack-detection is not used; or has already been disabled then
there is no need to call rt5640_cancel_work().

Move the rt5640_cancel_work() inside the "if (rt5640->jack) {}" block,
grouping it together with the disabling of the IRQ which queues the work
in the first place.

This also makes suspend() symetrical with resume() which re-queues the work
in an "if (rt5640->jack) {}" block.

Cc: Oder Chiou <oder_chiou@realtek.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230912113245.320159-7-hdegoede@redhat.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/rt5640.c

index a4a1140..e8cdc16 100644 (file)
@@ -2801,9 +2801,9 @@ static int rt5640_suspend(struct snd_soc_component *component)
        if (rt5640->jack) {
                /* disable jack interrupts during system suspend */
                disable_irq(rt5640->irq);
+               rt5640_cancel_work(rt5640);
        }
 
-       rt5640_cancel_work(rt5640);
        snd_soc_component_force_bias_level(component, SND_SOC_BIAS_OFF);
        rt5640_reset(component);
        regcache_cache_only(rt5640->regmap, true);