aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2013-01-29 03:18:55 -0500
committerTakashi Iwai <tiwai@suse.de>2013-01-29 04:10:23 -0500
commit7b2ee291fbd3dbe8079c67fec6382a8ed6c275f7 (patch)
tree36724d984fba8efd8b98978248d3677b80c43d99 /Documentation/sound
parent664389dbd59eba1af2904c4dcbb7af774e6a3324 (diff)
ALSA: hda - Update documentation
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'Documentation/sound')
-rw-r--r--Documentation/sound/alsa/HD-Audio.txt126
1 files changed, 101 insertions, 25 deletions
diff --git a/Documentation/sound/alsa/HD-Audio.txt b/Documentation/sound/alsa/HD-Audio.txt
index 7813c06a5c71..d4faa63ff352 100644
--- a/Documentation/sound/alsa/HD-Audio.txt
+++ b/Documentation/sound/alsa/HD-Audio.txt
@@ -176,14 +176,14 @@ support the automatic probing (yet as of 2.6.28). And, BIOS is often,
176yes, pretty often broken. It sets up wrong values and screws up the 176yes, pretty often broken. It sets up wrong values and screws up the
177driver. 177driver.
178 178
179The preset model is provided basically to overcome such a situation. 179The preset model (or recently called as "fix-up") is provided
180When the matching preset model is found in the white-list, the driver 180basically to overcome such a situation. When the matching preset
181assumes the static configuration of that preset and builds the mixer 181model is found in the white-list, the driver assumes the static
182elements and PCM streams based on the static information. Thus, if 182configuration of that preset with the correct pin setup, etc.
183you have a newer machine with a slightly different PCI SSID from the 183Thus, if you have a newer machine with a slightly different PCI SSID
184existing one, you may have a good chance to re-use the same model. 184(or codec SSID) from the existing one, you may have a good chance to
185You can pass the `model` option to specify the preset model instead of 185re-use the same model. You can pass the `model` option to specify the
186PCI SSID look-up. 186preset model instead of PCI (and codec-) SSID look-up.
187 187
188What `model` option values are available depends on the codec chip. 188What `model` option values are available depends on the codec chip.
189Check your codec chip from the codec proc file (see "Codec Proc-File" 189Check your codec chip from the codec proc file (see "Codec Proc-File"
@@ -199,17 +199,12 @@ non-working HD-audio hardware is to check HD-audio codec and several
199different `model` option values. If you have any luck, some of them 199different `model` option values. If you have any luck, some of them
200might suit with your device well. 200might suit with your device well.
201 201
202Some codecs such as ALC880 have a special model option `model=test`. 202There are a few special model option values:
203This configures the driver to provide as many mixer controls as 203- when 'nofixup' is passed, the device-specific fixups in the codec
204possible for every single pin feature except for the unsolicited 204 parser are skipped.
205events (and maybe some other specials). Adjust each mixer element and 205- when `generic` is passed, the codec-specific parser is skipped and
206try the I/O in the way of trial-and-error until figuring out the whole 206 only the generic parser is used.
207I/O pin mappings.
208 207
209Note that `model=generic` has a special meaning. It means to use the
210generic parser regardless of the codec. Usually the codec-specific
211parser is much better than the generic parser (as now). Thus this
212option is more about the debugging purpose.
213 208
214Speaker and Headphone Output 209Speaker and Headphone Output
215~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 210~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -387,9 +382,8 @@ init_verbs::
387 (separated with a space). 382 (separated with a space).
388hints:: 383hints::
389 Shows / stores hint strings for codec parsers for any use. 384 Shows / stores hint strings for codec parsers for any use.
390 Its format is `key = value`. For example, passing `hp_detect = yes` 385 Its format is `key = value`. For example, passing `jack_detect = no`
391 to IDT/STAC codec parser will result in the disablement of the 386 will disable the jack detection of the machine completely.
392 headphone detection.
393init_pin_configs:: 387init_pin_configs::
394 Shows the initial pin default config values set by BIOS. 388 Shows the initial pin default config values set by BIOS.
395driver_pin_configs:: 389driver_pin_configs::
@@ -421,6 +415,61 @@ re-configure based on that state, run like below:
421------------------------------------------------------------------------ 415------------------------------------------------------------------------
422 416
423 417
418Hint Strings
419~~~~~~~~~~~~
420The codec parser have several switches and adjustment knobs for
421matching better with the actual codec or device behavior. Many of
422them can be adjusted dynamically via "hints" strings as mentioned in
423the section above. For example, by passing `jack_detect = no` string
424via sysfs or a patch file, you can disable the jack detection, thus
425the codec parser will skip the features like auto-mute or mic
426auto-switch. As a boolean value, either `yes`, `no`, `true`, `false`,
427`1` or `0` can be passed.
428
429The generic parser supports the following hints:
430
431- jack_detect (bool): specify whether the jack detection is available
432 at all on this machine; default true
433- inv_jack_detect (bool): indicates that the jack detection logic is
434 inverted
435- trigger_sense (bool): indicates that the jack detection needs the
436 explicit call of AC_VERB_SET_PIN_SENSE verb
437- inv_eapd (bool): indicates that the EAPD is implemented in the
438 inverted logic
439- pcm_format_first (bool): sets the PCM format before the stream tag
440 and channel ID
441- sticky_stream (bool): keep the PCM format, stream tag and ID as long
442 as possible; default true
443- spdif_status_reset (bool): reset the SPDIF status bits at each time
444 the SPDIF stream is set up
445- pin_amp_workaround (bool): the output pin may have multiple amp
446 values
447- single_adc_amp (bool): ADCs can have only single input amps
448- auto_mute (bool): enable/disable the headphone auto-mute feature;
449 default true
450- auto_mic (bool): enable/disable the mic auto-switch feature; default
451 true
452- line_in_auto_switch (bool): enable/disable the line-in auto-switch
453 feature; default false
454- need_dac_fix (bool): limits the DACs depending on the channel count
455- primary_hp (bool): probe headphone jacks as the primary outputs;
456 default true
457- multi_cap_vol (bool): provide multiple capture volumes
458- inv_dmic_split (bool): provide split internal mic volume/switch for
459 phase-inverted digital mics
460- indep_hp (bool): provide the independent headphone PCM stream and
461 the corresponding mixer control, if available
462- add_stereo_mix_input (bool): add the stereo mix (analog-loopback
463 mix) to the input mux if available
464- add_out_jack_modes (bool): add "xxx Jack Mode" enum controls to each
465 output jack for allowing to change the headphone amp capability
466- add_in_jack_modes (bool): add "xxx Jack Mode" enum controls to each
467 input jack for allowing to change the mic bias vref
468- power_down_unused (bool): power down the unused widgets
469- mixer_nid (int): specifies the widget NID of the analog-loopback
470 mixer
471
472
424Early Patching 473Early Patching
425~~~~~~~~~~~~~~ 474~~~~~~~~~~~~~~
426When CONFIG_SND_HDA_PATCH_LOADER=y is set, you can pass a "patch" as a 475When CONFIG_SND_HDA_PATCH_LOADER=y is set, you can pass a "patch" as a
@@ -445,7 +494,7 @@ A patch file is a plain text file which looks like below:
445 0x20 0x400 0xff 494 0x20 0x400 0xff
446 495
447 [hint] 496 [hint]
448 hp_detect = yes 497 jack_detect = no
449------------------------------------------------------------------------ 498------------------------------------------------------------------------
450 499
451The file needs to have a line `[codec]`. The next line should contain 500The file needs to have a line `[codec]`. The next line should contain
@@ -531,6 +580,13 @@ cable is unplugged. Thus, if you hear noises, suspect first the
531power-saving. See /sys/module/snd_hda_intel/parameters/power_save to 580power-saving. See /sys/module/snd_hda_intel/parameters/power_save to
532check the current value. If it's non-zero, the feature is turned on. 581check the current value. If it's non-zero, the feature is turned on.
533 582
583The recent kernel supports the runtime PM for the HD-audio controller
584chip, too. It means that the HD-audio controller is also powered up /
585down dynamically. The feature is enabled only for certain controller
586chips like Intel LynxPoint. You can enable/disable this feature
587forcibly by setting `power_save_controller` option, which is also
588available at /sys/module/snd_hda_intel/parameters directory.
589
534 590
535Tracepoints 591Tracepoints
536~~~~~~~~~~~ 592~~~~~~~~~~~
@@ -587,8 +643,9 @@ The latest development codes for HD-audio are found on sound git tree:
587- git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git 643- git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
588 644
589The master branch or for-next branches can be used as the main 645The master branch or for-next branches can be used as the main
590development branches in general while the HD-audio specific patches 646development branches in general while the development for the current
591are committed in topic/hda branch. 647and next kernels are found in for-linus and for-next branches,
648respectively.
592 649
593If you are using the latest Linus tree, it'd be better to pull the 650If you are using the latest Linus tree, it'd be better to pull the
594above GIT tree onto it. If you are using the older kernels, an easy 651above GIT tree onto it. If you are using the older kernels, an easy
@@ -699,7 +756,11 @@ won't be always updated. For example, the volume values are usually
699cached in the driver, and thus changing the widget amp value directly 756cached in the driver, and thus changing the widget amp value directly
700via hda-verb won't change the mixer value. 757via hda-verb won't change the mixer value.
701 758
702The hda-verb program is found in the ftp directory: 759The hda-verb program is included now in alsa-tools:
760
761- git://git.alsa-project.org/alsa-tools.git
762
763Also, the old stand-alone package is found in the ftp directory:
703 764
704- ftp://ftp.suse.com/pub/people/tiwai/misc/ 765- ftp://ftp.suse.com/pub/people/tiwai/misc/
705 766
@@ -777,3 +838,18 @@ A git repository is available:
777 838
778See README file in the tarball for more details about hda-emu 839See README file in the tarball for more details about hda-emu
779program. 840program.
841
842
843hda-jack-retask
844~~~~~~~~~~~~~~~
845hda-jack-retask is a user-friendly GUI program to manipulate the
846HD-audio pin control for jack retasking. If you have a problem about
847the jack assignment, try this program and check whether you can get
848useful results. Once when you figure out the proper pin assignment,
849it can be fixed either in the driver code statically or via passing a
850firmware patch file (see "Early Patching" section).
851
852The program is included in alsa-tools now:
853
854- git://git.alsa-project.org/alsa-tools.git
855