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

Troy Kisky troy.kisky at boundarydevices.com
Tue Nov 17 20:09:21 CET 2009


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?

Thanks
Troy



More information about the Alsa-devel mailing list