一、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) |