Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e349792a authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (290 commits)
  ALSA: pcm - Update document about xrun_debug proc file
  ALSA: lx6464es - support standard alsa module parameters
  ALSA: snd_usb_caiaq: set mixername
  ALSA: hda - add quirk for STAC92xx (SigmaTel STAC9205)
  ALSA: use card device as parent for jack input-devices
  ALSA: sound/ps3: Correct existing and add missing annotations
  ALSA: sound/ps3: Restructure driver source
  ALSA: sound/ps3: Fix checkpatch issues
  ASoC: Fix lm4857 control
  ALSA: ctxfi - Clear PCM resources at hw_params and hw_free
  ALSA: ctxfi - Check the presence of SRC instance in PCM pointer callbacks
  ALSA: ctxfi - Add missing start check in atc_pcm_playback_start()
  ALSA: ctxfi - Add use_system_timer module option
  ALSA: usb - Add boot quirk for C-Media 6206 USB Audio
  ALSA: ctxfi - Fix wrong model id for UAA
  ALSA: ctxfi - Clean up probe routines
  ALSA: hda - Fix the previous tagra-8ch patch
  ALSA: hda - Add 7.1 support for MSI GX620
  ALSA: pcm - A helper function to compose PCM stream name for debug prints
  ALSA: emu10k1 - Fix minimum periods for efx playback
  ...
parents 6d214918 e3f86d3d
Loading
Loading
Loading
Loading
+33 −3
Original line number Diff line number Diff line
@@ -460,6 +460,25 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.

    The power-management is supported.

  Module snd-ctxfi
  ----------------

    Module for Creative Sound Blaster X-Fi boards (20k1 / 20k2 chips)
	* Creative Sound Blaster X-Fi Titanium Fatal1ty Champion Series
	* Creative Sound Blaster X-Fi Titanium Fatal1ty Professional Series
	* Creative Sound Blaster X-Fi Titanium Professional Audio
	* Creative Sound Blaster X-Fi Titanium
	* Creative Sound Blaster X-Fi Elite Pro
	* Creative Sound Blaster X-Fi Platinum
	* Creative Sound Blaster X-Fi Fatal1ty
	* Creative Sound Blaster X-Fi XtremeGamer
	* Creative Sound Blaster X-Fi XtremeMusic

    reference_rate	- reference sample rate, 44100 or 48000 (default)
    multiple		- multiple to ref. sample rate, 1 or 2 (default)

    This module supports multiple cards.

  Module snd-darla20
  ------------------

@@ -925,6 +944,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
			* Onkyo SE-90PCI
			* Onkyo SE-200PCI
			* ESI Juli@
			* ESI Maya44
			* Hercules Fortissimo IV
			* EGO-SYS WaveTerminal 192M

@@ -933,7 +953,7 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
		  prodigy71xt, prodigy71hifi, prodigyhd2, prodigy192,
		  juli, aureon51, aureon71, universe, ap192, k8x800,
		  phase22, phase28, ms300, av710, se200pci, se90pci,
		  fortissimo4, sn25p, WT192M
		  fortissimo4, sn25p, WT192M, maya44

    This module supports multiple cards and autoprobe.

@@ -1093,6 +1113,13 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
    This module supports multiple cards.
    The driver requires the firmware loader support on kernel.

  Module snd-lx6464es
  -------------------

    Module for Digigram LX6464ES boards

    This module supports multiple cards.

  Module snd-maestro3
  -------------------

@@ -1543,13 +1570,15 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
  Module snd-sc6000
  -----------------

    Module for Gallant SC-6000 soundcard.
    Module for Gallant SC-6000 soundcard and later models: SC-6600
    and SC-7000.

    port	- Port # (0x220 or 0x240)
    mss_port	- MSS Port # (0x530 or 0xe80)
    irq		- IRQ # (5,7,9,10,11)
    mpu_irq	- MPU-401 IRQ # (5,7,9,10) ,0 - no MPU-401 irq
    dma		- DMA # (1,3,0)
    joystick	- Enable gameport - 0 = disable (default), 1 = enable

    This module supports multiple cards.

@@ -1859,7 +1888,8 @@ Prior to version 0.9.0rc4 options had a 'snd_' prefix. This was removed.
  -------------------

    Module for sound cards based on the Asus AV100/AV200 chips,
    i.e., Xonar D1, DX, D2, D2X, HDAV1.3 (Deluxe), and Essence STX.
    i.e., Xonar D1, DX, D2, D2X, HDAV1.3 (Deluxe), Essence ST
    (Deluxe) and Essence STX.

    This module supports autoprobe and multiple cards.

+15 −3
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ ALC260
  acer		Acer TravelMate
  will		Will laptops (PB V7900)
  replacer	Replacer 672V
  favorit100	Maxdata Favorit 100XS
  basic		fixed pin assignment (old default model)
  test		for testing/debugging purpose, almost all controls can
		adjusted.  Appearing only when compiled with
@@ -85,10 +86,11 @@ ALC269
  eeepc-p703	ASUS Eeepc P703 P900A
  eeepc-p901	ASUS Eeepc P901 S101
  fujitsu	FSC Amilo
  lifebook	Fujitsu Lifebook S6420
  auto		auto-config reading BIOS (default)

