ALSA:耳机插孔感应的API是什么?

时间:2013-01-25 15:57:15

标签: c linux audio alsa

我可以使用alsa API检测耳机的插入和移除吗?我应该使用哪种API?我的内核是在Linux上运行的3.0 Linux。

1 个答案:

答案 0 :(得分:3)

为嵌入式项目准确地想要这个功能,我做了一些调查并得出结论(大约6个月前),ALSA没有任何通用支持插孔检测。

有趣的是,我在我正在使用的编解码器驱动程序(tlv310aic3xxx)中找到找到耳机(和麦克风)检测支持,但似乎没有检测到任何上层。我怀疑存在的原因是Android。

基本上有两种方法可以添加此支持:

  1. 添加对编解码器驱动程序的支持 - 可能会暴露sysfs节点,然后用户空间中的某些内容可以阻止。

  2. 强制访问编解码器挂起的I2C总线(编解码器驱动程序通常“拥有”设备)并从用户空间编程相关寄存器。

  3. 您可能面临一个额外的架构问题,因为虽然编解码器可以检测插入事件,但它需要某种方式来中断CPU。 tlv310aic3xxx器件具有可编程GPIO引脚,可以连接到主CPU上的中断线(如果在嵌入式平台上,这将是另一条GPIO线)。没有这个,你需要轮询它。