diff mbox series

[v2,1/1] ALSA: hda: Refactor calculating SDnFMT according to specification

Message ID 20200921094200.10126-1-pawel.harlozinski@linux.intel.com (mailing list archive)
State Superseded
Headers show
Series [v2,1/1] ALSA: hda: Refactor calculating SDnFMT according to specification | expand

Commit Message

Pawel Harlozinski Sept. 21, 2020, 9:42 a.m. UTC
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.

Change-Id: I97771b16da14e85b7f35372f5dfc87bb13bb5ce0
Signed-off-by: Pawel Harlozinski <pawel.harlozinski@linux.intel.com>
---
 sound/hda/hdac_device.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Cezary Rojewski Sept. 21, 2020, 9:55 a.m. UTC | #1
On 2020-09-21 11:42 AM, 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.
> 
> Change-Id: I97771b16da14e85b7f35372f5dfc87bb13bb5ce0

Hello,

checkpatch script should have notified you about need for removing Change-Id.
Please remove for the next version.

Has there been any explanation for why v2 is sent and what changes have
been made between v1 and v2?

Czarek

> Signed-off-by: Pawel Harlozinski <pawel.harlozinski@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;
>
Takashi Iwai Sept. 21, 2020, 10:01 a.m. UTC | #2
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@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
>
diff mbox series

Patch

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;