Couple of fixes to davinci-mcasp driver
cover Couple of fixes to davinci-mcasp driver
These changes target to sii9022 HDMI audio support, but are independent fixes.
Jyri Sarha (2):
ASoC: davinci-mcasp: Add dependecy to SND_DAVINCI_SOC or SND_OMAP_SOC
ASoC: davinci-mcasp: Allow best effort in selecting BCLK divider
sound/soc/davinci/Kconfig | 1 + sound/soc/davinci/davinci-mcasp.c | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-)
Signature · 1 line
1.7.9.5
PATCH 1/2 ASoC: davinci-mcasp: Add dependecy to SND_DAVINCI_SOC or SND_OMAP_SOC
Fixes build with SND_DAVINCI_SOC or SND_OMAP_SOC alone and adds build dependecy to SND_DAVINCI_SOC or SND_OMAP_SOC.
--- sound/soc/davinci/Kconfig | 1 + sound/soc/davinci/davinci-mcasp.c | 8 ++++++++ 2 files changed, 9 insertions(+)
sound/soc/davinci/Kconfig +1 -0
@@ -6,6 +6,7 @@ config SND_DAVINCI_SOC_I2S tristate config SND_DAVINCI_SOC_MCASP + depends on SND_DAVINCI_SOC || SND_OMAP_SOC tristate config SND_DAVINCI_SOC_VCIF
sound/soc/davinci/davinci-mcasp.c +8 -0
@@ -1223,14 +1223,22 @@ static int davinci_mcasp_probe(struct platform_device *pdev) goto err;switch (mcasp->version) { +#if IS_BUILTIN (CONFIG_SND_DAVINCI_SOC ) || \ + (IS_MODULE (CONFIG_SND_DAVINCI_SOC_MCASP ) && \ +IS_MODULE (CONFIG_SND_DAVINCI_SOC ))case MCASP_VERSION_1 :case MCASP_VERSION_2 :case MCASP_VERSION_3 : ret =davinci_soc_platform_register (&pdev->dev);break ; +#endif +#if IS_BUILTIN (CONFIG_SND_OMAP_SOC ) || \ + (IS_MODULE (CONFIG_SND_DAVINCI_SOC_MCASP ) && \ +IS_MODULE (CONFIG_SND_OMAP_SOC ))case MCASP_VERSION_4 : ret =omap_pcm_platform_register (&pdev->dev);break ; +#endif default :dev_err (&pdev->dev,"Invalid McASP version: %d\n" , mcasp->version);
Signature · 1 line
1.7.9.5
Re: [PATCH 1/2] ASoC: davinci-mcasp: Add dependecy to SND_DAVINCI_SOC or SND_OMAP_SOC
Quoted 2 lines · Jyri Sarha
Fixes build with
SND_DAVINCI_SOCorSND_OMAP_SOCalone and adds build dependecy toSND_DAVINCI_SOCorSND_OMAP_SOC.
Applied, thanks.
PATCH 2/2 ASoC: davinci-mcasp: Allow best effort in selecting BCLK divider
In reply to Jyri SarhaDo not fail if the exact BLCK rate can not be produced, just print a warning. Check that sysclk frequency is set before implicitly setting the BCLK divider.
--- sound/soc/davinci/davinci-mcasp.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)
sound/soc/davinci/davinci-mcasp.c +9 -5
@@ -676,14 +676,18 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream,int ret;/* If mcasp is BCLK master we need to set BCLK divider */ -if (mcasp->bclk_master) { +if (mcasp->bclk_master && mcasp->sysclk_freq) {unsigned int bclk_freq =snd_soc_params_to_bclk (params); +unsigned int div = mcasp->sysclk_freq / bclk_freq;if (mcasp->sysclk_freq % bclk_freq !=0 ) { -dev_err (mcasp->dev,"Can't produce required BCLK\n" ); -return -EINVAL ; +if (((mcasp->sysclk_freq / div) - bclk_freq) > + (bclk_freq - (mcasp->sysclk_freq / (div+1 )))) + div++; +dev_warn (mcasp->dev, +"Inaccurate BCLK: %u Hz / %u != %u Hz\n" , + mcasp->sysclk_freq, div, bclk_freq); } -davinci_mcasp_set_clkdiv ( - cpu_dai,1 , mcasp->sysclk_freq / bclk_freq); +davinci_mcasp_set_clkdiv (cpu_dai,1 , div); } ret = mcasp_common_hw_param(mcasp, substream->stream,
Signature · 1 line
1.7.9.5
Mark Brown
maintainerRe: [PATCH 2/2] ASoC: davinci-mcasp: Allow best effort in selecting BCLK divider
Quoted 3 lines · Jyri Sarha
Do not fail if the exact BLCK rate can not be produced, just print a warning. Check that sysclk frequency is set before implicitly setting the BCLK divider.
I've appled this but not as a fix - it's kind of on the edge if we should be doing this at all, it's helpful for interoperability but getting an inexact frequency obviously impacts the resulting audio.