[alsa-devel] [PATCH] ASoC: cs42l73: Don't mix SNDRV_PCM_RATE_KNOT with specific rates

Lars-Peter Clausen lars at metafoo.de
Tue Feb 4 22:01:13 CET 2014

On 02/04/2014 09:30 PM, Austin, Brian wrote:
>> On Feb 4, 2014, at 13:55, "Lars-Peter Clausen" <lars at metafoo.de> wrote:
>> SNDRV_PCM_RATE_KNOT means that the device can support rates that can not be
>> expressed using the rate bits. The driver will provide a list of those rates
>> specified through constraints. Any rate bits that are set in the rates mask will
>> be ignored. So setting other rate bits besides SNDRV_PCM_RATE_KNOT wont have any
>> effect, but might be confusing to the casual reader, so remove them.
>> Signed-off-by: Lars-Peter Clausen <lars at metafoo.de>
> I don't see how this makes it any less confusing to the casual reader. I think the
 > define works well in the descriptive sense. maybe a comment about what 
KNOT really
 > means instead of just using a non-rate define?

The thing is SNDRV_PCM_RATE_8000_48000 does something if 
SNDRV_PCM_RATE_{KNOT,CONTINUOUS} is not set, but does nothing at all if 
either of them is set. While when reading the code it will, in my opinion, 
give the impression that the rates that are specified by 
SNDRV_PCM_RATE_8000_48000 are definitely among the supported rates and 
somewhere else additional rates are specified as well. But this is not the 
case all the supported rates need to be specified somewhere else, e.g. by a 
rate list constraint. I find this confusing when casually reading the code. 
And this is the only driver that does it.

Also there was a bug, which is now fixed, where additionally specifying 
rates in the rate bitmap when KNOT or CONTINUOUS was set did something, but 
did the wrong thing and caused additional rates which where outside of the 
range of the rates set in the bitmap to be ignored. Better avoid that by not 
mixing KNOT or CONTINUOUS with other rate bits.

- Lars

More information about the Alsa-devel mailing list