[alsa-devel] ASoC : question about custom rate

Matt Flax flatmax at flatmax.org
Wed Sep 10 01:45:55 CEST 2014


On 09/09/14 20:44, Lars-Peter Clausen wrote:
> On 09/09/2014 10:43 AM, Matt Flax wrote:
>> Hi there,
>>
>> I have an ASIC running on an ASoC with a custom rate @ 18750 Hz.
>> I would like ALSA to report the correct rate.
>>
>> If I do nothing, then the following reports 16000 Hz :
>> cat /proc/asound/card0/pcm0c/sub0/hw_params
>>
>> I have verified that the hardware is running at the expected 18750 Hz.
>> I am wondering what/where is the correct place to setup the actual 
>> rate ?
>>
>> I am trying to set the rates at startup like so but ALSA will not 
>> work with
>> the driver when I do this :
>>
>> static int implant_startup(struct snd_pcm_substream *substream, struct
>> snd_soc_dai *dai)
>> {
>>      snd_pcm_hw_constraint_minmax(substream->runtime,
>> SNDRV_PCM_HW_PARAM_RATE, 18750, 18750);
>
>
> This is the correct approach. But it is quite likely that your I2S 
> driver will set additional constraints (e.g. just 16k, 32k, etc.) that 
> results in an empty list for the rate constraints. If the I2S driver 
> works fine maybe change the constraints to only set a minimum and 
> maximum rate instead of specific rates.

Yes, you are right, the i2s driver uses the macro SNDRV_PCM_RATE_8000_96000.

I have used your advice to test by manually setting the i2s rates to 
SNDRV_PCM_RATE_CONTINUOUS in the i2s driver's src code.
Now the rate is reported correctly in software. Thank you.

Is there a way to access the underlying i2s driver from within my 
codec's startup file so that I don't need to alter the core driver 
source code ?

thanks
Matt


More information about the Alsa-devel mailing list