At Wed, 25 Jul 2007 17:08:41 +0200, I wrote:
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.
... of course, this assumes that codec and platform have the sane rate setting. ASoC should do some sanity checks...
Takashi