[PATCH 2/2] ASoC: fsl_micfil: correct the endian format for DSD

Shengjiu Wang posted 2 patches 3 months, 2 weeks ago
[PATCH 2/2] ASoC: fsl_micfil: correct the endian format for DSD
Posted by Shengjiu Wang 3 months, 2 weeks ago
The DSD format supported by micfil is that oldest bit is in bit 31, so
the format should be DSD little endian format.

Fixes: 21aa330fec31 ("ASoC: fsl_micfil: Add decimation filter bypass mode support")
Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
 sound/soc/fsl/fsl_micfil.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c
index aabd90a8b3ec..cac26ba0aa4b 100644
--- a/sound/soc/fsl/fsl_micfil.c
+++ b/sound/soc/fsl/fsl_micfil.c
@@ -131,7 +131,7 @@ static struct fsl_micfil_soc_data fsl_micfil_imx943 = {
 	.fifos = 8,
 	.fifo_depth = 32,
 	.dataline =  0xf,
-	.formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_DSD_U32_BE,
+	.formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_DSD_U32_LE,
 	.use_edma = true,
 	.use_verid = true,
 	.volume_sx = false,
@@ -823,7 +823,7 @@ static int fsl_micfil_hw_params(struct snd_pcm_substream *substream,
 		break;
 	}
 
-	if (format == SNDRV_PCM_FORMAT_DSD_U32_BE) {
+	if (format == SNDRV_PCM_FORMAT_DSD_U32_LE) {
 		micfil->dec_bypass = true;
 		/*
 		 * According to equation 29 in RM:
-- 
2.34.1
Re: [PATCH 2/2] ASoC: fsl_micfil: correct the endian format for DSD
Posted by Daniel Baluta 3 months, 2 weeks ago
oldest - > most significant bit.

With that,

Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>


On Thu, Oct 23, 2025 at 9:48 AM Shengjiu Wang <shengjiu.wang@nxp.com> wrote:
>
> The DSD format supported by micfil is that oldest bit is in bit 31, so
> the format should be DSD little endian format.
>
> Fixes: 21aa330fec31 ("ASoC: fsl_micfil: Add decimation filter bypass mode support")
> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
> ---
>  sound/soc/fsl/fsl_micfil.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c
> index aabd90a8b3ec..cac26ba0aa4b 100644
> --- a/sound/soc/fsl/fsl_micfil.c
> +++ b/sound/soc/fsl/fsl_micfil.c
> @@ -131,7 +131,7 @@ static struct fsl_micfil_soc_data fsl_micfil_imx943 = {
>         .fifos = 8,
>         .fifo_depth = 32,
>         .dataline =  0xf,
> -       .formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_DSD_U32_BE,
> +       .formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_DSD_U32_LE,
>         .use_edma = true,
>         .use_verid = true,
>         .volume_sx = false,
> @@ -823,7 +823,7 @@ static int fsl_micfil_hw_params(struct snd_pcm_substream *substream,
>                 break;
>         }
>
> -       if (format == SNDRV_PCM_FORMAT_DSD_U32_BE) {
> +       if (format == SNDRV_PCM_FORMAT_DSD_U32_LE) {
>                 micfil->dec_bypass = true;
>                 /*
>                  * According to equation 29 in RM:
> --
> 2.34.1
>
>
Re: [PATCH 2/2] ASoC: fsl_micfil: correct the endian format for DSD
Posted by Shengjiu Wang 3 months, 2 weeks ago
On Thu, Oct 23, 2025 at 3:10 PM Daniel Baluta <daniel.baluta@gmail.com> wrote:
>
> oldest - > most significant bit.

'oldest' is from the time perspective, which is aligned with the description in
https://github.com/alsa-project/alsa-lib/blob/master/src/pcm/pcm.c#L2050

Best regards
Shengjiu wang

>
> With that,
>
> Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>
>
>
> On Thu, Oct 23, 2025 at 9:48 AM Shengjiu Wang <shengjiu.wang@nxp.com> wrote:
> >
> > The DSD format supported by micfil is that oldest bit is in bit 31, so
> > the format should be DSD little endian format.
> >
> > Fixes: 21aa330fec31 ("ASoC: fsl_micfil: Add decimation filter bypass mode support")
> > Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
> > ---
> >  sound/soc/fsl/fsl_micfil.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/sound/soc/fsl/fsl_micfil.c b/sound/soc/fsl/fsl_micfil.c
> > index aabd90a8b3ec..cac26ba0aa4b 100644
> > --- a/sound/soc/fsl/fsl_micfil.c
> > +++ b/sound/soc/fsl/fsl_micfil.c
> > @@ -131,7 +131,7 @@ static struct fsl_micfil_soc_data fsl_micfil_imx943 = {
> >         .fifos = 8,
> >         .fifo_depth = 32,
> >         .dataline =  0xf,
> > -       .formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_DSD_U32_BE,
> > +       .formats = SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_DSD_U32_LE,
> >         .use_edma = true,
> >         .use_verid = true,
> >         .volume_sx = false,
> > @@ -823,7 +823,7 @@ static int fsl_micfil_hw_params(struct snd_pcm_substream *substream,
> >                 break;
> >         }
> >
> > -       if (format == SNDRV_PCM_FORMAT_DSD_U32_BE) {
> > +       if (format == SNDRV_PCM_FORMAT_DSD_U32_LE) {
> >                 micfil->dec_bypass = true;
> >                 /*
> >                  * According to equation 29 in RM:
> > --
> > 2.34.1
> >
> >
Re: [PATCH 2/2] ASoC: fsl_micfil: correct the endian format for DSD
Posted by Daniel Baluta 3 months, 2 weeks ago
On Thu, Oct 23, 2025 at 10:52 AM Shengjiu Wang <shengjiu.wang@gmail.com> wrote:
>
> On Thu, Oct 23, 2025 at 3:10 PM Daniel Baluta <daniel.baluta@gmail.com> wrote:
> >
> > oldest - > most significant bit.
>
> 'oldest' is from the time perspective, which is aligned with the description in
> https://github.com/alsa-project/alsa-lib/blob/master/src/pcm/pcm.c#L2050

Make sense. Thanks Shengjiu for the explanation.

Then this is fine:
> > Reviewed-by: Daniel Baluta <daniel.baluta@nxp.com>