[PATCH v2 1/1] ALSA: hda: Refactor calculating SDnFMT according to specification
Takashi Iwai
tiwai at suse.de
Mon Sep 21 12:01:15 CEST 2020
On Mon, 21 Sep 2020 11:42:00 +0200,
Pawel Harlozinski wrote:
>
> Fix setting SDnFMT based on High Definition Audio Specification Rev. 1.0a page 48.
>
> Bits per Sample (BITS):
> 000 = 8 bits. The data will be packed in memory in 8-bit containers on 16-bit boundaries.
> 001 = 16 bits. The data will be packed in memory in 16-bit containers on 16-bit boundaries.
> 010 = 20 bits. The data will be packed in memory in 32-bit containers on 32-bit boundaries.
> 011 = 24 bits. The data will be packed in memory in 32-bit containers on 32-bit boundaries.
> 100 = 32 bits. The data will be packed in memory in 32-bit containers on 32-bit boundaries.
> 101-111 = Reserved
>
> Set SDnFMT depending on which format was given.
> Henceforth split cases for formats 20, 24, 32 bits,
> but leave constraints to maxbps.
As mentioned in the previous thread, practically seen, case 20 and 24
are never met, since HD-audio doesn't accept the SNDRV_PCM_FORMAT_20*
or _24* due to the 32bit container. So this change is superfluous.
I can take the change, but it has to be clarified that it won't affect
the behavior on the real hardware but pure theoretical.
> Change-Id: I97771b16da14e85b7f35372f5dfc87bb13bb5ce0
Please drop change-id. It's not useful for others.
thanks,
Takashi
> Signed-off-by: Pawel Harlozinski <pawel.harlozinski at linux.intel.com>
> ---
> sound/hda/hdac_device.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/sound/hda/hdac_device.c b/sound/hda/hdac_device.c
> index 3e9e9ac804f6..ccc47a10ba63 100644
> --- a/sound/hda/hdac_device.c
> +++ b/sound/hda/hdac_device.c
> @@ -764,7 +764,14 @@ unsigned int snd_hdac_calc_stream_format(unsigned int rate,
> val |= AC_FMT_BITS_16;
> break;
> case 20:
> + val |= AC_FMT_BITS_20;
> + break;
> case 24:
> + if (maxbps >= 24)
> + val |= AC_FMT_BITS_24;
> + else
> + val |= AC_FMT_BITS_20;
> + break;
> case 32:
> if (maxbps >= 32 || format == SNDRV_PCM_FORMAT_FLOAT_LE)
> val |= AC_FMT_BITS_32;
> --
> 2.17.1
>
More information about the Alsa-devel
mailing list