diff options
author | Takashi Iwai <tiwai@suse.de> | 2013-01-29 03:18:55 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2013-01-29 04:10:23 -0500 |
commit | 7b2ee291fbd3dbe8079c67fec6382a8ed6c275f7 (patch) | |
tree | 36724d984fba8efd8b98978248d3677b80c43d99 /Documentation/sound | |
parent | 664389dbd59eba1af2904c4dcbb7af774e6a3324 (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.txt | 126 |
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, | |||
176 | yes, pretty often broken. It sets up wrong values and screws up the | 176 | yes, pretty often broken. It sets up wrong values and screws up the |
177 | driver. | 177 | driver. |
178 | 178 | ||
179 | The preset model is provided basically to overcome such a situation. | 179 | The preset model (or recently called as "fix-up") is provided |
180 | When the matching preset model is found in the white-list, the driver | 180 | basically to overcome such a situation. When the matching preset |
181 | assumes the static configuration of that preset and builds the mixer | 181 | model is found in the white-list, the driver assumes the static |
182 | elements and PCM streams based on the static information. Thus, if | 182 | configuration of that preset with the correct pin setup, etc. |
183 | you have a newer machine with a slightly different PCI SSID from the | 183 | Thus, if you have a newer machine with a slightly different PCI SSID |
184 | existing 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 |
185 | You can pass the `model` option to specify the preset model instead of | 185 | re-use the same model. You can pass the `model` option to specify the |
186 | PCI SSID look-up. | 186 | preset model instead of PCI (and codec-) SSID look-up. |
187 | 187 | ||
188 | What `model` option values are available depends on the codec chip. | 188 | What `model` option values are available depends on the codec chip. |
189 | Check your codec chip from the codec proc file (see "Codec Proc-File" | 189 | Check 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 | |||
199 | different `model` option values. If you have any luck, some of them | 199 | different `model` option values. If you have any luck, some of them |
200 | might suit with your device well. | 200 | might suit with your device well. |
201 | 201 | ||
202 | Some codecs such as ALC880 have a special model option `model=test`. | 202 | There are a few special model option values: |
203 | This configures the driver to provide as many mixer controls as | 203 | - when 'nofixup' is passed, the device-specific fixups in the codec |
204 | possible for every single pin feature except for the unsolicited | 204 | parser are skipped. |
205 | events (and maybe some other specials). Adjust each mixer element and | 205 | - when `generic` is passed, the codec-specific parser is skipped and |
206 | try the I/O in the way of trial-and-error until figuring out the whole | 206 | only the generic parser is used. |
207 | I/O pin mappings. | ||
208 | 207 | ||
209 | Note that `model=generic` has a special meaning. It means to use the | ||
210 | generic parser regardless of the codec. Usually the codec-specific | ||
211 | parser is much better than the generic parser (as now). Thus this | ||
212 | option is more about the debugging purpose. | ||
213 | 208 | ||
214 | Speaker and Headphone Output | 209 | Speaker and Headphone Output |
215 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 210 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
@@ -387,9 +382,8 @@ init_verbs:: | |||
387 | (separated with a space). | 382 | (separated with a space). |
388 | hints:: | 383 | hints:: |
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. | ||
393 | init_pin_configs:: | 387 | init_pin_configs:: |
394 | Shows the initial pin default config values set by BIOS. | 388 | Shows the initial pin default config values set by BIOS. |
395 | driver_pin_configs:: | 389 | driver_pin_configs:: |
@@ -421,6 +415,61 @@ re-configure based on that state, run like below: | |||
421 | ------------------------------------------------------------------------ | 415 | ------------------------------------------------------------------------ |
422 | 416 | ||
423 | 417 | ||
418 | Hint Strings | ||
419 | ~~~~~~~~~~~~ | ||
420 | The codec parser have several switches and adjustment knobs for | ||
421 | matching better with the actual codec or device behavior. Many of | ||
422 | them can be adjusted dynamically via "hints" strings as mentioned in | ||
423 | the section above. For example, by passing `jack_detect = no` string | ||
424 | via sysfs or a patch file, you can disable the jack detection, thus | ||
425 | the codec parser will skip the features like auto-mute or mic | ||
426 | auto-switch. As a boolean value, either `yes`, `no`, `true`, `false`, | ||
427 | `1` or `0` can be passed. | ||
428 | |||
429 | The 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 | |||
424 | Early Patching | 473 | Early Patching |
425 | ~~~~~~~~~~~~~~ | 474 | ~~~~~~~~~~~~~~ |
426 | When CONFIG_SND_HDA_PATCH_LOADER=y is set, you can pass a "patch" as a | 475 | When 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 | ||
451 | The file needs to have a line `[codec]`. The next line should contain | 500 | The 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 | |||
531 | power-saving. See /sys/module/snd_hda_intel/parameters/power_save to | 580 | power-saving. See /sys/module/snd_hda_intel/parameters/power_save to |
532 | check the current value. If it's non-zero, the feature is turned on. | 581 | check the current value. If it's non-zero, the feature is turned on. |
533 | 582 | ||
583 | The recent kernel supports the runtime PM for the HD-audio controller | ||
584 | chip, too. It means that the HD-audio controller is also powered up / | ||
585 | down dynamically. The feature is enabled only for certain controller | ||
586 | chips like Intel LynxPoint. You can enable/disable this feature | ||
587 | forcibly by setting `power_save_controller` option, which is also | ||
588 | available at /sys/module/snd_hda_intel/parameters directory. | ||
589 | |||
534 | 590 | ||
535 | Tracepoints | 591 | Tracepoints |
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 | ||
589 | The master branch or for-next branches can be used as the main | 645 | The master branch or for-next branches can be used as the main |
590 | development branches in general while the HD-audio specific patches | 646 | development branches in general while the development for the current |
591 | are committed in topic/hda branch. | 647 | and next kernels are found in for-linus and for-next branches, |
648 | respectively. | ||
592 | 649 | ||
593 | If you are using the latest Linus tree, it'd be better to pull the | 650 | If you are using the latest Linus tree, it'd be better to pull the |
594 | above GIT tree onto it. If you are using the older kernels, an easy | 651 | above 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 | |||
699 | cached in the driver, and thus changing the widget amp value directly | 756 | cached in the driver, and thus changing the widget amp value directly |
700 | via hda-verb won't change the mixer value. | 757 | via hda-verb won't change the mixer value. |
701 | 758 | ||
702 | The hda-verb program is found in the ftp directory: | 759 | The hda-verb program is included now in alsa-tools: |
760 | |||
761 | - git://git.alsa-project.org/alsa-tools.git | ||
762 | |||
763 | Also, 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 | ||
778 | See README file in the tarball for more details about hda-emu | 839 | See README file in the tarball for more details about hda-emu |
779 | program. | 840 | program. |
841 | |||
842 | |||
843 | hda-jack-retask | ||
844 | ~~~~~~~~~~~~~~~ | ||
845 | hda-jack-retask is a user-friendly GUI program to manipulate the | ||
846 | HD-audio pin control for jack retasking. If you have a problem about | ||
847 | the jack assignment, try this program and check whether you can get | ||
848 | useful results. Once when you figure out the proper pin assignment, | ||
849 | it can be fixed either in the driver code statically or via passing a | ||
850 | firmware patch file (see "Early Patching" section). | ||
851 | |||
852 | The program is included in alsa-tools now: | ||
853 | |||
854 | - git://git.alsa-project.org/alsa-tools.git | ||
855 | |||