ASoC平臺驅動程式
阿新 • • 發佈:2018-10-31
ASoC平臺驅動程式
ASoC平臺驅動程式類可分為音訊DMA驅動程式,SoC DAI驅動程式和DSP驅動程式。平臺驅動程式僅針對SoC CPU,並且必須沒有特定於板的程式碼。
音訊
平臺DMA驅動程式可選擇支援以下ALSA操作: -
/ * SoC音訊操作* /
struct snd_soc_ops {
int(* startup)(struct snd_pcm_substream *);
void(* shutdown)(struct snd_pcm_substream *);
int(* hw_params)(struct snd_pcm_substream *,struct snd_pcm_hw_params *);
int(* hw_free)(struct snd_pcm_substream *);
int(* prepare)(struct snd_pcm_substream *);
int(* trigger)(struct snd_pcm_substream *,int);
};
平臺驅動程式通過struct snd_soc_platform_driver匯出其DMA功能: -
struct snd_soc_platform_driver {
char * name;
int(* probe)(struct platform_device * pdev);
int(* remove)(struct platform_device * pdev);
int(* suspend)(struct platform_device * pdev,struct snd_soc_cpu_dai * cpu_dai);
int(* resume)(struct platform_device * pdev,struct snd_soc_cpu_dai * cpu_dai);
/ * pcm建立和銷燬* /
int(* pcm_new)(struct snd_card *,struct snd_soc_codec_dai *,struct snd_pcm *);
void(* pcm_free)(struct snd_pcm *);
/ *
*對於平臺引起的延遲報告。
* 可選的。
* /
snd_pcm_sframes_t(* delay)(struct snd_pcm_substream *,
struct snd_soc_dai *);
/ * platform stream ops * /
struct snd_pcm_ops * pcm_ops;
};
有關音訊DMA的詳細資訊,請參閱ALSA驅動程式文件。 http://www.alsa-project.org/~iwai/writing-an-alsa-driver/
示例DMA驅動程式是soc / pxa / pxa2xx-pcm.c
SoC DAI驅動程式
每個SoC DAI驅動程式必須提供以下功能: -
- 數字音訊介面(DAI)描述
- 數字音訊介面配置
- PCM的描述
- SYSCLK配置
- 暫停和恢復(可選)
有關專案1 - 4的說明,請參閱codec.txt。
SoC DSP驅動程式
每個SoC DSP驅動器通常提供以下功能: -
- DAPM圖
- 攪拌機控制
- 進出DSP緩衝區的DMA IO(如果適用)
- DSP前端(FE)PCM裝置的定義。
有關第4項的說明,請參閱DPCM.txt。