mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
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
|
yes, pretty often broken. It sets up wrong values and screws up the
|
||||||
driver.
|
driver.
|
||||||
|
|
||||||
The preset model is provided basically to overcome such a situation.
|
The preset model (or recently called as "fix-up") is provided
|
||||||
When the matching preset model is found in the white-list, the driver
|
basically to overcome such a situation. When the matching preset
|
||||||
assumes the static configuration of that preset and builds the mixer
|
model is found in the white-list, the driver assumes the static
|
||||||
elements and PCM streams based on the static information. Thus, if
|
configuration of that preset with the correct pin setup, etc.
|
||||||
you have a newer machine with a slightly different PCI SSID from the
|
Thus, if you have a newer machine with a slightly different PCI SSID
|
||||||
existing one, you may have a good chance to re-use the same model.
|
(or codec SSID) from the existing one, you may have a good chance to
|
||||||
You can pass the `model` option to specify the preset model instead of
|
re-use the same model. You can pass the `model` option to specify the
|
||||||
PCI SSID look-up.
|
preset model instead of PCI (and codec-) SSID look-up.
|
||||||
|
|
||||||
What `model` option values are available depends on the codec chip.
|
What `model` option values are available depends on the codec chip.
|
||||||
Check your codec chip from the codec proc file (see "Codec Proc-File"
|
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
|
different `model` option values. If you have any luck, some of them
|
||||||
might suit with your device well.
|
might suit with your device well.
|
||||||
|
|
||||||
Some codecs such as ALC880 have a special model option `model=test`.
|
There are a few special model option values:
|
||||||
This configures the driver to provide as many mixer controls as
|
- when 'nofixup' is passed, the device-specific fixups in the codec
|
||||||
possible for every single pin feature except for the unsolicited
|
parser are skipped.
|
||||||
events (and maybe some other specials). Adjust each mixer element and
|
- when `generic` is passed, the codec-specific parser is skipped and
|
||||||
try the I/O in the way of trial-and-error until figuring out the whole
|
only the generic parser is used.
|
||||||
I/O pin mappings.
|
|
||||||
|
|
||||||
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
|
Speaker and Headphone Output
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
@ -387,9 +382,8 @@ init_verbs::
|
|||||||
(separated with a space).
|
(separated with a space).
|
||||||
hints::
|
hints::
|
||||||
Shows / stores hint strings for codec parsers for any use.
|
Shows / stores hint strings for codec parsers for any use.
|
||||||
Its format is `key = value`. For example, passing `hp_detect = yes`
|
Its format is `key = value`. For example, passing `jack_detect = no`
|
||||||
to IDT/STAC codec parser will result in the disablement of the
|
will disable the jack detection of the machine completely.
|
||||||
headphone detection.
|
|
||||||
init_pin_configs::
|
init_pin_configs::
|
||||||
Shows the initial pin default config values set by BIOS.
|
Shows the initial pin default config values set by BIOS.
|
||||||
driver_pin_configs::
|
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
|
Early Patching
|
||||||
~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~
|
||||||
When CONFIG_SND_HDA_PATCH_LOADER=y is set, you can pass a "patch" as a
|
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
|
0x20 0x400 0xff
|
||||||
|
|
||||||
[hint]
|
[hint]
|
||||||
hp_detect = yes
|
jack_detect = no
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
The file needs to have a line `[codec]`. The next line should contain
|
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
|
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.
|
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
|
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
|
- 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
|
The master branch or for-next branches can be used as the main
|
||||||
development branches in general while the HD-audio specific patches
|
development branches in general while the development for the current
|
||||||
are committed in topic/hda branch.
|
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
|
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
|
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
|
cached in the driver, and thus changing the widget amp value directly
|
||||||
via hda-verb won't change the mixer value.
|
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/
|
- 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
|
See README file in the tarball for more details about hda-emu
|
||||||
program.
|
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…
x
Reference in New Issue
Block a user