关于 Maya44 USB 音频支持的说明

注意

以下是 Rainer 补丁的原始文档,当前 maya44 代码基于此。某些内容可能已过时,但我在此保留以供参考 -- tiwai

2008年2月14日

Rainer Zimmermann <mail@lightshed.de>

开发状态

该驱动程序的开发是在 Piotr Makowski ( oponek@gmail.com ) 的倡议下进行的,并由 Lars Bergmann 资助。开发工作由 Rainer Zimmermann ( mail@lightshed.de ) 执行。

ESI 为开发工作提供了一块 Maya44 样卡。

然而,不幸的是,事实证明很难获得详细的编程信息,因此我(Rainer Zimmermann)不得不通过实验和推测来找出一些特定于卡的信息。 仍然缺少一些信息(特别是几个 GPIO 位)。

这是发布到 alsa-devel 邮件列表的 Maya44 驱动程序的第一个测试版本(2008 年 2 月 5 日)。

以下功能有效,经 Rainer Zimmermann 和 Piotr Makowski 测试

  • 所有采样率下的播放和捕获

  • 输入/输出电平

  • 交叉混音

  • 线路/麦克风切换

  • 幻象电源开关

  • 模拟监听,又称旁路

以下功能应该有效,但尚未完全测试

  • 通道 3+4 模拟 - S/PDIF 输入切换

  • S/PDIF 输出

  • M/IO/DIO 扩展卡上的所有输入/输出

  • 内部/外部时钟选择

特别是,我们非常希望任何可以使用 M/IO/DIO 扩展卡的人员对这些功能进行测试。

似乎不起作用的事情

  • “alsamixer” 中的电平表(“多轨”)似乎对信号没有反应(如果这是一个错误,可能是在现有的 ICE1724 代码中)。

  • Ardour 2.1 似乎只能通过 JACK 工作,而不是直接使用 ALSA 或通过 OSS 工作。 这仍然需要追踪。

驱动程序详细信息

添加了以下文件

  • pci/ice1724/maya44.c - Maya44 特定代码

  • pci/ice1724/maya44.h

  • pci/ice1724/ice1724.patch

  • pci/ice1724/ice1724.h.patch - 建议的 ice1724.h 补丁(参见采样率)

  • i2c/other/wm8776.c - 用于 Wolfson WM8776 编解码器的底层访问例程

  • include/wm8776.h

请注意,wm8776.c 代码旨在独立于卡,并且实际上不会向 ALSA 基础设施注册编解码器。 这在 maya44.c 中完成,主要是因为某些 WM8776 控件以 Maya44 特定的方式使用,并且应该适当地命名。

在 pci/ice1724 中创建了以下文件,只是从 alsa-kernel 树中 #include 了相应的文件

  • wtm.h

  • vt1720_mobo.h

  • revo.h

  • prodigy192.h

  • pontis.h

  • phase.h

  • maya44.h

  • juli.h

  • aureon.h

  • amp.h

  • envy24ht.h

  • se.h

  • prodigy_hifi.h

我希望这是正确的方式。

采样率

Maya44 卡(或更准确地说,Wolfson WM8776 编解码器)允许播放的最大采样率为 192 kHz,捕获的最大采样率为 92 kHz。

由于 ICE1724 芯片仅允许一个全局采样率,因此处理方式如下

  • 在 maya44 卡上的任何打开的 PCM 设备上设置采样率将始终设置所有播放和捕获通道的全局采样率。

  • 在驱动程序的当前状态下,即使对于捕获设备,也允许设置高达 192 kHz 的速率。

避免以高于 96kHz 的速率进行捕获,即使它似乎可以工作。 编解码器实际上无法以如此高的速率进行捕获,这意味着质量很差。

我建议一些额外的代码,用于限制在捕获 pcm 设备上设置时的采样率。 然而,由于全局采样率,这种逻辑会有些问题。

建议的代码(目前已禁用)位于 ice1712.h.patch、ice1724.c 和 maya44.c 中(在 pci/ice1712 中)。

声音设备

PCM 设备对应于输入/输出,如下所示(假设 Maya44 是卡 #0)

  • hw:0,0 输入 - 立体声,模拟输入 1+2

  • hw:0,0 输出 - 立体声,模拟输出 1+2

  • hw:0,1 输入 - 立体声,模拟输入 3+4 或 S/PDIF 输入

  • hw:0,1 输出 - 立体声,模拟输出 3+4(和 SPDIF 输出)

混音器控件的命名

(有关信号流的更多信息,请参考 ESI Maya44 手册的第 24 页上的框图,或 ESI windows 软件中的框图)。

PCM

通道 1+2 的(数字)输出电平

PCM 1

通道 3+4 相同

麦克风幻象 +48V

输入 1/2 上静电麦克风的 +48V 幻象电源开关。

确保在任何其他源连接到输入 1/2 时未打开此开关。 它可能会损坏源和/或 maya44 卡。

麦克风/线路输入

如果开关打开,则输入插孔 1/2 为麦克风输入(单声道),否则为线路输入(立体声)。

旁路

通道 1+2 的 ADC 输入到输出的模拟旁路。 与 Windows 驱动程序中的“监听”相同。

旁路 1

通道 3+4 相同。

交叉混音

从通道 1+2 到通道 3+4 的交叉混音器

交叉混音 1

从通道 3+4 到通道 1+2 的交叉混音器

IEC958 输出

S/PDIF 输出的开关。

ESI Windows 驱动程序不支持此功能。 S/PDIF 应该输出与通道 3+4 相同的信号。[未经测试!]

数字输出选择器

这些开关允许从 ADC 到 DAC 的直接数字路由。 每个开关确定到一个 DAC 的数字输入数据来自哪里。 ESI Windows 驱动程序不支持它们。 对于正常操作,它们都应设置为“PCM 输出”。

硬件

输出源通道 1

硬件 1

输出源通道 2

硬件 2

输出源通道 3

硬件 3

输出源通道 4

硬件 4 ... 硬件 9

未知功能,保留用于测试。

其中一些可能控制 S/PDIF 输出。 如果这些被证明未使用,它们将在以后的驱动程序版本中消失。

每个数字输出选择器的可选值是

PCM 输出

相应通道的 DAC 输出(默认设置)

输入 1 ... 输入 4

直接从所选输入通道的 ADC 输出进行路由