2021-04-27 10:50:44

by Shengjiu Wang

[permalink] [raw]
Subject: [PATCH 1/2] ALSA: pcm: Add support for 705.6KHz and 768KHz sample rate

Some high resolution codecs support 705.6KHz and 768KHz rates.
So extend supported sample rate to 768kHz in pcm.h.

Signed-off-by: Shengjiu Wang <[email protected]>
---
include/sound/pcm.h | 5 +++++
1 file changed, 5 insertions(+)

diff --git a/include/sound/pcm.h b/include/sound/pcm.h
index 2e1200d17d0c..88056824ffec 100644
--- a/include/sound/pcm.h
+++ b/include/sound/pcm.h
@@ -121,6 +121,8 @@ struct snd_pcm_ops {
#define SNDRV_PCM_RATE_192000 (1<<12) /* 192000Hz */
#define SNDRV_PCM_RATE_352800 (1<<13) /* 352800Hz */
#define SNDRV_PCM_RATE_384000 (1<<14) /* 384000Hz */
+#define SNDRV_PCM_RATE_705600 (1<<15) /* 705600Hz */
+#define SNDRV_PCM_RATE_768000 (1<<16) /* 768000Hz */

#define SNDRV_PCM_RATE_CONTINUOUS (1<<30) /* continuous range */
#define SNDRV_PCM_RATE_KNOT (1<<31) /* supports more non-continuos rates */
@@ -136,6 +138,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_768000|\
+ 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)
--
2.27.0


2021-04-27 10:52:15

by Shengjiu Wang

[permalink] [raw]
Subject: [PATCH 2/2] ALSA: pcm: Extend the constraint table for 705.6kHz and 768KHz rate

Some high resolution codecs support 705.6KHz and 768KHz rates
so extend the constraint table for 705.6kHz and 768KHz rate

Signed-off-by: Shengjiu Wang <[email protected]>
---
sound/core/pcm_native.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c
index 17a85f4815d5..3e03f34cf3e2 100644
--- a/sound/core/pcm_native.c
+++ b/sound/core/pcm_native.c
@@ -2370,7 +2370,8 @@ 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 = {
--
2.27.0

2021-04-27 10:56:32

by Takashi Iwai

[permalink] [raw]
Subject: Re: [PATCH 1/2] ALSA: pcm: Add support for 705.6KHz and 768KHz sample rate

On Tue, 27 Apr 2021 12:34:22 +0200,
Shengjiu Wang wrote:
>
> Some high resolution codecs support 705.6KHz and 768KHz rates.
> So extend supported sample rate to 768kHz in pcm.h.
>
> Signed-off-by: Shengjiu Wang <[email protected]>

How many devices require it for now?

I don't want to extend the core definitions blindly unless those rates
are really commonly used. You can add those specific rates in the
codec driver instead.


thanks,

Takashi

> ---
> include/sound/pcm.h | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/include/sound/pcm.h b/include/sound/pcm.h
> index 2e1200d17d0c..88056824ffec 100644
> --- a/include/sound/pcm.h
> +++ b/include/sound/pcm.h
> @@ -121,6 +121,8 @@ struct snd_pcm_ops {
> #define SNDRV_PCM_RATE_192000 (1<<12) /* 192000Hz */
> #define SNDRV_PCM_RATE_352800 (1<<13) /* 352800Hz */
> #define SNDRV_PCM_RATE_384000 (1<<14) /* 384000Hz */
> +#define SNDRV_PCM_RATE_705600 (1<<15) /* 705600Hz */
> +#define SNDRV_PCM_RATE_768000 (1<<16) /* 768000Hz */
>
> #define SNDRV_PCM_RATE_CONTINUOUS (1<<30) /* continuous range */
> #define SNDRV_PCM_RATE_KNOT (1<<31) /* supports more non-continuos rates */
> @@ -136,6 +138,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_768000|\
> + 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)
> --
> 2.27.0
>

2021-04-27 11:14:45

by Shengjiu Wang

[permalink] [raw]
Subject: Re: [PATCH 1/2] ALSA: pcm: Add support for 705.6KHz and 768KHz sample rate

On Tue, Apr 27, 2021 at 6:56 PM Takashi Iwai <[email protected]> wrote:
>
> On Tue, 27 Apr 2021 12:34:22 +0200,
> Shengjiu Wang wrote:
> >
> > Some high resolution codecs support 705.6KHz and 768KHz rates.
> > So extend supported sample rate to 768kHz in pcm.h.
> >
> > Signed-off-by: Shengjiu Wang <[email protected]>
>
> How many devices require it for now?

I have two devices, AK4458, AK5558.

>
> I don't want to extend the core definitions blindly unless those rates
> are really commonly used. You can add those specific rates in the
> codec driver instead.

Ok, this is an option.

>
>
> thanks,
>
> Takashi
>
> > ---
> > include/sound/pcm.h | 5 +++++
> > 1 file changed, 5 insertions(+)
> >
> > diff --git a/include/sound/pcm.h b/include/sound/pcm.h
> > index 2e1200d17d0c..88056824ffec 100644
> > --- a/include/sound/pcm.h
> > +++ b/include/sound/pcm.h
> > @@ -121,6 +121,8 @@ struct snd_pcm_ops {
> > #define SNDRV_PCM_RATE_192000 (1<<12) /* 192000Hz */
> > #define SNDRV_PCM_RATE_352800 (1<<13) /* 352800Hz */
> > #define SNDRV_PCM_RATE_384000 (1<<14) /* 384000Hz */
> > +#define SNDRV_PCM_RATE_705600 (1<<15) /* 705600Hz */
> > +#define SNDRV_PCM_RATE_768000 (1<<16) /* 768000Hz */
> >
> > #define SNDRV_PCM_RATE_CONTINUOUS (1<<30) /* continuous range */
> > #define SNDRV_PCM_RATE_KNOT (1<<31) /* supports more non-continuos rates */
> > @@ -136,6 +138,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_768000|\
> > + 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)
> > --
> > 2.27.0
> >