[alsa-devel] How do I tell ALSA that my driver supports every possible sample rate?

Takashi Iwai tiwai at suse.de
Wed Jul 25 17:08:41 CEST 2007


At Wed, 25 Jul 2007 09:37:34 -0500,
Timur Tabi wrote:
> 
> Takashi Iwai wrote:
> 
> >> So can I do this?
> >>
> >> static const struct snd_pcm_hardware mpc86xx_pcm_hardware = {
> >>
> >> 	.rates			= SNDRV_PCM_RATE_CONTINUOUS,
> >> 	.rate_min		= 1,
> >> 	.rate_max		= (unsigned int) -1,
> > 
> > In theory, yes, but these rate_min and rate_max are nothing but
> > confusing in practice.  Your hardware won't support definitely such
> > rates, but the application can't know.  Set some reasonable values
> > there.
> 
> This is an ASOC driver.  My understanding is that ASOC will take all
> the values from the machine, PCM, I2S, and codec drivers and create
> the subset that matches all drivers.  That's the point I was trying
> to make: my PCM driver does *not* decide what the capabilities of
> the system are, because my DMA controller can handle all speeds.  So
> I don't want to put some arbitrary limits in the PCM driver, and
> then perhaps one day it gets attached to a codec driver that can
> handle 4000Hz, but ASOC won't allow it because I used
> SNDRV_PCM_RATE_8000_192000 | SNDRV_PCM_RATES_5512 in my PCM driver.
> ASOC would incorrectly believe that the PCM driver can't handle
> 4000Hz. 

Then,
	rates = -1U,
	rate_min = 0,
	rate_max = -1U,
are the correct values.

Takashi


More information about the Alsa-devel mailing list