Back to home page

OSCL-LXR

 
 

    


0001 =================================
0002 Notes on Maya44 USB Audio Support
0003 =================================
0004 
0005 .. note::
0006    The following is the original document of Rainer's patch that the
0007    current maya44 code based on.  Some contents might be obsoleted, but I
0008    keep here as reference -- tiwai
0009 
0010 Feb 14, 2008
0011 
0012 Rainer Zimmermann <mail@lightshed.de>
0013  
0014 STATE OF DEVELOPMENT
0015 ====================
0016 
0017 This driver is being developed on the initiative of Piotr Makowski (oponek@gmail.com) and financed by Lars Bergmann.
0018 Development is carried out by Rainer Zimmermann (mail@lightshed.de).
0019 
0020 ESI provided a sample Maya44 card for the development work.
0021 
0022 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.
0023 
0024 This is the first testing version of the Maya44 driver released to the alsa-devel mailing list (Feb 5, 2008).
0025 
0026 
0027 The following functions work, as tested by Rainer Zimmermann and Piotr Makowski:
0028 
0029 - playback and capture at all sampling rates
0030 - input/output level
0031 - crossmixing
0032 - line/mic switch
0033 - phantom power switch
0034 - analogue monitor a.k.a bypass
0035 
0036 
0037 The following functions *should* work, but are not fully tested:
0038 
0039 - Channel 3+4 analogue - S/PDIF input switching
0040 - S/PDIF output
0041 - all inputs/outputs on the M/IO/DIO extension card
0042 - internal/external clock selection
0043 
0044 
0045 *In particular, we would appreciate testing of these functions by anyone who has access to an M/IO/DIO extension card.*
0046 
0047 
0048 Things that do not seem to work:
0049 
0050 - 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).
0051 
0052 - Ardour 2.1 seems to work only via JACK, not using ALSA directly or via OSS. This still needs to be tracked down.
0053 
0054 
0055 DRIVER DETAILS
0056 ==============
0057 
0058 the following files were added:
0059 
0060 * pci/ice1724/maya44.c - Maya44 specific code
0061 * pci/ice1724/maya44.h
0062 * pci/ice1724/ice1724.patch
0063 * pci/ice1724/ice1724.h.patch - PROPOSED patch to ice1724.h (see SAMPLING RATES)
0064 * i2c/other/wm8776.c - low-level access routines for Wolfson WM8776 codecs 
0065 * include/wm8776.h
0066 
0067 
0068 Note that the wm8776.c code is meant to be card-independent and does not actually register the codec with the ALSA infrastructure.
0069 This is done in maya44.c, mainly because some of the WM8776 controls are used in Maya44-specific ways, and should be named appropriately.
0070 
0071 
0072 the following files were created in pci/ice1724, simply #including the corresponding file from the alsa-kernel tree:
0073 
0074 * wtm.h
0075 * vt1720_mobo.h
0076 * revo.h
0077 * prodigy192.h
0078 * pontis.h
0079 * phase.h
0080 * maya44.h
0081 * juli.h
0082 * aureon.h
0083 * amp.h
0084 * envy24ht.h
0085 * se.h
0086 * prodigy_hifi.h
0087 
0088 
0089 *I hope this is the correct way to do things.*
0090 
0091 
0092 SAMPLING RATES
0093 ==============
0094 
0095 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.
0096 
0097 As the ICE1724 chip only allows one global sampling rate, this is handled as follows:
0098 
0099 * 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.
0100 
0101 * In the current state of the driver, setting rates of up to 192 kHz is permitted even for capture devices.
0102 
0103 *AVOID CAPTURING AT RATES ABOVE 96kHz*, even though it may appear to work. The codec cannot actually capture at such rates, meaning poor quality.
0104 
0105 
0106 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.
0107 
0108 The proposed code (currently deactivated) is in ice1712.h.patch, ice1724.c and maya44.c (in pci/ice1712).
0109 
0110 
0111 SOUND DEVICES
0112 =============
0113 
0114 PCM devices correspond to inputs/outputs as follows (assuming Maya44 is card #0):
0115 
0116 * hw:0,0 input - stereo, analog input 1+2
0117 * hw:0,0 output - stereo, analog output 1+2
0118 * hw:0,1 input - stereo, analog input 3+4 OR S/PDIF input
0119 * hw:0,1 output - stereo, analog output 3+4 (and SPDIF out)
0120 
0121 
0122 NAMING OF MIXER CONTROLS
0123 ========================
0124 
0125 (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).
0126 
0127 
0128 PCM
0129     (digital) output level for channel 1+2
0130 PCM 1
0131     same for channel 3+4
0132 
0133 Mic Phantom+48V
0134     switch for +48V phantom power for electrostatic microphones on input 1/2.
0135 
0136     Make sure this is not turned on while any other source is connected to input 1/2.
0137     It might damage the source and/or the maya44 card.
0138 
0139 Mic/Line input
0140     if switch is on, input jack 1/2 is microphone input (mono), otherwise line input (stereo).
0141 
0142 Bypass
0143     analogue bypass from ADC input to output for channel 1+2. Same as "Monitor" in the windows driver.
0144 Bypass 1
0145     same for channel 3+4.
0146 
0147 Crossmix
0148     cross-mixer from channels 1+2 to channels 3+4
0149 Crossmix 1
0150     cross-mixer from channels 3+4 to channels 1+2
0151 
0152 IEC958 Output
0153     switch for S/PDIF output.
0154 
0155     This is not supported by the ESI windows driver.
0156     S/PDIF should output the same signal as channel 3+4. [untested!]
0157 
0158 
0159 Digitial output selectors
0160     These switches allow a direct digital routing from the ADCs to the DACs.
0161     Each switch determines where the digital input data to one of the DACs comes from.
0162     They are not supported by the ESI windows driver.
0163     For normal operation, they should all be set to "PCM out".
0164 
0165 H/W
0166     Output source channel 1
0167 H/W 1
0168     Output source channel 2
0169 H/W 2
0170     Output source channel 3
0171 H/W 3
0172     Output source channel 4
0173 
0174 H/W 4 ... H/W 9
0175     unknown function, left in to enable testing.
0176 
0177     Possibly some of these control S/PDIF output(s).
0178     If these turn out to be unused, they will go away in later driver versions.
0179 
0180 Selectable values for each of the digital output selectors are:
0181 
0182 PCM out
0183         DAC output of the corresponding channel (default setting)
0184 Input 1 ... Input 4
0185         direct routing from ADC output of the selected input channel
0186