在线时间4 小时
UID2100805
注册时间2014-6-11
NXP金币0 
 
 
 
该用户从未签到 
注册会员 
  
 
	- 积分
 - 83
 
 
- 最后登录
 - 1970-1-1
  
 
 | 
 
 
 楼主 |
发表于 2014-6-13 16:15:35
|
显示全部楼层
 
 
 
回复:SGTL5000爆音問題(已解决)
 應該說不算解決, 算是用改驅動的方法避掉這個問題 
硬體有個PIN拉到喇叭, 此PIN為SABRESD_CODEC_PWN_EN => IMX_GPIO_NR(4, 10) 
此PIN已被設為GPIO 
然後爆音產生的點在sgtl5000.c的small_pop_event的SND_SOC_DAPM_PRE_PMD這個case 
  
HIGH應該是1(true), LOW為0(false) 
1. 所以在產生的爆音點上關閉喇叭(將此PIN拉HIGH), 需要mdelay(500), 不然爆音仍是會發生 
case SND_SOC_DAPM_PRE_PMD:         
                gpio_set_value(SABRESD_CODEC_PWN_EN, true); 
                mdelay(500);                 
                break; 
  
2.在某個點關閉喇叭, 一定要在播放聲音時開啟喇叭(將此PIN拉LOW) 
static int sgtl5000_pcm_hw_params(struct snd_pcm_substream *substream, 
                                  struct snd_pcm_hw_params *params, 
                                  struct snd_soc_dai *dai) 
{ 
        gpio_set_value(SABRESD_CODEC_PWN_EN, false); 
        struct snd_soc_pcm_runtime *rtd = substream->private_data 
  
3.打完收工 |   
 
 
 
 |