我有一个基于imx28 CPU的定制板。 CPU的串行端口连接到调制解调器的PCM输出。我必须为调制解调器的PCM接口(interface)开发驱动程序,以使其成为ALSA SoC的一部分。您能指出内核树​​中与我的设置相似的一些驱动程序吗?

最佳答案

请参阅Linux源代码中的Documentation/sound/alsa/soc目录。它说明了ASoC驱动程序如何分为三类:

  • 编解码器驱动程序:这些定义了音频控件,接口(interface)功能,DAPM定义和编解码器I/O功能。在这种情况下,将您的调制解调器视为“CODEC”。在那种情况下,您的CODEC驱动程序可能会非常小,只需定义PCM采样率(假设它是固定的,例如8000个采样/秒)和数据格式(例如16位线性)即可。
  • 查看sound/soc/codecs中的源代码
  • 如果您有i.MX28 EVK(评估套件),请特别关注sgtl5000.cmxs_spdif.c,因为i.MX28 EVK具有这两个编解码器,您可以看到驱动程序如何使它们工作。
  • 平台驱动程序:平台的音频DMA引擎和音频接口(interface)驱动程序(具体来说,是您的情况下的PCM),该平台是飞思卡尔MXS芯片系列。
  • 机器驱动程序:任何机器特定的控件和音频事件。

  • 有关平台和机器驱动程序,请参见sound/soc/mxs中的以下文件。关于哪个被认为是“平台驱动程序”和哪个是“机器驱动程序”,我不清楚,因为他们没有明确说明。
  • mxs-spdif.cmxs-spdif-dai.c,它们是S/PDIF编解码器的S/PDIF接口(interface)(仅输出)。
  • mxs-devb.cmxs-dai.c,用于SGTL5000 CODEC的SAIF接口(interface)。
  • 我认为
  • mxs-pcm.c处理DMA的东西。

  • 但是我不知道i.MX28上是否有用于同步串行端口(SSP)外设的示例代码,这是您感兴趣的。

    07-24 13:41