Hey,
On Mon, 24 Aug 2020, Pawel Harlozinski wrote:
Set SDnFMT depending on which format was given, as maxbps only describes container size.
hmm, I'm not entirely sure that is correct. Usage may be a bit varied, but most places in existing code, "maxbps" is treated as number of significant bits, not the container size. E.g. in hdac_hda.c:
» if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) » » maxbps = dai->driver->playback.sig_bits; » else » » maxbps = dai->driver->capture.sig_bits;
It would seem "maxbps" is a bit superfluous given the same information can be relayed in "format" as well. But currently it's still used. E.g. if you look at snd_hdac_query_supported_pcm(), if codec reports 24bit support, format is always set to SNDRV_PCM_FMTBIT_S32_LE, even if only 24bit are valid. So snd_pcm_format_width() will not return the expected significant bits info, but you have to use "maxbps". So original code seems correct (or at least you'd need to update both places).
Br, Kai