From: <sle...@us...> - 2007-07-10 19:43:43
|
Revision: 1127 http://svn.sourceforge.net/hackndev/?rev=1127&view=rev Author: sleep_walker Date: 2007-07-10 12:43:40 -0700 (Tue, 10 Jul 2007) Log Message: ----------- palmtt3: fixed sound quality problem in tsc2101 ;) Modified Paths: -------------- linux4palm/linux/trunk/drivers/mfd/tsc2101.c Modified: linux4palm/linux/trunk/drivers/mfd/tsc2101.c =================================================================== --- linux4palm/linux/trunk/drivers/mfd/tsc2101.c 2007-07-10 13:06:41 UTC (rev 1126) +++ linux4palm/linux/trunk/drivers/mfd/tsc2101.c 2007-07-10 19:43:40 UTC (rev 1127) @@ -172,45 +172,46 @@ printk("Rate: %d ", rate); if (rate >= 48000) - { div = 7; fs_44 = 1; } + { div = 0; fs_44 = 0; } else if (rate >= 44100) - { div = 7; fs_44 = 0; } + { div = 0; fs_44 = 1; } else if (rate >= 32000) - { div = 6; fs_44 = 1; } + { div = 1; fs_44 = 0; } else if (rate >= 29400) - { div = 6; fs_44 = 0; } + { div = 1; fs_44 = 1; } else if (rate >= 24000) - { div = 5; fs_44 = 1; } + { div = 2; fs_44 = 0; } else if (rate >= 22050) - { div = 5; fs_44 = 0; } + { div = 2; fs_44 = 1; } else if (rate >= 16000) - { div = 4; fs_44 = 1; } + { div = 3; fs_44 = 0; } else if (rate >= 14700) + { div = 3; fs_44 = 1; } + else if (rate >= 12000) { div = 4; fs_44 = 0; } - else if (rate >= 12000) - { div = 3; fs_44 = 1; } else if (rate >= 11025) - { div = 3; fs_44 = 0; } + { div = 4; fs_44 = 1; } else if (rate >= 9600) - { div = 2; fs_44 = 1; } + { div = 5; fs_44 = 0; } else if (rate >= 8820) - { div = 2; fs_44 = 0; } + { div = 5; fs_44 = 1; } else if (rate >= 8727) - { div = 1; fs_44 = 1; } + { div = 6; fs_44 = 0; } else if (rate >= 8018) - { div = 1; fs_44 = 0; } + { div = 6; fs_44 = 1; } else if (rate >= 8000) - { div = 0; fs_44 = 1; } + { div = 7; fs_44 = 0; } else - { div = 0; fs_44 = 0; } + { div = 7; fs_44 = 1; } /* wait for any frame to complete */ udelay(125); /* Set AC1 */ data = tsc2101_regread(snd_data, TSC2101_REG_AUDIOCON1); - /*Clear prev settings */ + /* Clear prev settings */ data &= ~(TSC2101_DACFS(0xF) | TSC2101_ADCFS(0xF)); + data |= TSC2101_DACFS(div) | TSC2101_ADCFS(div); tsc2101_regwrite(snd_data, TSC2101_REG_AUDIOCON1, data); @@ -657,8 +658,8 @@ /* enable touch detection, 84usec precharge time, 32 usec sense time */ tsc2101_regwrite(devdata, TSC2101_REG_CONFIG, 0x08); - /* 3 msec conversion delays */ - tsc2101_regwrite(devdata, TSC2101_REG_DELAY, 0x0900); + /* 3 msec conversion delays, 12 MHz MClk */ + tsc2101_regwrite(devdata, TSC2101_REG_DELAY, 0x0900 | 0xc); /* * TSC2101-controlled conversions This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |