ES 8323 CODEC駆動
4461 ワード
Codec driver example(原文アドレスはこちら)
Codec駆動(es 8323.c)
DeviceTree Describe
&i2c2 {
es8323: es8323@10 {
compatible = "es8323";
reg = <0x10>;
spk-con-gpio = ;
hp-con-gpio = ;
hp-det-gpio = ;
hub_rest = ;
hub_en = ;
};
};
Machineドライバ(rk_es 8323.c rockchipプラットフォーム)
DeviceTree Describe
/ {
rockchip-es8323 {
compatible = "rockchip-es8323";
dais {
dai0 {
audio-codec = ;
audio-controller = ;
format = "i2s";
};
};
};
};
Platform駆動(rk_i 2 s.c rockchipプラットフォーム)
DeviceTree Describe
i2s: rockchip-i2s@0xff890000 {
compatible = "rockchip-i2s";
reg = <0xff890000 0x10000>;
i2s-id = <0>;
clocks = , , ;
clock-names = "i2s_clk","i2s_mclk", "i2s_hclk";
interrupts = ;
dmas = , ;
dma-names = "tx", "rx";
pinctrl-names = "default", "sleep";
pinctrl-0 = ;
pinctrl-1 = ;
};
DatasheetのAddress MappingからI 2 Sコントローラがマッピングされた場所を見つけることができます
割り込み番号(SPI[85])
DMA番号(tx[0],rx[1])
I 2 Sレジスタ情報,32 bit,ステップ4
Usage
es 8323.dtsiをプライマリdtsに含める
#include "es8323.dtsi"
codecドライバのロード
insmod es8323.ko
cat /sys/kernel/debug/asoc/codecs
(i2c_driver name.i2c -I2C )
ES8323 codec.2-0010
cat /sys/kernel/debug/asoc/dais
ES8323 HiFi
platformドライバのロード
insmod rk_i2s.ko
cat /sys/kernel/debug/asoc/dais
(i2s .dainame)
ff890000.rockchip-i2s
cat /sys/kernel/debug/asoc/platforms
(i2s .dainame)
ff890000.rockchip-i2s
machineドライバのロード
insmod rk_es8323.ko , dai
ES8323 HiFi ff890000.rockchip-i2s mapping ok
すべてのprobeが成功すると、次のディレクトリに関連情報が表示されます.
/dev/snd/
/proc/asound/cards
/sys/kernel/debug/asoc/
/sys/class/sound/
Test
レコーディング
tinycap test.wav
再生
tinyplay test.wav
パラメータ制御(すべての調整可能なパラメータを表示)
tinymix
パラメータ値の表示
tinymix
パラメータ値の変更
tinymix
ヘッドセット検出
参考記事Android 4.×イヤホン挿抜検査
参考記事Androidイヤホン挿抜処理の流れ
名詞の解釈
ヘッドフォン
マイク
ヘッドセット(イヤホン)マイク付きヘッドフォンヘッドセットヘッドセットヘッドフォン+micphone
Androidを設定してInputEventを使用して検出
frameworks/base/core/res/res/values/configを変更する.xml
true
true
ドライバに関連コードを追加するには、次の手順に従います。
snd_soc_jack_new(codec, "Headset Jack", SND_JACK_HEADSET, &chip->jack);
snd_soc_jack_report(&chip->jack, SND_JACK_HEADPHONE, SND_JACK_HEADSET);
デバッグ
adb shell getevent
Attached
spin lock
参考記事
PCMとは
参考記事
PCMは英語Pulse-code modulationの略で、中国語訳名はパルス符号化変調
PCMはアナログからデジタル信号に音声を変換する技術です
Playback:ユーザースペースのアプリケーションから送られてきたPCMデータを、人間の耳で認識できるアナログオーディオに変換する方法
Capture:micをアナログ信号にピックアップし、サンプリング、量子化し、PCM信号に変換してユーザー空間に送り返すアプリケーション