diff mbox series

[2/2] ASoC: nau8825: Add delay control for input path

Message ID 20230414103941.39566-2-CTLIN0@nuvoton.com (mailing list archive)
State Accepted
Commit fc0b096c92918c2ba4d76411ea763fdeb2ef6b0d
Headers show
Series [1/2] ASoC: dt-bindings: nau8825: Add delay control for input path | expand

Commit Message

David Lin April 14, 2023, 10:39 a.m. UTC
Change the original fixed delay to the assignment from property. It will make
more flexible to different platforms for avoiding pop noise at the beginning
of recording.

Signed-off-by: David Lin <CTLIN0@nuvoton.com>
---
 sound/soc/codecs/nau8825.c | 8 +++++++-
 sound/soc/codecs/nau8825.h | 1 +
 2 files changed, 8 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/sound/soc/codecs/nau8825.c b/sound/soc/codecs/nau8825.c
index 4bffa9c20f2b..c4389f5fe603 100644
--- a/sound/soc/codecs/nau8825.c
+++ b/sound/soc/codecs/nau8825.c
@@ -919,7 +919,7 @@  static int nau8825_adc_event(struct snd_soc_dapm_widget *w,
 
 	switch (event) {
 	case SND_SOC_DAPM_POST_PMU:
-		msleep(125);
+		msleep(nau8825->adc_delay);
 		regmap_update_bits(nau8825->regmap, NAU8825_REG_ENA_CTRL,
 			NAU8825_ENABLE_ADC, NAU8825_ENABLE_ADC);
 		break;
@@ -2752,6 +2752,7 @@  static void nau8825_print_device_properties(struct nau8825 *nau8825)
 	dev_dbg(dev, "crosstalk-enable:     %d\n",
 			nau8825->xtalk_enable);
 	dev_dbg(dev, "adcout-drive-strong:  %d\n", nau8825->adcout_ds);
+	dev_dbg(dev, "adc-delay-ms:         %d\n", nau8825->adc_delay);
 }
 
 static int nau8825_read_device_properties(struct device *dev,
@@ -2819,6 +2820,11 @@  static int nau8825_read_device_properties(struct device *dev,
 	nau8825->xtalk_enable = device_property_read_bool(dev,
 		"nuvoton,crosstalk-enable");
 	nau8825->adcout_ds = device_property_read_bool(dev, "nuvoton,adcout-drive-strong");
+	ret = device_property_read_u32(dev, "nuvoton,adc-delay-ms", &nau8825->adc_delay);
+	if (ret)
+		nau8825->adc_delay = 125;
+	if (nau8825->adc_delay < 125 && nau8825->adc_delay > 500)
+		dev_warn(dev, "Please set the suitable delay time!\n");
 
 	nau8825->mclk = devm_clk_get(dev, "mclk");
 	if (PTR_ERR(nau8825->mclk) == -EPROBE_DEFER) {
diff --git a/sound/soc/codecs/nau8825.h b/sound/soc/codecs/nau8825.h
index 0c3a446e0e1a..44b62bc3880f 100644
--- a/sound/soc/codecs/nau8825.h
+++ b/sound/soc/codecs/nau8825.h
@@ -517,6 +517,7 @@  struct nau8825 {
 	int xtalk_enable;
 	bool xtalk_baktab_initialized; /* True if initialized. */
 	bool adcout_ds;
+	int adc_delay;
 };
 
 int nau8825_enable_jack_detect(struct snd_soc_component *component,