[alsa-devel] Artifacts present in AIC23 capture for 48 KHz sampling rate

Aggarwal, Anuj anuj.aggarwal at ti.com
Wed Nov 18 10:20:08 CET 2009


> -----Original Message-----
> From: Troy Kisky [mailto:troy.kisky at boundarydevices.com]
> Sent: Wednesday, November 18, 2009 12:39 AM
> To: Aggarwal, Anuj
> Cc: alsa-devel at alsa-project.org; linux-omap at vger.kernel.org
> Subject: Re: [alsa-devel] Artifacts present in AIC23 capture for 48 KHz
> sampling rate
> 
> Aggarwal, Anuj wrote:
> >> -----Original Message-----
> >> From: Aggarwal, Anuj
> >> Sent: Friday, November 06, 2009 6:28 PM
> >> To: alsa-devel at alsa-project.org; 'linux-omap at vger.kernel.org'
> >> Subject: Artifacts present in AIC23 capture for 48 KHz sampling rate
> >>
> >> Hi,
> >>
> >> I am observing artifacts (sharp spikes at fixed intervals) while
> >> capturing audio on AM3517 EVM and AIC23 codec. They are present only
> >> in one of the channels when I am capturing at 48 KHz. All other
> >> sampling rates are working fine with the above said combination.
> >>
> >> I have also attached the screenshot taken with the help of Audacity
> >> utility. Here, I tried recording silence but artifacts were observed
> >> on one channel.
> >>
> >> Has anyone also observed the similar behavior with AIC23 codec? Any
> >> hints on what could be the root cause?
> > [Aggarwal, Anuj] On further debugging, I found that the function
> > find_rate() in sound/soc/codecs/tlv320aic23.c is not returning
> > the correct value for capture in 48KHz sample rate. In USB mode
> > (MCLK=12MHz), for 48KHz, it returns 0x7D (CLKOUT=0, CLKIN=1,
> > SR[3:0]=0xF, BOSR=1, Normal=1) whereas as per the AIC23B spec,
> 
> 0x7D would be BOSR = 0, USB/NORMAL = 1, SR=0xff, div2 = 1
> 
> The bug is with sr_valid_mask,
> 
> static const unsigned short sr_valid_mask[] = {
> 	LOWER_GROUP|UPPER_GROUP,	/* Normal, bosr - 0*/
> 	LOWER_GROUP|UPPER_GROUP,	/* Normal, bosr - 1*/
> 	LOWER_GROUP,			/* Usb, bosr - 0*/
> 	UPPER_GROUP,			/* Usb, bosr - 1*/
> };
> 
> should be
> 
> static const unsigned short sr_valid_mask[] = {
> 	LOWER_GROUP|UPPER_GROUP,	/* Normal, bosr - 0*/
> 	LOWER_GROUP,			/* Usb, bosr - 0*/
> 	LOWER_GROUP|UPPER_GROUP,	/* Normal, bosr - 1*/
> 	UPPER_GROUP,			/* Usb, bosr - 1*/
> };
> 
> 
> Can you give this a try and let me know?
[Aggarwal, Anuj] I tried this on AM3517 EVM + AIC23B; it works
fine for me. But I have tested the fix only with a 12 MHz clock.
Thanks for quickly fixing this.
> 
> Thanks
> Troy
> 



More information about the Alsa-devel mailing list