rk610_codec : In the state of the low volume noise problem

This commit is contained in:
邱建斌
2012-11-07 17:09:36 +08:00
parent 4c82877891
commit 89c1ad3ff3

View File

@@ -527,7 +527,7 @@ static int rk610_codec_pcm_hw_params(struct snd_pcm_substream *substream,
#endif
rk610_codec_write(codec, ACCELCODEC_R09, iface);
if (coeff >= 0){
rk610_codec_write(codec, ACCELCODEC_R00, srate|coeff_div[coeff].bclk);
// rk610_codec_write(codec, ACCELCODEC_R00, srate|coeff_div[coeff].bclk);
rk610_codec_write(codec, ACCELCODEC_R0A, (coeff_div[coeff].sr << 1) | coeff_div[coeff].usb|ASC_CLKNODIV|ASC_CLK_ENABLE);
}
rk610_codec_write(codec,ACCELCODEC_R0B, gR0BReg);
@@ -695,7 +695,7 @@ void rk610_codec_reg_set(void)
gR0AReg = ASC_NORMAL_MODE|(0x10 << 1)|ASC_CLKNODIV|ASC_CLK_DISABLE;
//2Config audio interface
rk610_codec_write(codec,ACCELCODEC_R09, ASC_I2S_MODE|ASC_16BIT_MODE|ASC_NORMAL_LRCLK|ASC_LRSWAP_DISABLE|ASC_MASTER_MODE|ASC_NORMAL_BCLK);
rk610_codec_write(codec,ACCELCODEC_R00, ASC_HPF_ENABLE|ASC_DSM_MODE_DISABLE|ASC_SCRAMBLE_DISABLE|ASC_DITHER_ENABLE|ASC_BCLKDIV_4);
rk610_codec_write(codec,ACCELCODEC_R00, ASC_HPF_ENABLE|ASC_DSM_MODE_ENABLE|ASC_SCRAMBLE_ENABLE|ASC_DITHER_ENABLE|ASC_BCLKDIV_4);
//2volume,input,output
digital_gain = Volume_Output;
rk610_codec_write(codec,ACCELCODEC_R05, (digital_gain >> 8) & 0xFF);
@@ -870,6 +870,9 @@ static ssize_t RK610_PROC_write(struct file *file, const char __user *buffer,
unsigned long len, void *data)
{
char *cookie_pot;
char *p;
int reg;
int value;
cookie_pot = (char *)vmalloc( len );
if (!cookie_pot)
@@ -889,7 +892,53 @@ static ssize_t RK610_PROC_write(struct file *file, const char __user *buffer,
break;
case 'o':
spk_ctrl_fun(GPIO_LOW);
break;
break;
case 'r':
case 'R':
printk("Read reg debug\n");
if(cookie_pot[1] ==':')
{
strsep(&cookie_pot,":");
while((p=strsep(&cookie_pot,",")))
{
reg = simple_strtol(p,NULL,16);
value = rk610_codec_read(rk610_codec_codec,reg);
printk("wm8994_read:0x%04x = 0x%04x\n",reg,value);
}
printk("\n");
}
else
{
printk("Error Read reg debug.\n");
printk("For example: echo 'r:22,23,24,25'>wm8994_ts\n");
}
break;
case 'w':
case 'W':
printk("Write reg debug\n");
if(cookie_pot[1] ==':')
{
strsep(&cookie_pot,":");
while((p=strsep(&cookie_pot,"=")))
{
reg = simple_strtol(p,NULL,16);
p=strsep(&cookie_pot,",");
value = simple_strtol(p,NULL,16);
rk610_codec_write(rk610_codec_codec,reg,value);
printk("wm8994_write:0x%04x = 0x%04x\n",reg,value);
}
printk("\n");
}
else
{
printk("Error Write reg debug.\n");
printk("For example: w:22=0,23=0,24=0,25=0\n");
}
break;
case 'D' :
printk("Dump reg\n");
rk610_codec_reg_read();
break;
}
return len;