Chinaunix首页 | 论坛 | 博客
  • 博客访问: 493021
  • 博文数量: 154
  • 博客积分: 746
  • 博客等级: 入伍新兵
  • 技术积分: 1129
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-20 09:20
个人简介

此生既入苦寒山,何妨再攀险峰!

文章分类

全部博文(154)

文章存档

2017年(1)

2016年(2)

2015年(25)

2014年(24)

2013年(8)

2012年(15)

2011年(79)

分类: LINUX

2015-08-27 09:22:19

一、alsa库的时候版本:
如果你们目前不需要支持Line-in插拔检测,只需要修改一点地方,就可以支持Line-in功能了。
修改点如下:
kernel/sound/arm/ak39_codec.c中如下函数,其中修改点,在红色的地方:
static int ak39_codec_probe(struct platform_device *pdev)
{
。。。。
for(i=0; i<MIXER_DST_COUNT; i++) {
set_route_src_on_dst(codec, i, default_route[i], SOURCE_MIXED_ALL_MASK);
}
。。。。。
 
}
 
只需要将下面的红色的字体标识的地方SOURCE_MIC,修改为:SOURCE_LINEIN
static int default_route[MIXER_DST_COUNT] = {
[MIXER_ADDR_DST_HP] = SOURCE_DAC,
    [MIXER_ADDR_DST_ADC2] = SOURCE_MIC,
};
修改后,支持line-in设置如下:
static int default_route[MIXER_DST_COUNT] = {
[MIXER_ADDR_DST_HP] = SOURCE_DAC,
    [MIXER_ADDR_DST_ADC2] = SOURCE_LINEIN ,
};
这样你们系统启动后,就固定支持Line-in功能了,修改完成后,你们可以测试一下功能是否正常

二、pcm库的时候实现:
把驱动里面的:
if (ak_gpio_getpin(pcm->linindet_gpio.pin) ==
                pcm->linindet_gpio.value) {
            /* linein is plugged in */
            pcm->capture_dectect |= CAPTURE_DET_LINEIN;
            irq_set_irq_type(pcm->linindet_irq, pcm->lininoff_irqType);
            set_channel_source(pcm, MIXER_SRC_ADC2, SOURCE_LINEIN);
            pcm->cptrdev = CPTRDEV_LI;
            pr_info("akpcm probe: linein on\n");
        } else {
            pcm->capture_dectect &= ~CAPTURE_DET_LINEIN;// pcm->capture_dectect |= CAPTURE_DET_LINEIN;
            irq_set_irq_type(pcm->linindet_irq, pcm->lininon_irqType);
            set_channel_source(pcm, MIXER_SRC_ADC2, SOURCE_MIC);//set_channel_source(pcm, MIXER_SRC_ADC2, SOURCE_LINEIN);
            pcm->cptrdev = CPTRDEV_MIC;
            pr_info("akpcm probe: linein off\n");
        }
改成全部是linein的方式。
阅读(1853) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~