Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

ASoC: nau8821: Add delay control for ADC

Merge series from Seven Lee <wtli@nuvoton.com>:

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.

+17 -10
+7
Documentation/devicetree/bindings/sound/nuvoton,nau8821.yaml
··· 103 103 just limited to the left adc for design demand. 104 104 type: boolean 105 105 106 + nuvoton,adc-delay-ms: 107 + description: Delay (in ms) to make input path stable and avoid pop noise. 108 + minimum: 125 109 + maximum: 500 110 + default: 125 111 + 106 112 '#sound-dai-cells': 107 113 const: 0 108 114 ··· 142 136 nuvoton,jack-eject-debounce = <0>; 143 137 nuvoton,dmic-clk-threshold = <3072000>; 144 138 nuvoton,dmic-slew-rate = <0>; 139 + nuvoton,adc-delay-ms = <125>; 145 140 #sound-dai-cells = <0>; 146 141 }; 147 142 };
+9 -10
sound/soc/codecs/nau8821.c
··· 511 511 512 512 switch (event) { 513 513 case SND_SOC_DAPM_POST_PMU: 514 - msleep(125); 515 - regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, 516 - NAU8821_EN_ADCL, NAU8821_EN_ADCL); 514 + msleep(nau8821->adc_delay); 517 515 break; 518 516 case SND_SOC_DAPM_POST_PMD: 519 - regmap_update_bits(nau8821->regmap, 520 - NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCL, 0); 521 517 break; 522 518 default: 523 519 return -EINVAL; ··· 531 535 532 536 switch (event) { 533 537 case SND_SOC_DAPM_POST_PMU: 534 - msleep(125); 535 - regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, 536 - NAU8821_EN_ADCR, NAU8821_EN_ADCR); 538 + msleep(nau8821->adc_delay); 537 539 break; 538 540 case SND_SOC_DAPM_POST_PMD: 539 - regmap_update_bits(nau8821->regmap, 540 - NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCR, 0); 541 541 break; 542 542 default: 543 543 return -EINVAL; ··· 1689 1697 dev_dbg(dev, "dmic-clk-threshold: %d\n", 1690 1698 nau8821->dmic_clk_threshold); 1691 1699 dev_dbg(dev, "key_enable: %d\n", nau8821->key_enable); 1700 + dev_dbg(dev, "adc-delay-ms: %d\n", nau8821->adc_delay); 1692 1701 } 1693 1702 1694 1703 static int nau8821_read_device_properties(struct device *dev, ··· 1735 1742 &nau8821->dmic_slew_rate); 1736 1743 if (ret) 1737 1744 nau8821->dmic_slew_rate = 0; 1745 + ret = device_property_read_u32(dev, "nuvoton,adc-delay-ms", 1746 + &nau8821->adc_delay); 1747 + if (ret) 1748 + nau8821->adc_delay = 125; 1749 + if (nau8821->adc_delay < 125 || nau8821->adc_delay > 500) 1750 + dev_warn(dev, "Please set the suitable delay time!\n"); 1738 1751 1739 1752 return 0; 1740 1753 }
+1
sound/soc/codecs/nau8821.h
··· 577 577 int dmic_clk_threshold; 578 578 int dmic_slew_rate; 579 579 int key_enable; 580 + int adc_delay; 580 581 }; 581 582 582 583 int nau8821_enable_jack_detect(struct snd_soc_component *component,