Chinaunix首页 | 论坛 | 博客
  • 博客访问: 460866
  • 博文数量: 107
  • 博客积分: 6073
  • 博客等级: 准将
  • 技术积分: 790
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-14 15:34
文章分类

全部博文(107)

文章存档

2010年(1)

2009年(106)

分类: LINUX

2009-08-18 15:54:35

这几天和alsa的bugtracker上的人交流了下,终于把这个问题给解决了。其实问题很简单,默认的alsa驱动在耳机插入的时候只禁用了左右声道的输出,ideapad上多出来了一个,只要找到低音炮的输出通道然后添加到自动禁用的函数中去就行了。
解 决方法:下载alsa全套驱动(理论上哪个版本都行,本人用的是1.0.19,为方便起见建议下载这个版本),包括alsa-driver(需要修改)、 alsa-lib和alsa-ultis,然后将他们全部解压出来。按照driver->lib->ultis的顺序安装。
1.安装alsa-driver,需要修改alsa-kernel/pci/hda/patch_conexant.c,我把修改之后的文件放到附件里去,需要的人直接拿回去覆盖就行了,下面贴出diff:
代码:
--- patch_conexant.c    2009-01-19 19:08:58.000000000 +0800
+++ /media/g/Linux相关程序/alsa/patch_conexant.c        2009-04-24 13:34:10.000000000 +0800
@@ -1639,6 +1639,15 @@
        { 2, NULL },
};

+static void cxt5051_update_subwoofer(struct hda_codec *codec)
+{
+       struct conexant_spec *spec = codec->spec;
+       unsigned int pinctl;
+       pinctl = (!spec->hp_present && spec->cur_eapd) ? PIN_OUT : 0;
+       snd_hda_codec_write(codec, 0x1b, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
+                           pinctl);
+}
+
static void cxt5051_update_speaker(struct hda_codec *codec)
{
        struct conexant_spec *spec = codec->spec;
@@ -1707,6 +1716,7 @@
                                     AC_VERB_GET_PIN_SENSE, 0) &
                AC_PINSENSE_PRESENCE;
        cxt5051_update_speaker(codec);
+       cxt5051_update_subwoofer(codec);
}

/* unsolicited event for HP jack sensing */


然后
代码:
./configure --prefix=/usr --with-cards=hda-intel
make
sudo make install

就把driver安装了

2.lib和ultis的 安装:
这个简单,先安装lib,再安装ultis,命令都一样:
代码:
./configure --prefix=/usr
make
sudo make install

然后重启,搞定。
阅读(1204) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~