diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index f03b2ff9049..4ab019d0924 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -389,6 +389,9 @@ static hda_nid_t stac92hd83xxx_dmic_nids[STAC92HD83XXX_NUM_DMICS + 1] = { | |||
389 | 0x11, 0x20, 0 | 389 | 0x11, 0x20, 0 |
390 | }; | 390 | }; |
391 | 391 | ||
392 | #define STAC92HD88XXX_NUM_DMICS STAC92HD83XXX_NUM_DMICS | ||
393 | #define stac92hd88xxx_dmic_nids stac92hd83xxx_dmic_nids | ||
394 | |||
392 | #define STAC92HD87B_NUM_DMICS 1 | 395 | #define STAC92HD87B_NUM_DMICS 1 |
393 | static hda_nid_t stac92hd87b_dmic_nids[STAC92HD87B_NUM_DMICS + 1] = { | 396 | static hda_nid_t stac92hd87b_dmic_nids[STAC92HD87B_NUM_DMICS + 1] = { |
394 | 0x11, 0 | 397 | 0x11, 0 |
@@ -3591,7 +3594,7 @@ static int stac_check_auto_mic(struct hda_codec *codec) | |||
3591 | if (check_mic_pin(codec, spec->dmic_nids[i], | 3594 | if (check_mic_pin(codec, spec->dmic_nids[i], |
3592 | &fixed, &ext, &dock)) | 3595 | &fixed, &ext, &dock)) |
3593 | return 0; | 3596 | return 0; |
3594 | if (!fixed && !ext && !dock) | 3597 | if (!fixed || (!ext && !dock)) |
3595 | return 0; /* no input to switch */ | 3598 | return 0; /* no input to switch */ |
3596 | if (!(get_wcaps(codec, ext) & AC_WCAP_UNSOL_CAP)) | 3599 | if (!(get_wcaps(codec, ext) & AC_WCAP_UNSOL_CAP)) |
3597 | return 0; /* no unsol support */ | 3600 | return 0; /* no unsol support */ |
@@ -5422,7 +5425,7 @@ static int patch_stac92hd83xxx(struct hda_codec *codec) | |||
5422 | snd_hda_codec_write_cache(codec, codec->afg, 0, 0x7ED, 0); | 5425 | snd_hda_codec_write_cache(codec, codec->afg, 0, 0x7ED, 0); |
5423 | codec->no_trigger_sense = 1; | 5426 | codec->no_trigger_sense = 1; |
5424 | codec->spec = spec; | 5427 | codec->spec = spec; |
5425 | spec->linear_tone_beep = 1; | 5428 | spec->linear_tone_beep = 0; |
5426 | codec->slave_dig_outs = stac92hd83xxx_slave_dig_outs; | 5429 | codec->slave_dig_outs = stac92hd83xxx_slave_dig_outs; |
5427 | spec->digbeep_nid = 0x21; | 5430 | spec->digbeep_nid = 0x21; |
5428 | spec->dmic_nids = stac92hd83xxx_dmic_nids; | 5431 | spec->dmic_nids = stac92hd83xxx_dmic_nids; |
@@ -5462,15 +5465,21 @@ again: | |||
5462 | spec->num_dmics = stac92xx_connected_ports(codec, | 5465 | spec->num_dmics = stac92xx_connected_ports(codec, |
5463 | stac92hd87b_dmic_nids, | 5466 | stac92hd87b_dmic_nids, |
5464 | STAC92HD87B_NUM_DMICS); | 5467 | STAC92HD87B_NUM_DMICS); |
5465 | /* Fall through */ | 5468 | spec->num_pins = ARRAY_SIZE(stac92hd88xxx_pin_nids); |
5469 | spec->pin_nids = stac92hd88xxx_pin_nids; | ||
5470 | spec->mono_nid = 0; | ||
5471 | spec->num_pwrs = 0; | ||
5472 | break; | ||
5466 | case 0x111d7666: | 5473 | case 0x111d7666: |
5467 | case 0x111d7667: | 5474 | case 0x111d7667: |
5468 | case 0x111d7668: | 5475 | case 0x111d7668: |
5469 | case 0x111d7669: | 5476 | case 0x111d7669: |
5477 | spec->num_dmics = stac92xx_connected_ports(codec, | ||
5478 | stac92hd88xxx_dmic_nids, | ||
5479 | STAC92HD88XXX_NUM_DMICS); | ||
5470 | spec->num_pins = ARRAY_SIZE(stac92hd88xxx_pin_nids); | 5480 | spec->num_pins = ARRAY_SIZE(stac92hd88xxx_pin_nids); |
5471 | spec->pin_nids = stac92hd88xxx_pin_nids; | 5481 | spec->pin_nids = stac92hd88xxx_pin_nids; |
5472 | spec->mono_nid = 0; | 5482 | spec->mono_nid = 0; |
5473 | spec->digbeep_nid = 0; | ||
5474 | spec->num_pwrs = 0; | 5483 | spec->num_pwrs = 0; |
5475 | break; | 5484 | break; |
5476 | case 0x111d7604: | 5485 | case 0x111d7604: |