ASoC: cs42xx8: Remove S32_LE in format list
diff mbox series

Message ID 1551333389-22791-1-git-send-email-shengjiu.wang@nxp.com
State New
Headers show
Series
  • ASoC: cs42xx8: Remove S32_LE in format list
Related show

Commit Message

Shengjiu Wang Feb. 28, 2019, 5:56 a.m. UTC
cs42xx8 is a 24-bit A/D and 24-bit D/A device, so the S32_LE
should not be in the supported format list.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
---
 sound/soc/codecs/cs42xx8.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Shengjiu Wang March 1, 2019, 3:45 a.m. UTC | #1
Hi

> > cs42xx8 is a 24-bit A/D and 24-bit D/A device, so the S32_LE should
> > not be in the supported format list.
> >
> > Signed-off-by: Shengjiu Wang<shengjiu.wang@nxp.com>
> 
> Is the device capable of accepting 32-bit samples, even if it downgrades it to
> 24-bit internally?  If so, then maybe SNDRV_PCM_FMTBIT_S32_LE should
> stay.
Yes,  the S32_LE can be accepted by device, it seems like that the device only
Use the upper 24bit, so the S32_LE result is same as S24_LE,  do you think the
S32_LE should be remained?

Best regards
Wang shengjiu
Nicolin Chen March 1, 2019, 4:50 a.m. UTC | #2
Hi Shengjiu,

On Thu, Feb 28, 2019 at 05:56:31AM +0000, S.j. Wang wrote:
> cs42xx8 is a 24-bit A/D and 24-bit D/A device, so the S32_LE
> should not be in the supported format list.
> 
> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
> ---
>  sound/soc/codecs/cs42xx8.c | 3 +--

This is for cs42xx8 codec driver, but its maintainers aren't
seemly in To/Cc list. Please run ./scripts/get_maintainer.pl
for it and resend.
Matt Flax March 1, 2019, 5:04 a.m. UTC | #3
It would be a mistake to remove S32_LE from the format list.

If you removed that, then we wouldn't be able to do 32 bit native 
playback - it would force users to go through an ALSA plugin.

If you look at the cs42448 data sheet for example, the I2S and TDM bus 
uses a 32 bit word size. For that reason, native S32_LE format is 
handled by the codec. While the codec only uses the 24 MSBs, the I2S bus 
is 32 bit.

Matt

On 1/3/19 3:50 pm, Nicolin Chen wrote:
> Hi Shengjiu,
>
> On Thu, Feb 28, 2019 at 05:56:31AM +0000, S.j. Wang wrote:
>> cs42xx8 is a 24-bit A/D and 24-bit D/A device, so the S32_LE
>> should not be in the supported format list.
>>
>> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
>> ---
>>   sound/soc/codecs/cs42xx8.c | 3 +--
> This is for cs42xx8 codec driver, but its maintainers aren't
> seemly in To/Cc list. Please run ./scripts/get_maintainer.pl
> for it and resend.
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
Shengjiu Wang March 1, 2019, 6:32 a.m. UTC | #4
> 
> It would be a mistake to remove S32_LE from the format list.
> 
> If you removed that, then we wouldn't be able to do 32 bit native playback
> - it would force users to go through an ALSA plugin.
> 
> If you look at the cs42448 data sheet for example, the I2S and TDM bus
> uses a 32 bit word size. For that reason, native S32_LE format is handled by
> the codec. While the codec only uses the 24 MSBs, the I2S bus is 32 bit.

This case is covered by S24_LE I think.  The S32_LE means the data is 32bit and slot width
Is 32bit, this is not in data sheet.

Best regards
Wang shengjiu
> 
> Matt
> 
> On 1/3/19 3:50 pm, Nicolin Chen wrote:
> > Hi Shengjiu,
> >
> > On Thu, Feb 28, 2019 at 05:56:31AM +0000, S.j. Wang wrote:
> >> cs42xx8 is a 24-bit A/D and 24-bit D/A device, so the S32_LE should
> >> not be in the supported format list.
> >>
> >> Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
> >> ---
> >>   sound/soc/codecs/cs42xx8.c | 3 +--
> > This is for cs42xx8 codec driver, but its maintainers aren't seemly in
> > To/Cc list. Please run ./scripts/get_maintainer.pl for it and resend.
> > _______________________________________________
> > Alsa-devel mailing list
> > Alsa-devel@alsa-project.org
> >
> https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fma
> i
> > lman.alsa-project.org%2Fmailman%2Flistinfo%2Falsa-
> devel&amp;data=02%7C
> >
> 01%7Cshengjiu.wang%40nxp.com%7Ce5686d72bd7843c5962508d69e0370a4
> %7C686e
> >
> a1d3bc2b4c6fa92cd99c5c301635%7C0%7C1%7C636870134975623123&amp;
> sdata=Rr
> >
> YwfC4Y3xssED%2FzRum%2FXABGJTHvRrYwnRNgUL7u2lU%3D&amp;reserved
> =0
Timur Tabi March 1, 2019, 2:32 p.m. UTC | #5
On 3/1/19 12:32 AM, S.j. Wang wrote:
> This case is covered by S24_LE I think.  The S32_LE means the data is 32bit and slot width
> Is 32bit, this is not in data sheet.

The problem is that if you have 32-bit samples in your audio file, and 
you want to play them, then software (e.g. alsalib) will need to convert 
the audio to 24-bit before sending it to hardware.  This is unnecessary 
because the hardware can "convert" the sample to 24-bit automatically by 
ignoring the lower 8 bits.

I think a lot of codecs do this already.
Shengjiu Wang March 2, 2019, 5:42 a.m. UTC | #6
Hi

> On 3/1/19 12:32 AM, S.j. Wang wrote:
> > This case is covered by S24_LE I think.  The S32_LE means the data is
> > 32bit and slot width Is 32bit, this is not in data sheet.
> 
> The problem is that if you have 32-bit samples in your audio file, and you
> want to play them, then software (e.g. alsalib) will need to convert the
> audio to 24-bit before sending it to hardware.  This is unnecessary because
> the hardware can "convert" the sample to 24-bit automatically by ignoring
> the lower 8 bits.
> 
> I think a lot of codecs do this already.

Ok. Thanks for reviewing, I will drop this patch.

Best regards
Wang shengjiu

Patch
diff mbox series

diff --git a/sound/soc/codecs/cs42xx8.c b/sound/soc/codecs/cs42xx8.c
index ebb9e0cf8364..271972337d23 100644
--- a/sound/soc/codecs/cs42xx8.c
+++ b/sound/soc/codecs/cs42xx8.c
@@ -32,8 +32,7 @@ 
 
 #define CS42XX8_FORMATS	(SNDRV_PCM_FMTBIT_S16_LE | \
 			 SNDRV_PCM_FMTBIT_S20_3LE | \
-			 SNDRV_PCM_FMTBIT_S24_LE | \
-			 SNDRV_PCM_FMTBIT_S32_LE)
+			 SNDRV_PCM_FMTBIT_S24_LE)
 
 /* codec private data */
 struct cs42xx8_priv {