Re: [PATCH V2] ASoC - Add support for upto 16 channels on OMAP MCBSP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Nov 6, 2009 at 8:24 PM, Jarkko Nikula <jhnikula@xxxxxxxxx> wrote:
> On Thu, 05 Nov 2009 21:00:08 +0000
> Liam Girdwood <lrg@xxxxxxxxxxxxxxx> wrote:
>
>> From: Graeme Gregory <gg@xxxxxxxxxxxxxxx>
>>
>> This patch increases the number of supported audio channels from 4
>> to 16 and has been sponsored by Shotspotter Inc. It also fixes a
>> FSYNC rate calculation bug when McBSP is FSYNC master.
>>
> I would not call it as bug but more like an implementation
> restriction :-)
>
> But as the patch now requires that machine driver using OMAP as a
> master must provide the sample rate generator input clock frequency, I
> would like to hear how it will work on Pandora.
>
> Grazvydas: are you able to test is the Pandora still playing after applying
> patch [1] to omap-mcbsp.c and my patch below to omap3pandora.c?
>
> I made an assumption that input clock frequency on Pandora is
> 8 * 32 * sample_rate.

Seems to be working fine, tried playing several different sample rates
and also recording path. FYI pandora has TWL4030 256FS clock connected
to OMAP's CLKS pin.

Tested-by: Grazvydas Ignotas <notasas@xxxxxxxxx>

>
> --
> Jarkko
>
> 1.
> http://mailman.alsa-project.org/pipermail/alsa-devel/2009-November/022797.html
>
> ---
> diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c
> index ad219aa..d0949fe 100644
> --- a/sound/soc/omap/omap3pandora.c
> +++ b/sound/soc/omap/omap3pandora.c
> @@ -40,9 +40,12 @@
>
>  #define PREFIX "ASoC omap3pandora: "
>
> -static int omap3pandora_cmn_hw_params(struct snd_soc_dai *codec_dai,
> -       struct snd_soc_dai *cpu_dai, unsigned int fmt)
> +static int omap3pandora_cmn_hw_params(struct snd_pcm_substream *substream,
> +       struct snd_pcm_hw_params *params, unsigned int fmt)
>  {
> +       struct snd_soc_pcm_runtime *rtd = substream->private_data;
> +       struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
> +       struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
>        int ret;
>
>        /* Set codec DAI configuration */
> @@ -68,8 +71,9 @@ static int omap3pandora_cmn_hw_params(struct snd_soc_dai *codec_dai,
>        }
>
>        /* Set McBSP clock to external */
> -       ret = snd_soc_dai_set_sysclk(cpu_dai, OMAP_MCBSP_SYSCLK_CLKS_EXT, 0,
> -                                           SND_SOC_CLOCK_IN);
> +       ret = snd_soc_dai_set_sysclk(cpu_dai, OMAP_MCBSP_SYSCLK_CLKS_EXT,
> +                                    8 * 32 * params_rate(params),
> +                                    SND_SOC_CLOCK_IN);
>        if (ret < 0) {
>                pr_err(PREFIX "can't set cpu system clock\n");
>                return ret;
> @@ -87,11 +91,7 @@ static int omap3pandora_cmn_hw_params(struct snd_soc_dai *codec_dai,
>  static int omap3pandora_out_hw_params(struct snd_pcm_substream *substream,
>        struct snd_pcm_hw_params *params)
>  {
> -       struct snd_soc_pcm_runtime *rtd = substream->private_data;
> -       struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
> -       struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
> -
> -       return omap3pandora_cmn_hw_params(codec_dai, cpu_dai,
> +       return omap3pandora_cmn_hw_params(substream, params,
>                                          SND_SOC_DAIFMT_I2S |
>                                          SND_SOC_DAIFMT_IB_NF |
>                                          SND_SOC_DAIFMT_CBS_CFS);
> @@ -100,11 +100,7 @@ static int omap3pandora_out_hw_params(struct snd_pcm_substream *substream,
>  static int omap3pandora_in_hw_params(struct snd_pcm_substream *substream,
>        struct snd_pcm_hw_params *params)
>  {
> -       struct snd_soc_pcm_runtime *rtd = substream->private_data;
> -       struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
> -       struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
> -
> -       return omap3pandora_cmn_hw_params(codec_dai, cpu_dai,
> +       return omap3pandora_cmn_hw_params(substream, params,
>                                          SND_SOC_DAIFMT_I2S |
>                                          SND_SOC_DAIFMT_NB_NF |
>                                          SND_SOC_DAIFMT_CBS_CFS);
>
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel


[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux