[alsa-devel] [RFC PATCH] ASoC: omap-mcbsp: Add support for highter rate up to 384000

Peter Ujfalusi peter.ujfalusi at ti.com
Fri Aug 9 07:18:23 CEST 2013


On 08/08/2013 02:04 PM, Michael Trimarchi wrote:
> On Thu, Aug 08, 2013 at 01:51:25PM +0300, Peter Ujfalusi wrote:
>> On 08/07/2013 09:28 PM, Michael Trimarchi wrote:
>>> Add support for highter rate up to 384000Khz. There are codecs in the
>>> market that can play up to this frequency.
>>> Test was done just with:
>>>
>>> #define OMAP_MCBSP_RATES	(SNDRV_PCM_RATE_8000_192000)
>>>
>>> playing wav file 32bit/192000Khz stereo. Some glitch has observed
>>> but this should depend on the selected min buffer bytes that was
>>> left untouched in aplay and in the omap-pcm driver.
>>>
>>> Signed-off-by: Michael Trimarchi <michael at amarulasolutions.com>
>>> ---
>>>  sound/soc/omap/omap-mcbsp.c |    8 +++++++-
>>>  1 file changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c
>>> index 7483efb..1e95f6a 100644
>>> --- a/sound/soc/omap/omap-mcbsp.c
>>> +++ b/sound/soc/omap/omap-mcbsp.c
>>> @@ -39,7 +39,9 @@
>>>  #include "mcbsp.h"
>>>  #include "omap-mcbsp.h"
>>>  
>>> -#define OMAP_MCBSP_RATES	(SNDRV_PCM_RATE_8000_96000)
>>> +#define OMAP_MCBSP_RATES	(SNDRV_PCM_RATE_8000_192000 |		\
>>
>> I think only this change is enough for what you want to achieve.
>>
>>> +				 SNDRV_PCM_RATE_CONTINUOUS |		\
>>> +				 SNDRV_PCM_RATE_KNOT)
>>
>> The _KNOT is for sure not needed and I would not set the CONTINUOUS either.
> 
> pcm5102pw is a codec that support 384000 rate so I think that PCM_RATE_KNOT
> is requested for such rate. Correct?

Yes, looks that way. I had overlooked the 384000 KHz...

>>
>>>  
>>>  #define OMAP_MCBSP_SOC_SINGLE_S16_EXT(xname, xmin, xmax, \
>>>  	xhandler_get, xhandler_put) \
>>> @@ -574,11 +576,15 @@ static struct snd_soc_dai_driver omap_mcbsp_dai = {
>>>  		.channels_max = 16,
>>>  		.rates = OMAP_MCBSP_RATES,
>>>  		.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
>>> +		.rate_min = 8000,
>>> +		.rate_max = 384000,
>>
>> Why you want to limit the rates here?
>>
> 
> I didn't find in the market somenthing up to 384000.

Sure, but it is not correct to say that McBSP supports rates up to 384000.
McBSP have constraint on the BCLK speed up to 48MHz. So while
32bit/stereo/384000 is OK, 32bit/4channel/384000 is not, but
16bit/4channel/384000 is again good.
When McBSP is master we have a check for the clock speed. We might need to
have similar for McBSP slave mode, but I don't think we are going to hit the
48MHz limit anyways.


> 
> Michael
> 
>>>  	},
>>>  	.capture = {
>>>  		.channels_min = 1,
>>>  		.channels_max = 16,
>>>  		.rates = OMAP_MCBSP_RATES,
>>> +		.rate_min = 8000,
>>> +		.rate_max = 384000,
>>
>> Same here, do not set these.
>>
>>>  		.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE,
>>>  	},
>>>  	.ops = &mcbsp_dai_ops,
>>>
>>
>>
>> -- 
>> Péter
> 


-- 
Péter


More information about the Alsa-devel mailing list