linux/Documentation/sound/alsa
Linus Torvalds 9a51cf28a3 Sound fixes for 3.6-rc1
A collection of small fixes that have been found recently.
 Most of the commits are regression fixes in HD-audio and some other
 random drivers.
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.19 (GNU/Linux)
 
 iQIcBAABAgAGBQJQGOkdAAoJEGwxgFQ9KSmk5REP/0OH5srTWkSGDJqWK0m0Z0A6
 vkZE9KXm/cKcw59MEBhZrE28G4K8fI28XLj6iEuhzcuv7XsUTo9d24Uvvv1pWaEy
 p2GFMRNc5QrXtprnckL+HPA4+asmiyEpXpYC7D4YH1N6ofYuNJfh0QIgQKG0R2Oz
 8Ekdwuuzu0gfNYcN7aWDFiDwNID8hRiW4RVf9V5mNOGtO9Z+82o7u2pnr74vu6FG
 C07DrpKXauGhGDIgfoNn30HwifSWvPm/rpPWwxUucPLAjiE25/70hTjnZZYWtRbe
 g9o9INh3F72aBv23zTQzjkOr9/hhc4/j9zxZ1cMSjTKdvSdoFa5QuQTfCct7z7Fd
 GcdXtMMNSF+FLNC4TyOlyMLoEFaHhv9uBMVk0rBe+y1/urzf4aH+PfI1B42meSI5
 tHiGVvTdhktA2NGp1kf24b88db5ZoNPk2Kmzzn8xHxZsQTjjaUriMAtM/CgmLoBj
 sOjMEkHZpcmAWCOqZDhb9U7QDZNp3h6TBG2/j/PerN/mt5pAVdoxzECDbswm/8My
 g/ujPJFe/2NpBRsDqTI2Lb1H5Xy1tLAnwz5NA4+aiEQjaCRNGLYUvnlcrgdwOmaE
 bk1OmKWTE2ck6rU+edsyPOSWzFEyU1hL1UDcqIyeBsZbh+pvFh+dxEbQFckhR6o4
 fXqmVya1YWUrl2vF99QW
 =cSAm
 -----END PGP SIGNATURE-----

Merge tag 'sound-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
 "A collection of small fixes that have been found recently.  Most of
  the commits are regression fixes in HD-audio and some other random
  drivers."

* tag 'sound-3.6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: snd-usb: fix clock source validity index
  ALSA: hda - Fix mute-LED GPIO initialization for IDT codecs
  ALSA: hda - Add descriptions for missing IDT 92HD83x models
  ALSA: hda - Fix polarity of mute LED on HP Mini 210
  ALSA: es1688 - freeup resources on init failure
  ALSA: hda - Workaround for silent output on VAIO Z with ALC889
  ALSA: hda - Fix WARNING from HDMI/DP parser
  ALSA: hda - Detach from converter at closing in patch_hdmi.c
  ALSA: hda - Fix mute-LED GPIO setup for HP Mini 210
  ALSA: mpu401: Fix missing initialization of irq field
  ALSA: hda - Fix invalid D3 of headphone DAC on VT202x codecs
2012-08-01 10:42:26 -07:00
..
soc ASoC: Remove references to corgi and spitz from machine driver document 2011-12-05 19:29:54 +00:00
ALSA-Configuration.txt ALSA: hda - Remove beep_mode=2 2012-07-03 18:31:20 +02:00
alsa-parameters.txt sound: move driver parameters to their own files 2010-06-08 16:40:35 +02:00
Audigy-mixer.txt
Audiophile-Usb.txt Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
Bt87x.txt
CMIPCI.txt
compress_offload.txt Documentation: Fix typo in multiple files in Documentation 2012-04-16 14:37:13 +02:00
ControlNames.txt ALSA: rename "PC Speaker" controls to "Speaker" 2009-11-05 09:00:21 +01:00
emu10k1-jack.txt
HD-Audio-Controls.txt ALSA: hda - Add documentation for codec specific mixer controls of Analog codecs 2011-10-04 07:26:59 +02:00
HD-Audio-Models.txt ALSA: hda - Add descriptions for missing IDT 92HD83x models 2012-07-31 10:26:34 +02:00
HD-Audio.txt ALSA: hda - Add position_fix=4 (COMBO) option 2012-02-28 12:18:15 +01:00
hda_codec.txt trivial: Miscellaneous documentation typo fixes 2009-06-12 18:01:47 +02:00
hdspm.txt Documentation: Add newline at end-of-file to files lacking one 2012-07-20 23:10:28 +02:00
Joystick.txt
MIXART.txt Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
OSS-Emulation.txt Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
powersave.txt
Procfile.txt ALSA: Update documents about new bits of xrun_debug proc file 2010-07-08 09:01:17 +02:00
README.maya44 ALSA: ice1724 - Add ESI Maya44 support 2009-05-06 17:33:19 +02:00
SB-Live-mixer.txt ALSA: emu10k1 - Fix "Music" controls to "Synth" controls in documents 2011-04-14 12:04:28 +02:00
seq_oss.html
serial-u16550.txt
VIA82xx-mixer.txt

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

----------------------------------------------------------------
 
STATE OF DEVELOPMENT:

This driver is being developed on the initiative of Piotr Makowski (oponek@gmail.com) and financed by Lars Bergmann.
Development is carried out by Rainer Zimmermann (mail@lightshed.de).

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 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!]


Digitial 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


--------

Feb 14, 2008
Rainer Zimmermann
mail@lightshed.de