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


参考記事
  • 通常のスレッド間で共有オブジェクトに同時にアクセスするだけでspin_を使用する場合lock()/spin_unlock()
  • 割り込みと通常のスレッドの間で共有オブジェクトに同時にアクセスし、臨界領域を終了したと確信した場合、割り込みを開くにはspin_を使用します.lock_irq()/spin_unlock_irq()
  • 割り込みと通常のスレッドの間で共有オブジェクトに同時にアクセスし、臨界領域を終了した後も割り込みの状態を維持する場合はspin_を使用します.lock_irqsave()/spin_unlock_irqrestore()

  • PCMとは


    参考記事
    PCMは英語Pulse-code modulationの略で、中国語訳名はパルス符号化変調
    PCMはアナログからデジタル信号に音声を変換する技術です
    Playback:ユーザースペースのアプリケーションから送られてきたPCMデータを、人間の耳で認識できるアナログオーディオに変換する方法
    Capture:micをアナログ信号にピックアップし、サンプリング、量子化し、PCM信号に変換してユーザー空間に送り返すアプリケーション