ALC662/663
==========
ALC662/663/272
==============
  3stack-dig	3-stack (2-channel) with SPDIF
  3stack-6ch	 3-stack (6-channel)
  3stack-6ch-dig 3-stack (6-channel) with SPDIF
@@ -107,6 +109,9 @@ ALC662/663
  asus-mode4	ASUS
  asus-mode5	ASUS
  asus-mode6	ASUS
  dell		Dell with ALC272
  dell-zm1	Dell ZM1 with ALC272
  samsung-nc10	Samsung NC10 mini notebook
  auto		auto-config reading BIOS (default)

ALC882/885
@@ -118,6 +123,7 @@ ALC882/885
  asus-a7j	ASUS A7J
  asus-a7m	ASUS A7M
  macpro	MacPro support
  mb5		Macbook 5,1
  mbp3		Macbook Pro rev3
  imac24	iMac 24'' with jack detection
  w2jc		ASUS W2JC
@@ -133,10 +139,12 @@ ALC883/888
  acer		Acer laptops (Travelmate 3012WTMi, Aspire 5600, etc)
  acer-aspire	Acer Aspire 9810
  acer-aspire-4930g Acer Aspire 4930G
  acer-aspire-8930g Acer Aspire 8930G
  medion	Medion Laptops
  medion-md2	Medion MD2
  targa-dig	Targa/MSI
  targa-2ch-dig	Targs/MSI with 2-channel
  targa-2ch-dig	Targa/MSI with 2-channel
  targa-8ch-dig Targa/MSI with 8-channel (MSI GX620)
  laptop-eapd   3-jack with SPDIF I/O and EAPD (Clevo M540JE, M550JE)
  lenovo-101e	Lenovo 101E
  lenovo-nb0763	Lenovo NB0763
@@ -150,6 +158,9 @@ ALC883/888
  fujitsu-pi2515 Fujitsu AMILO Pi2515
  fujitsu-xa3530 Fujitsu AMILO XA3530
  3stack-6ch-intel Intel DG33* boards
  asus-p5q	ASUS P5Q-EM boards
  mb31		MacBook 3,1
  sony-vaio-tt  Sony VAIO TT
  auto		auto-config reading BIOS (default)

ALC861/660
@@ -348,6 +359,7 @@ STAC92HD71B*
  hp-m4		HP mini 1000
  hp-dv5	HP dv series
  hp-hdx	HP HDX series
  hp-dv4-1222nr	HP dv4-1222nr (with LED support)
  auto		BIOS setup (default)

STAC92HD73*
+22 −14
Original line number Diff line number Diff line
@@ -88,26 +88,34 @@ card*/pcm*/info
	substreams, etc.

card*/pcm*/xrun_debug
	This file appears when CONFIG_SND_DEBUG=y.
	This shows the status of xrun (= buffer overrun/xrun) debug of
	ALSA PCM middle layer, as an integer from 0 to 2.  The value
	can be changed by writing to this file, such as

		 # cat 2 > /proc/asound/card0/pcm0p/xrun_debug

	When this value is greater than 0, the driver will show the
	messages to kernel log when an xrun is detected.  The debug
	message is shown also when the invalid H/W pointer is detected
	at the update of periods (usually called from the interrupt
	This file appears when CONFIG_SND_DEBUG=y and
	CONFIG_PCM_XRUN_DEBUG=y.
	This shows the status of xrun (= buffer overrun/xrun) and
	invalid PCM position debug/check of ALSA PCM middle layer.
	It takes an integer value, can be changed by writing to this
	file, such as

		 # cat 5 > /proc/asound/card0/pcm0p/xrun_debug

	The value consists of the following bit flags:
	  bit 0 = Enable XRUN/jiffies debug messages
	  bit 1 = Show stack trace at XRUN / jiffies check
	  bit 2 = Enable additional jiffies check

	When the bit 0 is set, the driver will show the messages to
	kernel log when an xrun is detected.  The debug message is
	shown also when the invalid H/W pointer is detected at the
	update of periods (usually called from the interrupt
	handler).

	When this value is greater than 1, the driver will show the
	stack trace additionally.  This may help the debugging.
	When the bit 1 is set, the driver will show the stack trace
	additionally.  This may help the debugging.

	Since 2.6.30, this option also enables the hwptr check using
	Since 2.6.30, this option can enable the hwptr check using
	jiffies.  This detects spontaneous invalid pointer callback
	values, but can be lead to too much corrections for a (mostly
	buggy) hardware that doesn't give smooth pointer updates.
	This feature is enabled via the bit 2.

card*/pcm*/sub*/info
	The general information of this PCM sub-stream.
+163 −0
Original line number Diff line number Diff line
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
+1 −0
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@ Audio DAPM widgets fall into a number of types:-
 o Mic        - Mic (and optional Jack)
 o Line       - Line Input/Output (and optional Jack)
 o Speaker    - Speaker
 o Supply     - Power or clock supply widget used by other widgets.
 o Pre        - Special PRE widget (exec before all others)
 o Post       - Special POST widget (exec after all others)

Loading