Loading Documentation/devicetree/bindings/sound/nuvoton,nau8821.yaml +7 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,12 @@ properties: just limited to the left adc for design demand. type: boolean nuvoton,adc-delay-ms: description: Delay (in ms) to make input path stable and avoid pop noise. minimum: 125 maximum: 500 default: 125 '#sound-dai-cells': const: 0 Loading Loading @@ -136,6 +142,7 @@ examples: nuvoton,jack-eject-debounce = <0>; nuvoton,dmic-clk-threshold = <3072000>; nuvoton,dmic-slew-rate = <0>; nuvoton,adc-delay-ms = <125>; #sound-dai-cells = <0>; }; }; sound/soc/codecs/nau8821.c +9 −10 Original line number Diff line number Diff line Loading @@ -511,13 +511,9 @@ static int nau8821_left_adc_event(struct snd_soc_dapm_widget *w, switch (event) { case SND_SOC_DAPM_POST_PMU: msleep(125); regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCL, NAU8821_EN_ADCL); msleep(nau8821->adc_delay); break; case SND_SOC_DAPM_POST_PMD: regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCL, 0); break; default: return -EINVAL; Loading @@ -535,13 +531,9 @@ static int nau8821_right_adc_event(struct snd_soc_dapm_widget *w, switch (event) { case SND_SOC_DAPM_POST_PMU: msleep(125); regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCR, NAU8821_EN_ADCR); msleep(nau8821->adc_delay); break; case SND_SOC_DAPM_POST_PMD: regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCR, 0); break; default: return -EINVAL; Loading Loading @@ -1697,6 +1689,7 @@ static void nau8821_print_device_properties(struct nau8821 *nau8821) dev_dbg(dev, "dmic-clk-threshold: %d\n", nau8821->dmic_clk_threshold); dev_dbg(dev, "key_enable: %d\n", nau8821->key_enable); dev_dbg(dev, "adc-delay-ms: %d\n", nau8821->adc_delay); } static int nau8821_read_device_properties(struct device *dev, Loading Loading @@ -1742,6 +1735,12 @@ static int nau8821_read_device_properties(struct device *dev, &nau8821->dmic_slew_rate); if (ret) nau8821->dmic_slew_rate = 0; ret = device_property_read_u32(dev, "nuvoton,adc-delay-ms", &nau8821->adc_delay); if (ret) nau8821->adc_delay = 125; if (nau8821->adc_delay < 125 || nau8821->adc_delay > 500) dev_warn(dev, "Please set the suitable delay time!\n"); return 0; } Loading sound/soc/codecs/nau8821.h +1 −0 Original line number Diff line number Diff line Loading @@ -577,6 +577,7 @@ struct nau8821 { int dmic_clk_threshold; int dmic_slew_rate; int key_enable; int adc_delay; }; int nau8821_enable_jack_detect(struct snd_soc_component *component, Loading Loading
Documentation/devicetree/bindings/sound/nuvoton,nau8821.yaml +7 −0 Original line number Diff line number Diff line Loading @@ -103,6 +103,12 @@ properties: just limited to the left adc for design demand. type: boolean nuvoton,adc-delay-ms: description: Delay (in ms) to make input path stable and avoid pop noise. minimum: 125 maximum: 500 default: 125 '#sound-dai-cells': const: 0 Loading Loading @@ -136,6 +142,7 @@ examples: nuvoton,jack-eject-debounce = <0>; nuvoton,dmic-clk-threshold = <3072000>; nuvoton,dmic-slew-rate = <0>; nuvoton,adc-delay-ms = <125>; #sound-dai-cells = <0>; }; };
sound/soc/codecs/nau8821.c +9 −10 Original line number Diff line number Diff line Loading @@ -511,13 +511,9 @@ static int nau8821_left_adc_event(struct snd_soc_dapm_widget *w, switch (event) { case SND_SOC_DAPM_POST_PMU: msleep(125); regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCL, NAU8821_EN_ADCL); msleep(nau8821->adc_delay); break; case SND_SOC_DAPM_POST_PMD: regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCL, 0); break; default: return -EINVAL; Loading @@ -535,13 +531,9 @@ static int nau8821_right_adc_event(struct snd_soc_dapm_widget *w, switch (event) { case SND_SOC_DAPM_POST_PMU: msleep(125); regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCR, NAU8821_EN_ADCR); msleep(nau8821->adc_delay); break; case SND_SOC_DAPM_POST_PMD: regmap_update_bits(nau8821->regmap, NAU8821_R01_ENA_CTRL, NAU8821_EN_ADCR, 0); break; default: return -EINVAL; Loading Loading @@ -1697,6 +1689,7 @@ static void nau8821_print_device_properties(struct nau8821 *nau8821) dev_dbg(dev, "dmic-clk-threshold: %d\n", nau8821->dmic_clk_threshold); dev_dbg(dev, "key_enable: %d\n", nau8821->key_enable); dev_dbg(dev, "adc-delay-ms: %d\n", nau8821->adc_delay); } static int nau8821_read_device_properties(struct device *dev, Loading Loading @@ -1742,6 +1735,12 @@ static int nau8821_read_device_properties(struct device *dev, &nau8821->dmic_slew_rate); if (ret) nau8821->dmic_slew_rate = 0; ret = device_property_read_u32(dev, "nuvoton,adc-delay-ms", &nau8821->adc_delay); if (ret) nau8821->adc_delay = 125; if (nau8821->adc_delay < 125 || nau8821->adc_delay > 500) dev_warn(dev, "Please set the suitable delay time!\n"); return 0; } Loading
sound/soc/codecs/nau8821.h +1 −0 Original line number Diff line number Diff line Loading @@ -577,6 +577,7 @@ struct nau8821 { int dmic_clk_threshold; int dmic_slew_rate; int key_enable; int adc_delay; }; int nau8821_enable_jack_detect(struct snd_soc_component *component, Loading