Skip to content

Commit b37fdd4

Browse files
LeeWeiTse-sevenbroonie
authored andcommitted
ASoC: nau8821: Add delay control for ADC
Change the original fixed delay to the assignment from the property. It will make it more flexible to different platforms to avoid pop noise at the beginning of recording. Signed-off-by: Seven Lee <wtli@nuvoton.com> Link: https://lore.kernel.org/r/20240415070649.3496487-3-wtli@nuvoton.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 467d252 commit b37fdd4

2 files changed

Lines changed: 10 additions & 2 deletions

File tree

sound/soc/codecs/nau8821.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ static int nau8821_left_adc_event(struct snd_soc_dapm_widget *w,
511511

512512
switch (event) {
513513
case SND_SOC_DAPM_POST_PMU:
514-
msleep(125);
514+
msleep(nau8821->adc_delay);
515515
regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL,
516516
NAU8821_EN_ADCL, NAU8821_EN_ADCL);
517517
break;
@@ -535,7 +535,7 @@ static int nau8821_right_adc_event(struct snd_soc_dapm_widget *w,
535535

536536
switch (event) {
537537
case SND_SOC_DAPM_POST_PMU:
538-
msleep(125);
538+
msleep(nau8821->adc_delay);
539539
regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL,
540540
NAU8821_EN_ADCR, NAU8821_EN_ADCR);
541541
break;
@@ -1697,6 +1697,7 @@ static void nau8821_print_device_properties(struct nau8821 *nau8821)
16971697
dev_dbg(dev, "dmic-clk-threshold: %d\n",
16981698
nau8821->dmic_clk_threshold);
16991699
dev_dbg(dev, "key_enable: %d\n", nau8821->key_enable);
1700+
dev_dbg(dev, "adc-delay-ms: %d\n", nau8821->adc_delay);
17001701
}
17011702

17021703
static int nau8821_read_device_properties(struct device *dev,
@@ -1742,6 +1743,12 @@ static int nau8821_read_device_properties(struct device *dev,
17421743
&nau8821->dmic_slew_rate);
17431744
if (ret)
17441745
nau8821->dmic_slew_rate = 0;
1746+
ret = device_property_read_u32(dev, "nuvoton,adc-delay-ms",
1747+
&nau8821->adc_delay);
1748+
if (ret)
1749+
nau8821->adc_delay = 125;
1750+
if (nau8821->adc_delay < 125 || nau8821->adc_delay > 500)
1751+
dev_warn(dev, "Please set the suitable delay time!\n");
17451752

17461753
return 0;
17471754
}

sound/soc/codecs/nau8821.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,7 @@ struct nau8821 {
577577
int dmic_clk_threshold;
578578
int dmic_slew_rate;
579579
int key_enable;
580+
int adc_delay;
580581
};
581582

582583
int nau8821_enable_jack_detect(struct snd_soc_component *component,

0 commit comments

Comments
 (0)