2024-03-26 03:50:29

by John Watts

[permalink] [raw]
Subject: [PATCH] ASoC: sunxi: sun4i-i2s: Enable 32-bit audio formats

The I2S driver already supports and checks for 32-bit sample sizes,
so indicate this size is available for use in the DAI driver.

This change has been tested on the T113-S3, but it should work just
fine on older hardware as get_sr checks for sample size support
correctly according to each core's datasheet.

Signed-off-by: John Watts <[email protected]>
---
This patch enables support for 32-bit audio in the sunxi I2S driver.

I have only tested this on the Allwinner T113 but I'm fairly
certain it will work on older boards.
---
sound/soc/sunxi/sun4i-i2s.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
index a736f632bf0b..aeea852141c1 100644
--- a/sound/soc/sunxi/sun4i-i2s.c
+++ b/sound/soc/sunxi/sun4i-i2s.c
@@ -1103,7 +1103,8 @@ static const struct snd_soc_dai_ops sun4i_i2s_dai_ops = {

#define SUN4I_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
SNDRV_PCM_FMTBIT_S20_LE | \
- SNDRV_PCM_FMTBIT_S24_LE)
+ SNDRV_PCM_FMTBIT_S24_LE | \
+ SNDRV_PCM_FMTBIT_S32_LE)

static struct snd_soc_dai_driver sun4i_i2s_dai = {
.capture = {

---
base-commit: 72fb52fb0ac44b6a1edd9bc390e44bce3acccd26
change-id: 20240326-sunxi_s32-f2ab25b8e688

Best regards,
--
John Watts <[email protected]>



2024-03-27 19:53:46

by Jernej Škrabec

[permalink] [raw]
Subject: Re: [PATCH] ASoC: sunxi: sun4i-i2s: Enable 32-bit audio formats

Dne torek, 26. marec 2024 ob 04:50:03 CET je John Watts napisal(a):
> The I2S driver already supports and checks for 32-bit sample sizes,
> so indicate this size is available for use in the DAI driver.
>
> This change has been tested on the T113-S3, but it should work just
> fine on older hardware as get_sr checks for sample size support
> correctly according to each core's datasheet.
>
> Signed-off-by: John Watts <[email protected]>
> ---
> This patch enables support for 32-bit audio in the sunxi I2S driver.
>
> I have only tested this on the Allwinner T113 but I'm fairly
> certain it will work on older boards.
> ---
> sound/soc/sunxi/sun4i-i2s.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/sound/soc/sunxi/sun4i-i2s.c b/sound/soc/sunxi/sun4i-i2s.c
> index a736f632bf0b..aeea852141c1 100644
> --- a/sound/soc/sunxi/sun4i-i2s.c
> +++ b/sound/soc/sunxi/sun4i-i2s.c
> @@ -1103,7 +1103,8 @@ static const struct snd_soc_dai_ops sun4i_i2s_dai_ops = {
>
> #define SUN4I_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \
> SNDRV_PCM_FMTBIT_S20_LE | \
> - SNDRV_PCM_FMTBIT_S24_LE)
> + SNDRV_PCM_FMTBIT_S24_LE | \
> + SNDRV_PCM_FMTBIT_S32_LE)

I wish it would be that simple. SUN4I_FORMATS is cross section of all I2S
variants that are supported by this driver. If you check A10, you'll see that
it doesn't support S32.

If you want to add support for S32, you'll have to add new quirk for each
variant.

Best regards,
Jernej

>
> static struct snd_soc_dai_driver sun4i_i2s_dai = {
> .capture = {
>
> ---
> base-commit: 72fb52fb0ac44b6a1edd9bc390e44bce3acccd26
> change-id: 20240326-sunxi_s32-f2ab25b8e688
>
> Best regards,
>





2024-03-28 02:25:41

by John Watts

[permalink] [raw]
Subject: Re: [PATCH] ASoC: sunxi: sun4i-i2s: Enable 32-bit audio formats

On Wed, Mar 27, 2024 at 08:53:32PM +0100, Jernej Škrabec wrote:
> I wish it would be that simple. SUN4I_FORMATS is cross section of all I2S
> variants that are supported by this driver. If you check A10, you'll see that
> it doesn't support S32.
>
> If you want to add support for S32, you'll have to add new quirk for each
> variant.

Yes, A10 doesn't support it. But it should error out in hw_params due to
get_sr not supporting 32-bit, no?

>
> Best regards,
> Jernej

John.

2024-03-28 13:57:49

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] ASoC: sunxi: sun4i-i2s: Enable 32-bit audio formats

On Thu, Mar 28, 2024 at 01:21:21PM +1100, John Watts wrote:
> On Wed, Mar 27, 2024 at 08:53:32PM +0100, Jernej Škrabec wrote:

> > I wish it would be that simple. SUN4I_FORMATS is cross section of all I2S
> > variants that are supported by this driver. If you check A10, you'll see that
> > it doesn't support S32.

> > If you want to add support for S32, you'll have to add new quirk for each
> > variant.

> Yes, A10 doesn't support it. But it should error out in hw_params due to
> get_sr not supporting 32-bit, no?

The constraints shouldn't be advertising things that hw_params() will
error out on, sometimes there are contingent constraints that prevent
this but something that just doesn't work isn't one of those times.


Attachments:
(No filename) (745.00 B)
signature.asc (499.00 B)
Download all attachments

2024-03-28 15:01:23

by John Watts

[permalink] [raw]
Subject: Re: [PATCH] ASoC: sunxi: sun4i-i2s: Enable 32-bit audio formats

On Thu, Mar 28, 2024 at 01:56:42PM +0000, Mark Brown wrote:
> On Thu, Mar 28, 2024 at 01:21:21PM +1100, John Watts wrote:
> > On Wed, Mar 27, 2024 at 08:53:32PM +0100, Jernej Škrabec wrote:
>
> > > I wish it would be that simple. SUN4I_FORMATS is cross section of all I2S
> > > variants that are supported by this driver. If you check A10, you'll see that
> > > it doesn't support S32.
>
> > > If you want to add support for S32, you'll have to add new quirk for each
> > > variant.
>
> > Yes, A10 doesn't support it. But it should error out in hw_params due to
> > get_sr not supporting 32-bit, no?
>
> The constraints shouldn't be advertising things that hw_params() will
> error out on, sometimes there are contingent constraints that prevent
> this but something that just doesn't work isn't one of those times.

Oh right! I'm not sure how I forgot about this, given I went through this
exact discussion for my wm8782 patch.

I'll try and get v2 patch for this soon. :)

John.