* [PATCH] ASoC: rk3399_gru_sound: fix recording pop at first attempt @ 2016-09-19 14:29 Xing Zheng [not found] ` <1474295379-16936-1-git-send-email-zhengxing-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 0 siblings, 1 reply; 3+ messages in thread From: Xing Zheng @ 2016-09-19 14:29 UTC (permalink / raw) To: linux-rockchip, woojoo.lee Cc: dianders, heiko, smbarber, hychao, cychiang, Xing Zheng, Liam Girdwood, Mark Brown, Rob Herring, Mark Rutland, Jaroslav Kysela, Takashi Iwai, alsa-devel, devicetree, linux-arm-kernel, linux-kernel From: Wonjoon Lee <woojoo.lee@samsung.com> Pop happens when mclk applied but dmic's own boot-time Specify dmic delay times in dt to make sure clocks are ready earlier than dmic working Signed-off-by: Wonjoon Lee <woojoo.lee@samsung.com> Signed-off-by: Xing Zheng <zhengxing@rock-chips.com> --- .../bindings/sound/rockchip,rk3399-gru-sound.txt | 6 ++++++ sound/soc/rockchip/rk3399_gru_sound.c | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt b/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt index f19b6c8..b7dd3ab 100644 --- a/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt +++ b/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt @@ -6,6 +6,12 @@ Required properties: connected to the codecs - rockchip,codec: The phandle of the MAX98357A/RT5514/DA7219 codecs +Optional properties: +- dmic-delay : specify delay time for DMIC ready. + If this option is specified, which means it's required dmic need + delay for DMIC to ready so that rt5514 can avoid recording before + DMIC send valid data + Example: sound { diff --git a/sound/soc/rockchip/rk3399_gru_sound.c b/sound/soc/rockchip/rk3399_gru_sound.c index 164b6da..6ab838b 100644 --- a/sound/soc/rockchip/rk3399_gru_sound.c +++ b/sound/soc/rockchip/rk3399_gru_sound.c @@ -37,6 +37,8 @@ #define SOUND_FS 256 +unsigned int rt5514_dmic_delay; + static struct snd_soc_jack rockchip_sound_jack; static const struct snd_soc_dapm_widget rockchip_dapm_widgets[] = { @@ -122,6 +124,9 @@ static int rockchip_sound_rt5514_hw_params(struct snd_pcm_substream *substream, return ret; } + /* Wait for DMIC stable */ + msleep(rt5514_dmic_delay); + return 0; } @@ -334,6 +339,15 @@ static int rockchip_sound_probe(struct platform_device *pdev) return -ENODEV; } + /* Set DMIC delay */ + ret = device_property_read_u32(&pdev->dev, "dmic-delay", + &rt5514_dmic_delay); + if (ret) { + rt5514_dmic_delay = 0; + dev_dbg(&pdev->dev, + "no optional property 'dmic-delay' found, default: no delay\n"); + } + rockchip_dailinks[DAILINK_RT5514_DSP].cpu_name = kstrdup_const(dev_name(dev), GFP_KERNEL); rockchip_dailinks[DAILINK_RT5514_DSP].cpu_dai_name = kstrdup_const(dev_name(dev), GFP_KERNEL); rockchip_dailinks[DAILINK_RT5514_DSP].platform_name = kstrdup_const(dev_name(dev), GFP_KERNEL); -- 1.7.9.5 ^ permalink raw reply related [flat|nested] 3+ messages in thread
[parent not found: <1474295379-16936-1-git-send-email-zhengxing-TNX95d0MmH7DzftRWevZcw@public.gmane.org>]
* Re: [PATCH] ASoC: rk3399_gru_sound: fix recording pop at first attempt [not found] ` <1474295379-16936-1-git-send-email-zhengxing-TNX95d0MmH7DzftRWevZcw@public.gmane.org> @ 2016-09-19 14:44 ` Mark Rutland 2016-09-22 13:50 ` Xing Zheng 0 siblings, 1 reply; 3+ messages in thread From: Mark Rutland @ 2016-09-19 14:44 UTC (permalink / raw) To: Xing Zheng Cc: linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, woojoo.lee-Sze3O3UU22JBDgjK7y7TUQ, dianders-F7+t8E8rja9g9hUCZPvPmw, heiko-4mtYJXux2i+zQB+pC5nmwQ, smbarber-hpIqsD4AKlfQT0dZR+AlfA, hychao-hpIqsD4AKlfQT0dZR+AlfA, cychiang-hpIqsD4AKlfQT0dZR+AlfA, Liam Girdwood, Mark Brown, Rob Herring, Jaroslav Kysela, Takashi Iwai, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, linux-kernel-u79uwXL29TY76Z2rM5mHXA On Mon, Sep 19, 2016 at 10:29:39PM +0800, Xing Zheng wrote: > From: Wonjoon Lee <woojoo.lee-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> > > Pop happens when mclk applied but dmic's own boot-time > Specify dmic delay times in dt to make sure > clocks are ready earlier than dmic working > > Signed-off-by: Wonjoon Lee <woojoo.lee-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> > Signed-off-by: Xing Zheng <zhengxing-TNX95d0MmH7DzftRWevZcw@public.gmane.org> > --- > > .../bindings/sound/rockchip,rk3399-gru-sound.txt | 6 ++++++ > sound/soc/rockchip/rk3399_gru_sound.c | 14 ++++++++++++++ > 2 files changed, 20 insertions(+) > > diff --git a/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt b/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt > index f19b6c8..b7dd3ab 100644 > --- a/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt > +++ b/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt > @@ -6,6 +6,12 @@ Required properties: > connected to the codecs > - rockchip,codec: The phandle of the MAX98357A/RT5514/DA7219 codecs > > +Optional properties: > +- dmic-delay : specify delay time for DMIC ready. > + If this option is specified, which means it's required dmic need > + delay for DMIC to ready so that rt5514 can avoid recording before > + DMIC send valid data What units is this in? Per the code it looks like ms, so if we follow Documentation/devicetree/bindings/property-units.txt, thous should be named something like dmic-enable-delay-ms. That said, do we even need a property for this? Does this vary much in practice? If it does, can we not derive this delay from other information (e.g. the rates of input clocks and so on)? What exactly determines the necessary delay? Thanks, Mark. > > sound { > diff --git a/sound/soc/rockchip/rk3399_gru_sound.c b/sound/soc/rockchip/rk3399_gru_sound.c > index 164b6da..6ab838b 100644 > --- a/sound/soc/rockchip/rk3399_gru_sound.c > +++ b/sound/soc/rockchip/rk3399_gru_sound.c > @@ -37,6 +37,8 @@ > > #define SOUND_FS 256 > > +unsigned int rt5514_dmic_delay; > + > static struct snd_soc_jack rockchip_sound_jack; > > static const struct snd_soc_dapm_widget rockchip_dapm_widgets[] = { > @@ -122,6 +124,9 @@ static int rockchip_sound_rt5514_hw_params(struct snd_pcm_substream *substream, > return ret; > } > > + /* Wait for DMIC stable */ > + msleep(rt5514_dmic_delay); > + > return 0; > } > > @@ -334,6 +339,15 @@ static int rockchip_sound_probe(struct platform_device *pdev) > return -ENODEV; > } > > + /* Set DMIC delay */ > + ret = device_property_read_u32(&pdev->dev, "dmic-delay", > + &rt5514_dmic_delay); > + if (ret) { > + rt5514_dmic_delay = 0; > + dev_dbg(&pdev->dev, > + "no optional property 'dmic-delay' found, default: no delay\n"); > + } > + > rockchip_dailinks[DAILINK_RT5514_DSP].cpu_name = kstrdup_const(dev_name(dev), GFP_KERNEL); > rockchip_dailinks[DAILINK_RT5514_DSP].cpu_dai_name = kstrdup_const(dev_name(dev), GFP_KERNEL); > rockchip_dailinks[DAILINK_RT5514_DSP].platform_name = kstrdup_const(dev_name(dev), GFP_KERNEL); > -- > 1.7.9.5 > > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] ASoC: rk3399_gru_sound: fix recording pop at first attempt 2016-09-19 14:44 ` Mark Rutland @ 2016-09-22 13:50 ` Xing Zheng 0 siblings, 0 replies; 3+ messages in thread From: Xing Zheng @ 2016-09-22 13:50 UTC (permalink / raw) To: Mark Rutland Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, alsa-devel-K7yf7f+aM1XWsZ/bQMPhNw, cychiang-hpIqsD4AKlfQT0dZR+AlfA, hychao-hpIqsD4AKlfQT0dZR+AlfA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, Takashi Iwai, dianders-F7+t8E8rja9g9hUCZPvPmw, Rob Herring, Liam Girdwood, linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Mark Brown, smbarber-hpIqsD4AKlfQT0dZR+AlfA, woojoo.lee-Sze3O3UU22JBDgjK7y7TUQ, Jaroslav Kysela, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, heiko-4mtYJXux2i+zQB+pC5nmwQ Hi Mark, On 2016年09月19日 22:44, Mark Rutland wrote: > On Mon, Sep 19, 2016 at 10:29:39PM +0800, Xing Zheng wrote: >> From: Wonjoon Lee <woojoo.lee@samsung.com> >> >> Pop happens when mclk applied but dmic's own boot-time >> Specify dmic delay times in dt to make sure >> clocks are ready earlier than dmic working >> >> Signed-off-by: Wonjoon Lee <woojoo.lee@samsung.com> >> Signed-off-by: Xing Zheng <zhengxing@rock-chips.com> >> --- >> >> .../bindings/sound/rockchip,rk3399-gru-sound.txt | 6 ++++++ >> sound/soc/rockchip/rk3399_gru_sound.c | 14 ++++++++++++++ >> 2 files changed, 20 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt b/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt >> index f19b6c8..b7dd3ab 100644 >> --- a/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt >> +++ b/Documentation/devicetree/bindings/sound/rockchip,rk3399-gru-sound.txt >> @@ -6,6 +6,12 @@ Required properties: >> connected to the codecs >> - rockchip,codec: The phandle of the MAX98357A/RT5514/DA7219 codecs >> >> +Optional properties: >> +- dmic-delay : specify delay time for DMIC ready. >> + If this option is specified, which means it's required dmic need >> + delay for DMIC to ready so that rt5514 can avoid recording before >> + DMIC send valid data > What units is this in? Per the code it looks like ms, so if we follow > Documentation/devicetree/bindings/property-units.txt, thous should be > named something like dmic-enable-delay-ms. OK, the "dmic-wakeup-delay-ms" have been done. > That said, do we even need a property for this? Does this vary much in > practice? > > If it does, can we not derive this delay from other information (e.g. > the rates of input clocks and so on)? What exactly determines the > necessary delay? Yeah, the DMIC spec indicates wake-up time as 15ms max, so we need to start recording 15ms after MCLK after testing. @Woojoo, please correct me if I was wrong. Thanks. > > Thanks, > Mark. > >> >> sound { >> diff --git a/sound/soc/rockchip/rk3399_gru_sound.c b/sound/soc/rockchip/rk3399_gru_sound.c >> index 164b6da..6ab838b 100644 >> --- a/sound/soc/rockchip/rk3399_gru_sound.c >> +++ b/sound/soc/rockchip/rk3399_gru_sound.c >> @@ -37,6 +37,8 @@ >> >> #define SOUND_FS 256 >> >> +unsigned int rt5514_dmic_delay; >> + >> static struct snd_soc_jack rockchip_sound_jack; >> >> static const struct snd_soc_dapm_widget rockchip_dapm_widgets[] = { >> @@ -122,6 +124,9 @@ static int rockchip_sound_rt5514_hw_params(struct snd_pcm_substream *substream, >> return ret; >> } >> >> + /* Wait for DMIC stable */ >> + msleep(rt5514_dmic_delay); >> + >> return 0; >> } >> >> @@ -334,6 +339,15 @@ static int rockchip_sound_probe(struct platform_device *pdev) >> return -ENODEV; >> } >> >> + /* Set DMIC delay */ >> + ret = device_property_read_u32(&pdev->dev, "dmic-delay", >> + &rt5514_dmic_delay); >> + if (ret) { >> + rt5514_dmic_delay = 0; >> + dev_dbg(&pdev->dev, >> + "no optional property 'dmic-delay' found, default: no delay\n"); >> + } >> + >> rockchip_dailinks[DAILINK_RT5514_DSP].cpu_name = kstrdup_const(dev_name(dev), GFP_KERNEL); >> rockchip_dailinks[DAILINK_RT5514_DSP].cpu_dai_name = kstrdup_const(dev_name(dev), GFP_KERNEL); >> rockchip_dailinks[DAILINK_RT5514_DSP].platform_name = kstrdup_const(dev_name(dev), GFP_KERNEL); >> -- >> 1.7.9.5 >> >> > > -- - Xing Zheng _______________________________________________ Linux-rockchip mailing list Linux-rockchip@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-rockchip ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-09-22 13:50 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-09-19 14:29 [PATCH] ASoC: rk3399_gru_sound: fix recording pop at first attempt Xing Zheng [not found] ` <1474295379-16936-1-git-send-email-zhengxing-TNX95d0MmH7DzftRWevZcw@public.gmane.org> 2016-09-19 14:44 ` Mark Rutland 2016-09-22 13:50 ` Xing Zheng
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).