mirror of https://gitee.com/openkylin/linux.git
ALSA: hda - Update documentation
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
664389dbd5
commit
7b2ee291fb
|
@ -176,14 +176,14 @@ support the automatic probing (yet as of 2.6.28). And, BIOS is often,
|
|||
yes, pretty often broken. It sets up wrong values and screws up the
|
||||
driver.
|
||||
|
||||
The preset model is provided basically to overcome such a situation.
|
||||
When the matching preset model is found in the white-list, the driver
|
||||
assumes the static configuration of that preset and builds the mixer
|
||||
elements and PCM streams based on the static information. Thus, if
|
||||
you have a newer machine with a slightly different PCI SSID from the
|
||||
existing one, you may have a good chance to re-use the same model.
|
||||
You can pass the `model` option to specify the preset model instead of
|
||||
PCI SSID look-up.
|
||||
The preset model (or recently called as "fix-up") is provided
|
||||
basically to overcome such a situation. When the matching preset
|
||||
model is found in the white-list, the driver assumes the static
|
||||
configuration of that preset with the correct pin setup, etc.
|
||||
Thus, if you have a newer machine with a slightly different PCI SSID
|
||||
(or codec SSID) from the existing one, you may have a good chance to
|
||||
re-use the same model. You can pass the `model` option to specify the
|
||||
preset model instead of PCI (and codec-) SSID look-up.
|
||||
|
||||
What `model` option values are available depends on the codec chip.
|
||||
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
|
|||
different `model` option values. If you have any luck, some of them
|
||||
might suit with your device well.
|
||||
|
||||
Some codecs such as ALC880 have a special model option `model=test`.
|
||||
This configures the driver to provide as many mixer controls as
|
||||
possible for every single pin feature except for the unsolicited
|
||||
events (and maybe some other specials). Adjust each mixer element and
|
||||
try the I/O in the way of trial-and-error until figuring out the whole
|
||||
I/O pin mappings.
|
||||
There are a few special model option values:
|
||||
- when 'nofixup' is passed, the device-specific fixups in the codec
|
||||
parser are skipped.
|
||||
- when `generic` is passed, the codec-specific parser is skipped and
|
||||
only the generic parser is used.
|
||||
|
||||
Note that `model=generic` has a special meaning. It means to use the
|
||||
generic parser regardless of the codec. Usually the codec-specific
|
||||
parser is much better than the generic parser (as now). Thus this
|
||||
option is more about the debugging purpose.
|
||||
|
||||
Speaker and Headphone Output
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
@ -387,9 +382,8 @@ init_verbs::
|
|||
(separated with a space).
|
||||
hints::
|
||||
Shows / stores hint strings for codec parsers for any use.
|
||||
Its format is `key = value`. For example, passing `hp_detect = yes`
|
||||
to IDT/STAC codec parser will result in the disablement of the
|
||||
headphone detection.
|
||||
Its format is `key = value`. For example, passing `jack_detect = no`
|
||||
will disable the jack detection of the machine completely.
|
||||
init_pin_configs::
|
||||
Shows the initial pin default config values set by BIOS.
|
||||
driver_pin_configs::
|
||||
|
@ -421,6 +415,61 @@ re-configure based on that state, run like below:
|
|||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
Hint Strings
|
||||
~~~~~~~~~~~~
|
||||
The codec parser have several switches and adjustment knobs for
|
||||
matching better with the actual codec or device behavior. Many of
|
||||
them can be adjusted dynamically via "hints" strings as mentioned in
|
||||
the section above. For example, by passing `jack_detect = no` string
|
||||
via sysfs or a patch file, you can disable the jack detection, thus
|
||||
the codec parser will skip the features like auto-mute or mic
|
||||
auto-switch. As a boolean value, either `yes`, `no`, `true`, `false`,
|
||||
`1` or `0` can be passed.
|
||||
|
||||
The generic parser supports the following hints:
|
||||
|
||||
- jack_detect (bool): specify whether the jack detection is available
|
||||
at all on this machine; default true
|
||||
- inv_jack_detect (bool): indicates that the jack detection logic is
|
||||
inverted
|
||||
- trigger_sense (bool): indicates that the jack detection needs the
|
||||
explicit call of AC_VERB_SET_PIN_SENSE verb
|
||||
- inv_eapd (bool): indicates that the EAPD is implemented in the
|
||||
inverted logic
|
||||
- pcm_format_first (bool): sets the PCM format before the stream tag
|
||||
and channel ID
|
||||
- sticky_stream (bool): keep the PCM format, stream tag and ID as long
|
||||
as possible; default true
|
||||
- spdif_status_reset (bool): reset the SPDIF status bits at each time
|
||||
the SPDIF stream is set up
|
||||
- pin_amp_workaround (bool): the output pin may have multiple amp
|
||||
values
|
||||
- single_adc_amp (bool): ADCs can have only single input amps
|
||||
- auto_mute (bool): enable/disable the headphone auto-mute feature;
|
||||
default true
|
||||
- auto_mic (bool): enable/disable the mic auto-switch feature; default
|
||||
true
|
||||
- line_in_auto_switch (bool): enable/disable the line-in auto-switch
|
||||
feature; default false
|
||||
- need_dac_fix (bool): limits the DACs depending on the channel count
|
||||
- primary_hp (bool): probe headphone jacks as the primary outputs;
|
||||
default true
|
||||
- multi_cap_vol (bool): provide multiple capture volumes
|
||||
- inv_dmic_split (bool): provide split internal mic volume/switch for
|
||||
phase-inverted digital mics
|
||||
- indep_hp (bool): provide the independent headphone PCM stream and
|
||||
the corresponding mixer control, if available
|
||||
- add_stereo_mix_input (bool): add the stereo mix (analog-loopback
|
||||
mix) to the input mux if available
|
||||
- add_out_jack_modes (bool): add "xxx Jack Mode" enum controls to each
|
||||
output jack for allowing to change the headphone amp capability
|
||||
- add_in_jack_modes (bool): add "xxx Jack Mode" enum controls to each
|
||||
input jack for allowing to change the mic bias vref
|
||||
- power_down_unused (bool): power down the unused widgets
|
||||
- mixer_nid (int): specifies the widget NID of the analog-loopback
|
||||
mixer
|
||||
|
||||
|
||||
Early Patching
|
||||
~~~~~~~~~~~~~~
|
||||
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:
|
|||
0x20 0x400 0xff
|
||||
|
||||
[hint]
|
||||
hp_detect = yes
|
||||
jack_detect = no
|
||||
------------------------------------------------------------------------
|
||||
|
||||
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
|
|||
power-saving. See /sys/module/snd_hda_intel/parameters/power_save to
|
||||
check the current value. If it's non-zero, the feature is turned on.
|
||||
|
||||
The recent kernel supports the runtime PM for the HD-audio controller
|
||||
chip, too. It means that the HD-audio controller is also powered up /
|
||||
down dynamically. The feature is enabled only for certain controller
|
||||
chips like Intel LynxPoint. You can enable/disable this feature
|
||||
forcibly by setting `power_save_controller` option, which is also
|
||||
available at /sys/module/snd_hda_intel/parameters directory.
|
||||
|
||||
|
||||
Tracepoints
|
||||
~~~~~~~~~~~
|
||||
|
@ -587,8 +643,9 @@ The latest development codes for HD-audio are found on sound git tree:
|
|||
- git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
|
||||
|
||||
The master branch or for-next branches can be used as the main
|
||||
development branches in general while the HD-audio specific patches
|
||||
are committed in topic/hda branch.
|
||||
development branches in general while the development for the current
|
||||
and next kernels are found in for-linus and for-next branches,
|
||||
respectively.
|
||||
|
||||
If you are using the latest Linus tree, it'd be better to pull the
|
||||
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
|
|||
cached in the driver, and thus changing the widget amp value directly
|
||||
via hda-verb won't change the mixer value.
|
||||
|
||||
The hda-verb program is found in the ftp directory:
|
||||
The hda-verb program is included now in alsa-tools:
|
||||
|
||||
- git://git.alsa-project.org/alsa-tools.git
|
||||
|
||||
Also, the old stand-alone package is found in the ftp directory:
|
||||
|
||||
- ftp://ftp.suse.com/pub/people/tiwai/misc/
|
||||
|
||||
|
@ -777,3 +838,18 @@ A git repository is available:
|
|||
|
||||
See README file in the tarball for more details about hda-emu
|
||||
program.
|
||||
|
||||
|
||||
hda-jack-retask
|
||||
~~~~~~~~~~~~~~~
|
||||
hda-jack-retask is a user-friendly GUI program to manipulate the
|
||||
HD-audio pin control for jack retasking. If you have a problem about
|
||||
the jack assignment, try this program and check whether you can get
|
||||
useful results. Once when you figure out the proper pin assignment,
|
||||
it can be fixed either in the driver code statically or via passing a
|
||||
firmware patch file (see "Early Patching" section).
|
||||
|
||||
The program is included in alsa-tools now:
|
||||
|
||||
- git://git.alsa-project.org/alsa-tools.git
|
||||
|
||||
|
|
Loading…
Reference in New Issue