花費了好久時間 , 終於完成 TLV320AIC3110 Codec Driver 了 !!
整個結構很亂 , 不過按照下列的 Function 動作 , 把相對應的 Code 填寫完畢 ,
差不多就完成了 , 剩下的 DAPM 部分 , 我還不是很了解 , 我只將會用到的 Register
用 amixer 的方式完成 , 其他進階的 Wadge 部份 , 我都先不去實作 , 等有需要再來
修補 !!
soc_pcm_open()
{
cpu_dai->driver->ops->startup() => dabinci_mcaps_startup();
platform->driver->ops->open() => davinci_pcm_open();
codec_dai->driver->ops->startup() => aic3110_startup();
rtd->dai_link->ops->startup() =>
}
soc_pcm_hw_params()
{
rtd->dai_link->ops->hw_params() => evm_aic3110_hw_params()
snd_soc_dai_set_fmt(codec_dai) => aic3110_set_dai_fmt()
snd_soc_dai_set_fmt(cpu_dai) => davinci_mcasp_set_dai_fmt()
snd_soc_dai_set_sysclk(codec_sysclk) => aic3110_set_dai_sysclk()
??? snd_soc_dai_set_sysclk(cpu_sysclk) =>
codec_dai->driver->ops->hw_params() => aic3110_hw_params()
cpu_dai->driver->ops->hw_params() => davinci_mcasp_hw_params()
platform->driver->ops->hw_params() =>
}
soc_pcm_trigger()
{
codec_dai->driver->ops->trigger() => None.
platform->driver->ops->trigger() => davinci_pcm_trigger()
cpu_dai->driver->ops->trigger() => davinci_mcasp_trigger()
}
soc_pcm_prepare()
{
rtd->dai_link->ops->prepare() =>
platform->driver->ops->prepare() => davinci_pcm_prepare();
codec_dai->driver->ops->prepare() => None
cpu_dai->driver->ops->prepare() => None
}
soc_pcm_pointer()
{
platform->driver->ops->pointer() =>
cpu_dai->driver->ops->delay() =>
codec_dai->driver->ops->delay =>
platform->driver->delay =>
}
沒有留言:
張貼留言