0

alsa API を使用してヘッドセットの挿入と取り外しを検出できますか? どの API を使用すればよいですか? 私のカーネルは ARM で動作する 3.0 Linux です。

4

1 に答える 1

3

組み込みプロジェクトにこの機能を正確に求めていたので、いくつかの調査を行ったところ、ジャック挿入検出のALSAには一般的なサポートがないという結論に達しました(約6か月前)。

興味深いことに、使用してたコーデックドライバ(tlv310aic3xxx)でヘッドフォン(およびマイク)の検出サポートが見つかりましたが、上位層には組み込まれていないようです。これが存在する理由はAndroidにあると思います。

このサポートを追加するには、基本的に2つの方法があります。

  1. コーデックドライバにサポートを追加します。おそらくsysfs、ユーザースペース内の何かがブロックできるノードを公開します。

  2. コーデックが接続されているI2Cバスへのアクセスを強制し(コーデックドライバは通常、デバイスを「所有」します)、ユーザースペースから関連するレジスタをプログラムします。

コーデックは挿入イベントを検出できますが、CPUに何らかの方法で割り込みをかける必要があるという点で、追加のアーキテクチャ上の問題に直面する可能性があります。tlv310aic3xxxデバイスにはプログラム可能なGPIOピンがあり、メインCPUの割り込みラインに接続できます(組み込みプラットフォームの場合、これは別のGPIOラインになります)。これがないと、ポーリングする必要があります。

于 2013-01-25T16:19:52.097 に答える