mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-13 10:37:45 +07:00
ALSA: hda - Skip pin capability sanity check for bogus values
Some old codecs like ALC880 seem to give a bogus pin capability value 0 occasionally. This breaks the new sanity check in snd_hda_set_pin_ctl(). Skip the sanity checks in such a case. Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
4740860b53
commit
6942c103fb
@ -4827,14 +4827,14 @@ int _snd_hda_set_pin_ctl(struct hda_codec *codec, hda_nid_t pin,
|
||||
{
|
||||
if (val) {
|
||||
unsigned int cap = snd_hda_query_pin_caps(codec, pin);
|
||||
if (val & AC_PINCTL_OUT_EN) {
|
||||
if (cap && (val & AC_PINCTL_OUT_EN)) {
|
||||
if (!(cap & AC_PINCAP_OUT))
|
||||
val &= ~(AC_PINCTL_OUT_EN | AC_PINCTL_HP_EN);
|
||||
else if ((val & AC_PINCTL_HP_EN) &&
|
||||
!(cap & AC_PINCAP_HP_DRV))
|
||||
val &= ~AC_PINCTL_HP_EN;
|
||||
}
|
||||
if (val & AC_PINCTL_IN_EN) {
|
||||
if (cap && (val & AC_PINCTL_IN_EN)) {
|
||||
if (!(cap & AC_PINCAP_IN))
|
||||
val &= ~(AC_PINCTL_IN_EN | AC_PINCTL_VREFEN);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user