diff options
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index b5e108aa8f63..61996a2f45df 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -4413,6 +4413,24 @@ static void stac92xx_unsol_event(struct hda_codec *codec, unsigned int res) | |||
4413 | if (spec->num_pwrs > 0) | 4413 | if (spec->num_pwrs > 0) |
4414 | stac92xx_pin_sense(codec, event->nid); | 4414 | stac92xx_pin_sense(codec, event->nid); |
4415 | stac92xx_report_jack(codec, event->nid); | 4415 | stac92xx_report_jack(codec, event->nid); |
4416 | |||
4417 | switch (codec->subsystem_id) { | ||
4418 | case 0x103c308f: | ||
4419 | if (event->nid == 0xb) { | ||
4420 | int pin = AC_PINCTL_IN_EN; | ||
4421 | |||
4422 | if (get_pin_presence(codec, 0xa) | ||
4423 | && get_pin_presence(codec, 0xb)) | ||
4424 | pin |= AC_PINCTL_VREF_80; | ||
4425 | if (!get_pin_presence(codec, 0xb)) | ||
4426 | pin |= AC_PINCTL_VREF_80; | ||
4427 | |||
4428 | /* toggle VREF state based on mic + hp pin | ||
4429 | * status | ||
4430 | */ | ||
4431 | stac92xx_auto_set_pinctl(codec, 0x0a, pin); | ||
4432 | } | ||
4433 | } | ||
4416 | break; | 4434 | break; |
4417 | case STAC_VREF_EVENT: | 4435 | case STAC_VREF_EVENT: |
4418 | data = snd_hda_codec_read(codec, codec->afg, 0, | 4436 | data = snd_hda_codec_read(codec, codec->afg, 0, |
@@ -4895,6 +4913,7 @@ again: | |||
4895 | switch (codec->vendor_id) { | 4913 | switch (codec->vendor_id) { |
4896 | case 0x111d7604: | 4914 | case 0x111d7604: |
4897 | case 0x111d7605: | 4915 | case 0x111d7605: |
4916 | case 0x111d76d5: | ||
4898 | if (spec->board_config == STAC_92HD83XXX_PWR_REF) | 4917 | if (spec->board_config == STAC_92HD83XXX_PWR_REF) |
4899 | break; | 4918 | break; |
4900 | spec->num_pwrs = 0; | 4919 | spec->num_pwrs = 0; |
@@ -5707,6 +5726,7 @@ static struct hda_codec_preset snd_hda_preset_sigmatel[] = { | |||
5707 | { .id = 0x111d7603, .name = "92HD75B3X5", .patch = patch_stac92hd71bxx}, | 5726 | { .id = 0x111d7603, .name = "92HD75B3X5", .patch = patch_stac92hd71bxx}, |
5708 | { .id = 0x111d7604, .name = "92HD83C1X5", .patch = patch_stac92hd83xxx}, | 5727 | { .id = 0x111d7604, .name = "92HD83C1X5", .patch = patch_stac92hd83xxx}, |
5709 | { .id = 0x111d7605, .name = "92HD81B1X5", .patch = patch_stac92hd83xxx}, | 5728 | { .id = 0x111d7605, .name = "92HD81B1X5", .patch = patch_stac92hd83xxx}, |
5729 | { .id = 0x111d76d5, .name = "92HD81B1C5", .patch = patch_stac92hd83xxx}, | ||
5710 | { .id = 0x111d7608, .name = "92HD75B2X5", .patch = patch_stac92hd71bxx}, | 5730 | { .id = 0x111d7608, .name = "92HD75B2X5", .patch = patch_stac92hd71bxx}, |
5711 | { .id = 0x111d7674, .name = "92HD73D1X5", .patch = patch_stac92hd73xx }, | 5731 | { .id = 0x111d7674, .name = "92HD73D1X5", .patch = patch_stac92hd73xx }, |
5712 | { .id = 0x111d7675, .name = "92HD73C1X5", .patch = patch_stac92hd73xx }, | 5732 | { .id = 0x111d7675, .name = "92HD73C1X5", .patch = patch_stac92hd73xx }, |