- 履歴一覧
- ソース を表示
- linux-2.6/ALSA は削除されています。
参照元†
せつめい
とりあえずメモ領域†
snd-soc-core.ko†
SoC のサウンドカードドライバが使う共通モジュール。†
- /lib/modules/current/kernel/sound/soc/snd-soc-core.ko
にインストールされる。
謎な点†
- snd_soc_new_pcms()?
- AC97 限定なのか??
- sound/soc/codecs/ の下でしか呼ばれないのはなぜ?
- snd_soc_register_dai()?
- snd_soc_register_platform()?
デバイス追加時の動き†
- snd-soc-core は init 時に "soc-audio" という名前のドライバを
platform バスに登録する。
- SoC 用サウンドカードドライバなどが、
platform バスに "soc-audio" ドライバを使う platform デバイスを追加したとき、
snd-soc-core の soc_probe 関数(probe コールバック)が呼ばれる。
デバイスの追加の仕方(SoC 用サウンドカードドライバ側の init などで行う)
------------------------------------------------------------------------
struct snd_soc_device soc_dev = {
...
};
static int __init xxxx_soc_init(void)
{
dev = platform_device_alloc("soc-audio", -1); //★1
platform_set_drvdata(dev, &soc_dev); //★2
soc_dev.dev = &dev->dev; //★3
ret = platform_device_add(dev);
(...)
}
- 説明
- ★1: "soc-audio" ドライバを使う platform デバイスを作成する。
- ★2: platform デバイスに snd_soc_device へのポインタを持たせる。
- ★3: snd_soc_device の dev メンバは、platform デバイスが持っている dev メンバと同じデバイス構造体を指す。
- soc_probe 以降は下記のような処理が行われる。
snd_soc_instantiate_card での処理†
- dai_link の init コールバック
- snd_soc_card の dai_link(snd_soc_dai_link 型の配列へのポインタ)の全要素に対して、
init 関数ポインタをコールバックする。
コメント†