ASoC: nau8825: Adjust internal clock during jack detection
authorDavid Lin <CTLIN0@nuvoton.com>
Tue, 22 Nov 2022 07:38:55 +0000 (15:38 +0800)
committerMark Brown <broonie@kernel.org>
Tue, 22 Nov 2022 12:23:13 +0000 (12:23 +0000)
This patch is to rasie up internal clock during jack detection.
The fast clock will accelerate charge and discharge effect.
So this mechanism will make jack detection more robust.

Signed-off-by: David Lin <CTLIN0@nuvoton.com>
Link: https://lore.kernel.org/r/20221122073855.43024-1-CTLIN0@nuvoton.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/codecs/nau8825.c

index 3eac7c9..ba7f5ec 100644 (file)
@@ -1686,6 +1686,9 @@ static void nau8825_setup_auto_irq(struct nau8825 *nau8825)
 
        /* Enable internal VCO needed for interruptions */
        nau8825_configure_sysclk(nau8825, NAU8825_CLK_INTERNAL, 0);
+       /* Raise up the internal clock for jack detection */
+       regmap_update_bits(regmap, NAU8825_REG_CLK_DIVIDER,
+                          NAU8825_CLK_MCLK_SRC_MASK, 0);
 
        /* Enable ADC needed for interruptions */
        regmap_update_bits(regmap, NAU8825_REG_ENA_CTRL,
@@ -1800,6 +1803,10 @@ static int nau8825_jack_insert(struct nau8825 *nau8825)
                break;
        }
 
+       /* Update to the default divider of internal clock for power saving */
+       regmap_update_bits(regmap, NAU8825_REG_CLK_DIVIDER,
+                          NAU8825_CLK_MCLK_SRC_MASK, 0xf);
+
        /* Leaving HPOL/R grounded after jack insert by default. They will be
         * ungrounded as part of the widget power up sequence at the beginning
         * of playback to reduce pop.