ALSA: pcm: add support for 705.6kHz and 768kHz sample rates
authorPavel Hofman <pavel.hofman@ivitera.com>
Tue, 16 Apr 2024 12:17:25 +0000 (14:17 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 18 Apr 2024 07:30:34 +0000 (09:30 +0200)
Many modern codecs support 705.6kHz and 768kHz sample rates. Current HW
params fail to set 705.6kHz and 768kHz sample rates as these are not in the
known-rates list.

Add these new rates to the known-rates list to allow them.

Also add defines in pcm.h so that drivers can use it.

Signed-off-by: Pavel Hofman <pavel.hofman@ivitera.com>
Reviewed-by: Jaroslav Kysela <perex@perex.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Message-ID: <20240416121726.628679-3-pavel.hofman@ivitera.com>

include/sound/pcm.h
sound/core/pcm_native.c

index 210096f124eed5765960b2b512954fb3dfa5c4ec..61c6054618c8ead951b15390ec91bb40b4a63ca2 100644 (file)
@@ -120,6 +120,8 @@ struct snd_pcm_ops {
 #define SNDRV_PCM_RATE_192000          (1U<<12)        /* 192000Hz */
 #define SNDRV_PCM_RATE_352800          (1U<<13)        /* 352800Hz */
 #define SNDRV_PCM_RATE_384000          (1U<<14)        /* 384000Hz */
+#define SNDRV_PCM_RATE_705600          (1U<<15)        /* 705600Hz */
+#define SNDRV_PCM_RATE_768000          (1U<<16)        /* 768000Hz */
 
 #define SNDRV_PCM_RATE_CONTINUOUS      (1U<<30)        /* continuous range */
 #define SNDRV_PCM_RATE_KNOT            (1U<<31)        /* supports more non-continuos rates */
@@ -135,6 +137,9 @@ struct snd_pcm_ops {
 #define SNDRV_PCM_RATE_8000_384000     (SNDRV_PCM_RATE_8000_192000|\
                                         SNDRV_PCM_RATE_352800|\
                                         SNDRV_PCM_RATE_384000)
+#define SNDRV_PCM_RATE_8000_768000     (SNDRV_PCM_RATE_8000_384000|\
+                                        SNDRV_PCM_RATE_705600|\
+                                        SNDRV_PCM_RATE_768000)
 #define _SNDRV_PCM_FMTBIT(fmt)         (1ULL << (__force int)SNDRV_PCM_FORMAT_##fmt)
 #define SNDRV_PCM_FMTBIT_S8            _SNDRV_PCM_FMTBIT(S8)
 #define SNDRV_PCM_FMTBIT_U8            _SNDRV_PCM_FMTBIT(U8)
index 0b76e76823d288d92f6e3355eda2a08cf15ddf9c..521ba56392a07fffaa87111da64a55f0cb3a4f07 100644 (file)
@@ -2416,7 +2416,7 @@ static int snd_pcm_hw_rule_sample_bits(struct snd_pcm_hw_params *params,
 
 static const unsigned int rates[] = {
        5512, 8000, 11025, 16000, 22050, 32000, 44100,
-       48000, 64000, 88200, 96000, 176400, 192000, 352800, 384000
+       48000, 64000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000
 };
 
 const struct snd_pcm_hw_constraint_list snd_pcm_known_rates = {