linux - 带有来自调制解调器的 PCM 接口(interface)的 Alsa

标签 linux kernel driver embedded-linux alsa

我有一个基于 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.cmxs_spdif.c,因为 i.MX28 EVK 具有这些两个编解码器,您可以看到驱动程序如何使它们工作。
  • 平台驱动程序:平台的音频 DMA 引擎和音频接口(interface)驱动程序(特别是适用于您的案例的 PCM),该平台是 Freescale MXS 芯片系列。
  • 机器驱动程序:任何机器特定的控件和音频事件。

对于平台和机器驱动程序,请参阅 sound/soc/mxs 中的以下文件。我不太清楚哪些是“平台驱动程序”,哪些是“机器驱动程序”,因为它们没有明确说明。

  • mxs-spdif.cmxs-spdif-dai.c,用于 S/PDIF CODEC 的 S/PDIF 接口(interface)(仅输出)。
  • mxs-devb.cmxs-dai.c,用于 SGTL5000 CODEC 的 SAIF 接口(interface)。
  • mxs-pcm.c 我认为它处理 DMA 的东西。

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

关于linux - 带有来自调制解调器的 PCM 接口(interface)的 Alsa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11740507/

相关文章:

linux - 如果不同文件中相同位置的字段值为 "zero",则修改一个文件的字段值

c++ - 2个或更多进程如何与键盘交互?

hadoop - 我们如何使用Reducers将结果数据直接插入到外部RDBMS中。您必须确保做什么?以及为什么

linux - Linux中mmap的时间复杂度是多少?

linux - 如何编写脚本对多个 csv 文件执行一些基本操作

linux - 上下文切换测量时间

python - Jupyter Notebook内核安装报错

c - WinDDK : Running My First Driver

c - 需要一个内核模式 API 来找到用户模式 ​​Win32 Dll 的基地址

c - 在 linux 中使用 c 编程的键盘处理程序