1. 程式人生 > >ASoC平臺驅動程式

ASoC平臺驅動程式

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驅動程式必須提供以下功能: -

  1. 數字音訊介面(DAI)描述
  2. 數字音訊介面配置
  3. PCM的描述
  4. SYSCLK配置
  5. 暫停和恢復(可選)

有關專案1 - 4的說明,請參閱codec.txt。

SoC DSP驅動程式

每個SoC DSP驅動器通常提供以下功能: -

  1. DAPM圖
  2. 攪拌機控制
  3. 進出DSP緩衝區的DMA IO(如果適用)
  4. DSP前端(FE)PCM裝置的定義。

有關第4項的說明,請參閱DPCM.txt。