aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_sigmatel.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r--sound/pci/hda/patch_sigmatel.c17
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
393static hda_nid_t stac92hd87b_dmic_nids[STAC92HD87B_NUM_DMICS + 1] = { 396static 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: