我可以使用alsa API检测耳机的插入和移除吗?我应该使用哪种API?我的内核是在Linux上运行的3.0 Linux。
答案 0 :(得分:3)
为嵌入式项目准确地想要这个功能,我做了一些调查并得出结论(大约6个月前),ALSA没有任何通用支持插孔检测。
有趣的是,我在我正在使用的编解码器驱动程序(tlv310aic3xxx)中找到找到耳机(和麦克风)检测支持,但似乎没有检测到任何上层。我怀疑存在的原因是Android。
基本上有两种方法可以添加此支持:
添加对编解码器驱动程序的支持 - 可能会暴露sysfs
节点,然后用户空间中的某些内容可以阻止。
强制访问编解码器挂起的I2C总线(编解码器驱动程序通常“拥有”设备)并从用户空间编程相关寄存器。
您可能面临一个额外的架构问题,因为虽然编解码器可以检测插入事件,但它需要某种方式来中断CPU。 tlv310aic3xxx器件具有可编程GPIO引脚,可以连接到主CPU上的中断线(如果在嵌入式平台上,这将是另一条GPIO线)。没有这个,你需要轮询它。