ASoC: cs42l43: Increase default type detect time and button delay
authorMaciej Strozek <mstrozek@opensource.cirrus.com>
Tue, 4 Jun 2024 13:28:43 +0000 (14:28 +0100)
committerMark Brown <broonie@kernel.org>
Tue, 4 Jun 2024 17:49:23 +0000 (18:49 +0100)
Some problematic headsets have been discovered, to help with correctly
identifying these, the detect time must be increased. Also improve the
reliability of the impedance value from the button detect by slightly
increasing the button detect delay.

Fixes: 686b8f711b99 ("ASoC: cs42l43: Lower default type detect time")
Signed-off-by: Maciej Strozek <mstrozek@opensource.cirrus.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Link: https://msgid.link/r/20240604132843.3309114-1-ckeepax@opensource.cirrus.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/cs42l43-jack.c

index 901b9dbcf58543e9b923ff4b3f3992743c5af963..d9ab003e166bfad49204070420483cbc93970a38 100644 (file)
@@ -121,7 +121,7 @@ int cs42l43_set_jack(struct snd_soc_component *component,
                priv->buttons[3] = 735;
        }
 
-       ret = cs42l43_find_index(priv, "cirrus,detect-us", 1000, &priv->detect_us,
+       ret = cs42l43_find_index(priv, "cirrus,detect-us", 50000, &priv->detect_us,
                                 cs42l43_accdet_us, ARRAY_SIZE(cs42l43_accdet_us));
        if (ret < 0)
                goto error;
@@ -433,7 +433,7 @@ irqreturn_t cs42l43_button_press(int irq, void *data)
 
        // Wait for 2 full cycles of comb filter to ensure good reading
        queue_delayed_work(system_wq, &priv->button_press_work,
-                          msecs_to_jiffies(10));
+                          msecs_to_jiffies(20));
 
        return IRQ_HANDLED;
 }