ALSA SoCドライバメモ No.002 private data
ALSA SoCドライバ開発でいちいちgrepするのが面倒な情報をメモしておく
それぞれのドライバでprivate dataをどこに置くのか?
dai link
- snd_soc_cardが自分の持ち物
- 設定方法 (probe時にsnd_soc_register_card前にやる) snd_soc_card_set_drvdata(&hoge_card, priv);
- 参照方法
- いろいろ面倒だが、stream->runtime->cardまで辿れば読める
struct snd_soc_pcm_runtime *rtd = substream->private_data; // streamから struct snd_soc_card *card = rtd->card; // runtimeから struct snd_soc_card *card = snd_kcontrol_chip(kcontrol); // mixerから struct hoge_priv *priv = snd_soc_card_get_drvdata(card);
cpu dai
- platform_device配下のdev pdev->dev
- 設定方法 dev_set_drvdata(&pdev->dev, priv); snd_soc_add_dai_controls(dai, ... // mixerに設定
- 参照方法
- struct snd_soc_dai daiから取れる struct hoge_priv priv = snd_soc_dai_get_drvdata(dai);
struct snd_soc_dai *dai = snd_kcontrol_chip(kcontrol); // mixerから
codec
- platform_device配下のdevかstruct i2c_client配下のdev pdev->dev i2c_client->dev
設定方法 i2c_set_clientdata(i2c, priv); dev_set_drvdata(dev, priv);
参照方法