요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
=================================
Notes on Maya44 USB Audio Support
=================================
.. note::
The following is the original document of Rainer's patch that the
current maya44 code based on. Some contents might be obsoleted, but I
keep here as reference -- tiwai
Feb 14, 2008
Rainer Zimmermann <[email protected]>
STATE OF DEVELOPMENT
====================
This driver is being developed on the initiative of Piotr Makowski ([email protected]) and financed by Lars Bergmann.
Development is carried out by Rainer Zimmermann ([email protected]).
ESI provided a sample Maya44 card for the development work.
However, unfortunately it has turned out difficult to get detailed programming information, so I (Rainer Zimmermann) had to find out some card-specific information by experiment and conjecture. Some information (in particular, several GPIO bits) is still missing.
This is the first testing version of the Maya44 driver released to the alsa-devel mailing list (Feb 5, 2008).
The following functions work, as tested by Rainer Zimmermann and Piotr Makowski:
- playback and capture at all sampling rates
- input/output level
- crossmixing
- line/mic switch
- phantom power switch
- analogue monitor a.k.a bypass
The following functions *should* work, but are not fully tested:
- Channel 3+4 analogue - S/PDIF input switching
- S/PDIF output
- all inputs/outputs on the M/IO/DIO extension card
- internal/external clock selection
*In particular, we would appreciate testing of these functions by anyone who has access to an M/IO/DIO extension card.*
Things that do not seem to work:
- The level meters ("multi track") in 'alsamixer' do not seem to react to signals in (if this is a bug, it would probably be in the existing ICE1724 code).
- Ardour 2.1 seems to work only via JACK, not using ALSA directly or via OSS. This still needs to be tracked down.
DRIVER DETAILS
==============
the following files were added:
* pci/ice1724/maya44.c - Maya44 specific code
* pci/ice1724/maya44.h
* pci/ice1724/ice1724.patch
* pci/ice1724/ice1724.h.patch - PROPOSED patch to ice1724.h (see SAMPLING RATES)
* i2c/other/wm8776.c - low-level access routines for Wolfson WM8776 codecs
* include/wm8776.h
Note that the wm8776.c code is meant to be card-independent and does not actually register the codec with the ALSA infrastructure.
This is done in maya44.c, mainly because some of the WM8776 controls are used in Maya44-specific ways, and should be named appropriately.
the following files were created in pci/ice1724, simply #including the corresponding file from the alsa-kernel tree:
* 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
*I hope this is the correct way to do things.*
SAMPLING RATES
==============
The Maya44 card (or more exactly, the Wolfson WM8776 codecs) allow a maximum sampling rate of 192 kHz for playback and 92 kHz for capture.
As the ICE1724 chip only allows one global sampling rate, this is handled as follows:
* setting the sampling rate on any open PCM device on the maya44 card will always set the *global* sampling rate for all playback and capture channels.
* In the current state of the driver, setting rates of up to 192 kHz is permitted even for capture devices.
*AVOID CAPTURING AT RATES ABOVE 96kHz*, even though it may appear to work. The codec cannot actually capture at such rates, meaning poor quality.
I propose some additional code for limiting the sampling rate when setting on a capture pcm device. However because of the global sampling rate, this logic would be somewhat problematic.
The proposed code (currently deactivated) is in ice1712.h.patch, ice1724.c and maya44.c (in pci/ice1712).
SOUND DEVICES
=============
PCM devices correspond to inputs/outputs as follows (assuming Maya44 is card #0):
* hw:0,0 input - stereo, analog input 1+2
* hw:0,0 output - stereo, analog output 1+2
* hw:0,1 input - stereo, analog input 3+4 OR S/PDIF input
* hw:0,1 output - stereo, analog output 3+4 (and SPDIF out)
NAMING OF MIXER CONTROLS
========================
(for more information about the signal flow, please refer to the block diagram on p.24 of the ESI Maya44 manual, or in the ESI windows software).
PCM
(digital) output level for channel 1+2
PCM 1
same for channel 3+4
Mic Phantom+48V
switch for +48V phantom power for electrostatic microphones on input 1/2.
Make sure this is not turned on while any other source is connected to input 1/2.
It might damage the source and/or the maya44 card.
Mic/Line input
if switch is on, input jack 1/2 is microphone input (mono), otherwise line input (stereo).
Bypass
analogue bypass from ADC input to output for channel 1+2. Same as "Monitor" in the windows driver.
Bypass 1
same for channel 3+4.
Crossmix
cross-mixer from channels 1+2 to channels 3+4
Crossmix 1
cross-mixer from channels 3+4 to channels 1+2
IEC958 Output
switch for S/PDIF output.
This is not supported by the ESI windows driver.
S/PDIF should output the same signal as channel 3+4. [untested!]
Digital output selectors
These switches allow a direct digital routing from the ADCs to the DACs.
Each switch determines where the digital input data to one of the DACs comes from.
They are not supported by the ESI windows driver.
For normal operation, they should all be set to "PCM out".
H/W
Output source channel 1
H/W 1
Output source channel 2
H/W 2
Output source channel 3
H/W 3
Output source channel 4
H/W 4 ... H/W 9
unknown function, left in to enable testing.
Possibly some of these control S/PDIF output(s).
If these turn out to be unused, they will go away in later driver versions.
Selectable values for each of the digital output selectors are:
PCM out
DAC output of the corresponding channel (default setting)
Input 1 ... Input 4
direct routing from ADC output of the selected input channel
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
문서 성격과 개발 상태
1-54이 문서는 현재 Maya44 코드의 기반이 된 Rainer 패치의 2008-02-14 원문이다. 일부 내용은 오래됐을 수 있지만 참고용으로 보존되어 있다. 개발은 Piotr Makowski의 제안과 Lars Bergmann의 지원으로 시작됐고 Rainer Zimmermann이 수행했으며, ESI는 개발용 Maya44 샘플 카드를 제공했다.
상세 프로그래밍 정보 확보가 어려워 카드별 정보 일부는 실험과 추정으로 알아냈고, 특히 여러 GPIO 비트 정보는 여전히 빠져 있다. 이 문서는 2008-02-05 alsa-devel 메일링 리스트에 공개된 첫 테스트 버전을 설명한다.
시험 결과 모든 표본률의 재생·캡처, 입출력 레벨, crossmixing, line/mic 전환, phantom power, analog monitor 즉 bypass가 동작했다. 채널 3+4의 analog/S/PDIF 입력 전환, S/PDIF 출력, M/IO/DIO 확장 카드의 모든 입출력, 내부·외부 클록 선택은 동작해야 하지만 충분히 시험되지 않았다. 문서는 M/IO/DIO 확장 카드 사용자의 시험을 특별히 요청한다.
동작하지 않는 것으로 보인 항목도 있다. `alsamixer`의 `multi track` 레벨 미터는 입력 신호에 반응하지 않으며 기존 ICE1724 코드의 버그일 수 있다. Ardour 2.1은 ALSA 직접 또는 OSS 경로가 아니라 JACK을 통해서만 동작하는 것으로 보여 추가 조사가 필요하다.
원문이 구분한 검증 수준별 기능이다.
=================================
Notes on Maya44 USB Audio Support
=================================
.. note::
The following is the original document of Rainer's patch that the
current maya44 code based on. Some contents might be obsoleted, but I
keep here as reference -- tiwai
Feb 14, 2008
Rainer Zimmermann <[email protected]>
STATE OF DEVELOPMENT
====================
This driver is being developed on the initiative of Piotr Makowski ([email protected]) and financed by Lars Bergmann.
Development is carried out by Rainer Zimmermann ([email protected]).
ESI provided a sample Maya44 card for the development work.
However, unfortunately it has turned out difficult to get detailed programming information, so I (Rainer Zimmermann) had to find out some card-specific information by experiment and conjecture. Some information (in particular, several GPIO bits) is still missing.
This is the first testing version of the Maya44 driver released to the alsa-devel mailing list (Feb 5, 2008).
The following functions work, as tested by Rainer Zimmermann and Piotr Makowski:
- playback and capture at all sampling rates
- input/output level
- crossmixing
- line/mic switch
- phantom power switch
- analogue monitor a.k.a bypass
The following functions *should* work, but are not fully tested:
- Channel 3+4 analogue - S/PDIF input switching
- S/PDIF output
- all inputs/outputs on the M/IO/DIO extension card
- internal/external clock selection
*In particular, we would appreciate testing of these functions by anyone who has access to an M/IO/DIO extension card.*
Things that do not seem to work:
- The level meters ("multi track") in 'alsamixer' do not seem to react to signals in (if this is a bug, it would probably be in the existing ICE1724 code).
- Ardour 2.1 seems to work only via JACK, not using ALSA directly or via OSS. This still needs to be tracked down.
드라이버 파일과 전역 표본률
55-110추가된 파일은 `pci/ice1724/maya44.c`, `pci/ice1724/maya44.h`, `pci/ice1724/ice1724.patch`, 제안 패치 `pci/ice1724/ice1724.h.patch`, Wolfson WM8776 저수준 접근용 `i2c/other/wm8776.c`, `include/wm8776.h`다. `wm8776.c`는 카드 독립 코드를 의도하며 ALSA에 codec을 직접 등록하지 않는다. Maya44에서 WM8776 제어를 카드 특유 방식으로 사용하고 적절한 이름을 붙여야 하므로 등록은 `maya44.c`가 한다.
`pci/ice1724`에는 ALSA 커널 트리의 대응 파일을 단순히 포함하는 `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`도 만들었다. 작성자는 이것이 올바른 방식이기를 바란다고 덧붙였다.
카드 전용·codec 저수준·포함 래퍼 파일을 구분한다.
Maya44, 정확히는 Wolfson WM8776 codec은 재생 최대 192kHz, 캡처 최대 92kHz를 허용한다고 원문은 적는다. ICE1724는 전역 표본률 하나만 허용하므로 열린 Maya44 PCM 장치 하나에서 표본률을 설정하면 모든 재생·캡처 채널의 전역 표본률이 바뀐다.
현재 드라이버는 캡처 장치에도 최대 192kHz 설정을 허용하지만 96kHz를 넘는 캡처는 피해야 한다. 동작하는 것처럼 보여도 codec이 실제로 그 속도로 캡처할 수 없어 품질이 나쁘다. 캡처 PCM에서 표본률을 제한하는 추가 코드를 제안했지만 전역 표본률 때문에 논리가 까다롭다. 비활성화된 제안 코드는 원문 표기상 `ice1712.h.patch`, `ice1724.c`, `pci/ice1712`의 `maya44.c`에 있다.
PCM 하나의 설정이 모든 채널에 적용되는 ICE1724 제약이다.
DRIVER DETAILS
==============
the following files were added:
* pci/ice1724/maya44.c - Maya44 specific code
* pci/ice1724/maya44.h
* pci/ice1724/ice1724.patch
* pci/ice1724/ice1724.h.patch - PROPOSED patch to ice1724.h (see SAMPLING RATES)
* i2c/other/wm8776.c - low-level access routines for Wolfson WM8776 codecs
* include/wm8776.h
Note that the wm8776.c code is meant to be card-independent and does not actually register the codec with the ALSA infrastructure.
This is done in maya44.c, mainly because some of the WM8776 controls are used in Maya44-specific ways, and should be named appropriately.
the following files were created in pci/ice1724, simply #including the corresponding file from the alsa-kernel tree:
* 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
*I hope this is the correct way to do things.*
SAMPLING RATES
==============
The Maya44 card (or more exactly, the Wolfson WM8776 codecs) allow a maximum sampling rate of 192 kHz for playback and 92 kHz for capture.
As the ICE1724 chip only allows one global sampling rate, this is handled as follows:
* setting the sampling rate on any open PCM device on the maya44 card will always set the *global* sampling rate for all playback and capture channels.
* In the current state of the driver, setting rates of up to 192 kHz is permitted even for capture devices.
*AVOID CAPTURING AT RATES ABOVE 96kHz*, even though it may appear to work. The codec cannot actually capture at such rates, meaning poor quality.
I propose some additional code for limiting the sampling rate when setting on a capture pcm device. However because of the global sampling rate, this logic would be somewhat problematic.
The proposed code (currently deactivated) is in ice1712.h.patch, ice1724.c and maya44.c (in pci/ice1712).
PCM 장치와 믹서 제어 이름
111-186Maya44가 카드 0이라고 가정하면 `hw:0,0` 입력은 analog 1+2 스테레오, 출력은 analog 1+2 스테레오다. `hw:0,1` 입력은 analog 3+4 또는 S/PDIF 입력이고, 출력은 analog 3+4와 S/PDIF 출력이다.
카드 0의 입력·출력 장치를 물리 채널과 대응시킨다.
신호 흐름은 ESI Maya44 매뉴얼 24쪽 블록 다이어그램 또는 ESI Windows 소프트웨어를 참고한다. `PCM`은 채널 1+2의 디지털 출력 레벨, `PCM 1`은 채널 3+4의 레벨이다.
`Mic Phantom+48V`는 입력 1/2의 정전식 마이크용 +48V phantom power 스위치다. 다른 소스가 입력 1/2에 연결된 상태에서 켜면 소스나 Maya44 카드가 손상될 수 있으므로 절대 켜지 않는다. `Mic/Line input`을 켜면 입력 잭 1/2가 mono microphone 입력, 끄면 stereo line 입력이다.
`Bypass`는 채널 1+2의 ADC 입력을 출력으로 보내는 analog bypass이며 Windows 드라이버의 `Monitor`와 같다. `Bypass 1`은 채널 3+4에 해당한다. `Crossmix`는 채널 1+2를 3+4로, `Crossmix 1`은 채널 3+4를 1+2로 교차 혼합한다.
`IEC958 Output`은 S/PDIF 출력 스위치다. ESI Windows 드라이버는 지원하지 않으며 S/PDIF는 채널 3+4와 같은 신호를 출력해야 하지만 시험되지 않았다.
Digital output selector는 ADC에서 DAC로 직접 디지털 라우팅한다. 각 스위치는 특정 DAC의 디지털 입력 데이터 출처를 정하며 Windows 드라이버는 지원하지 않는다. 정상 동작에서는 모두 `PCM out`으로 둔다. `H/W`, `H/W 1`, `H/W 2`, `H/W 3`은 각각 출력 소스 채널 1~4이고, `H/W 4`~`H/W 9`는 시험을 위해 남긴 기능 미상 제어다. 일부는 S/PDIF 출력을 제어할 수 있으며 미사용으로 확인되면 향후 제거될 수 있다.
각 digital output selector의 값 `PCM out`은 해당 채널의 DAC 출력이며 기본값이다. `Input 1`~`Input 4`는 선택한 입력 채널의 ADC 출력을 직접 라우팅한다.
원문의 제어 이름과 신호 경로를 보존한다.
SOUND DEVICES
=============
PCM devices correspond to inputs/outputs as follows (assuming Maya44 is card #0):
* hw:0,0 input - stereo, analog input 1+2
* hw:0,0 output - stereo, analog output 1+2
* hw:0,1 input - stereo, analog input 3+4 OR S/PDIF input
* hw:0,1 output - stereo, analog output 3+4 (and SPDIF out)
NAMING OF MIXER CONTROLS
========================
(for more information about the signal flow, please refer to the block diagram on p.24 of the ESI Maya44 manual, or in the ESI windows software).
PCM
(digital) output level for channel 1+2
PCM 1
same for channel 3+4
Mic Phantom+48V
switch for +48V phantom power for electrostatic microphones on input 1/2.
Make sure this is not turned on while any other source is connected to input 1/2.
It might damage the source and/or the maya44 card.
Mic/Line input
if switch is on, input jack 1/2 is microphone input (mono), otherwise line input (stereo).
Bypass
analogue bypass from ADC input to output for channel 1+2. Same as "Monitor" in the windows driver.
Bypass 1
same for channel 3+4.
Crossmix
cross-mixer from channels 1+2 to channels 3+4
Crossmix 1
cross-mixer from channels 3+4 to channels 1+2
IEC958 Output
switch for S/PDIF output.
This is not supported by the ESI windows driver.
S/PDIF should output the same signal as channel 3+4. [untested!]
Digital output selectors
These switches allow a direct digital routing from the ADCs to the DACs.
Each switch determines where the digital input data to one of the DACs comes from.
They are not supported by the ESI windows driver.
For normal operation, they should all be set to "PCM out".
H/W
Output source channel 1
H/W 1
Output source channel 2
H/W 2
Output source channel 3
H/W 3
Output source channel 4
H/W 4 ... H/W 9
unknown function, left in to enable testing.
Possibly some of these control S/PDIF output(s).
If these turn out to be unused, they will go away in later driver versions.
Selectable values for each of the digital output selectors are:
PCM out
DAC output of the corresponding channel (default setting)
Input 1 ... Input 4
direct routing from ADC output of the selected input channel
요약·해설
maya44.rst:1-186Maya44 USB의 개발 상태, ICE1724 전역 표본률, PCM 매핑, phantom·bypass·crossmix·S/PDIF 출력 제어를 설명합니다.