我的 ALSA 内核补丁中缺少什么才能让 EAPD 正确关闭此内部扬声器?

我的 ALSA 内核补丁中缺少什么才能让 EAPD 正确关闭此内部扬声器?

我正在使用由已故的 OpenPeak Inc. 制造的类似相框的设备,称为 OpenFrame(在英国称为 O2 Joggler)。它有一个内置扬声器和一个 3.5mm 线路输出插座;其 STAC9202 编解码器芯片的其他连接均不会向最终用户公开。我已经将 Ubuntu Bionic 移植到设备上,除了音频驱动程序之外,一切都已完成。

回到内核 3.18,可以使用以下内核补丁和用户态 ALSA 补丁来使这两个输出正常工作,将插头插入线路输出,使内部扬声器正确静音。

03-stac9202-音频引脚调整.补丁

of1-stac9202.补丁

在内核 4.14 中,同样的技巧不再起作用,因此我重写了补丁,以更正确地向 ALSA 添加对 STAC9202 变体的支持。现在看起来像这样:

4.14-sigmatel-openframe.补丁

这似乎正确地排列了引脚配置,但是当将插头插入线路输出时,尽管内部扬声器的音频被静音,但每当设备正在处理时扬声器都会发出噼啪声。它似乎没有被正确断电,并且放大了一般电路噪声。拔下插头后,内部扬声器就会恢复声音,并且爆裂声会停止。这在多个设备上都是可靠的。

这是来自 crackling kernel 4.14 和working-just-fine kernel 3.18 的 alsa-info 输出。

3.18 和 4.14 的 alsa-info 输出

我对 ALSA 驱动程序和补丁没有足够的了解,并且多年来一直纯粹根据其他人使用的配置进行工作,因此我非常感谢有人查看 alsa-info 输出和新补丁来确定我应该去哪里从这里。我相信这都与 EAPD 控制有关,但我现在不知道有哪些控制选项。

理想情况下,我希望在插入插孔时能够正确地实现音频静音和切换。一个好处是失去 alsamixer 中未使用的(或至少无法访问的)音频输入和输出选项,并获得对内部扬声器和线路输出电平的单独控制(目前似乎是配对在一起的)。

相关内容