我有一个基于 imx28 CPU 的定制板。 CPU 的串行端口连接到调制解调器的 PCM 输出。我必须为调制解调器的 PCM 接口(interface)开发一个驱动程序,使其成为 ALSA SoC 的一部分。你能指出内核树中与我的设置重新组合的一些驱动程序吗?
最佳答案
请参阅 Linux 源代码中的 Documentation/sound/alsa/soc
目录。它解释了 ASoC 驱动程序如何分为三类:
- 编解码器驱动程序:它们定义了音频控制、接口(interface)功能、DAPM 定义和编解码器 I/O 功能。在这种情况下,您的调制解调器被视为“编解码器”。在那种情况下,您的 CODEC 驱动程序可能会非常小,只需定义 PCM 采样率(假设它是固定的,例如 8000 个样本/秒)和数据格式(例如 16 位线性)。
- 查看
sound/soc/codecs
中的源代码- 如果您有 i.MX28 EVK(评估套件),请特别查看
sgtl5000.c
和mxs_spdif.c
,因为 i.MX28 EVK 具有这些两个编解码器,您可以看到驱动程序如何使它们工作。
- 如果您有 i.MX28 EVK(评估套件),请特别查看
- 查看
- 平台驱动程序:平台的音频 DMA 引擎和音频接口(interface)驱动程序(特别是适用于您的案例的 PCM),该平台是 Freescale MXS 芯片系列。
- 机器驱动程序:任何机器特定的控件和音频事件。
对于平台和机器驱动程序,请参阅 sound/soc/mxs
中的以下文件。我不太清楚哪些是“平台驱动程序”,哪些是“机器驱动程序”,因为它们没有明确说明。
mxs-spdif.c
和mxs-spdif-dai.c
,用于 S/PDIF CODEC 的 S/PDIF 接口(interface)(仅输出)。mxs-devb.c
和mxs-dai.c
,用于 SGTL5000 CODEC 的 SAIF 接口(interface)。mxs-pcm.c
我认为它处理 DMA 的东西。
但我不知道 i.MX28 上是否有同步串行端口 (SSP) 外围设备的示例代码,这是您感兴趣的。
关于linux - 带有来自调制解调器的 PCM 接口(interface)的 Alsa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11740507/