aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2009-09-14 09:03:12 -0400
committerTakashi Iwai <tiwai@suse.de>2009-09-14 09:03:12 -0400
commitaf6ee302020101bd16c7224c2b03a5fb36e17d99 (patch)
tree041a9be7c47cda3f95070578c4ff73826f3630cb
parent3d3792cb455d15881144e9dfba4c67eece260a69 (diff)
ALSA: hda - Set default GPIO for STAC/IDT codecs
IDT92HD73xx and STAC927x codecs use GPIO0 bit as EAPD on many machines. However, currently we don't set it unless the model is specified just for safety reason. But, most machines do need this bit, so this safety handling is rather annoying. This patch enables GPIO0 setup as default for them. Many HP / Dell laptops should work even without model override with this change. Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--sound/pci/hda/patch_sigmatel.c33
1 files changed, 13 insertions, 20 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index e31e53dc6962..2c8a8039c759 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -5016,7 +5016,7 @@ again:
5016 spec->eapd_switch = 1; 5016 spec->eapd_switch = 1;
5017 break; 5017 break;
5018 } 5018 }
5019 if (spec->board_config > STAC_92HD73XX_REF) { 5019 if (spec->board_config != STAC_92HD73XX_REF) {
5020 /* GPIO0 High = Enable EAPD */ 5020 /* GPIO0 High = Enable EAPD */
5021 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir = 0x1; 5021 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir = 0x1;
5022 spec->gpio_data = 0x01; 5022 spec->gpio_data = 0x01;
@@ -5557,14 +5557,17 @@ static int patch_stac927x(struct hda_codec *codec)
5557 spec->dac_list = stac927x_dac_nids; 5557 spec->dac_list = stac927x_dac_nids;
5558 spec->multiout.dac_nids = spec->dac_nids; 5558 spec->multiout.dac_nids = spec->dac_nids;
5559 5559
5560 if (spec->board_config != STAC_D965_REF) {
5561 /* GPIO0 High = Enable EAPD */
5562 spec->eapd_mask = spec->gpio_mask = 0x01;
5563 spec->gpio_dir = spec->gpio_data = 0x01;
5564 }
5565
5560 switch (spec->board_config) { 5566 switch (spec->board_config) {
5561 case STAC_D965_3ST: 5567 case STAC_D965_3ST:
5562 case STAC_D965_5ST: 5568 case STAC_D965_5ST:
5563 /* GPIO0 High = Enable EAPD */ 5569 /* GPIO0 High = Enable EAPD */
5564 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir = 0x01;
5565 spec->gpio_data = 0x01;
5566 spec->num_dmics = 0; 5570 spec->num_dmics = 0;
5567
5568 spec->init = d965_core_init; 5571 spec->init = d965_core_init;
5569 break; 5572 break;
5570 case STAC_DELL_BIOS: 5573 case STAC_DELL_BIOS:
@@ -5583,16 +5586,11 @@ static int patch_stac927x(struct hda_codec *codec)
5583 snd_hda_codec_set_pincfg(codec, 0x0e, 0x02a79130); 5586 snd_hda_codec_set_pincfg(codec, 0x0e, 0x02a79130);
5584 /* fallthru */ 5587 /* fallthru */
5585 case STAC_DELL_3ST: 5588 case STAC_DELL_3ST:
5586 /* GPIO2 High = Enable EAPD */ 5589 if (codec->subsystem_id != 0x1028022f) {
5587 spec->eapd_mask = spec->gpio_mask = spec->gpio_dir = 0x04; 5590 /* GPIO2 High = Enable EAPD */
5588 spec->gpio_data = 0x04; 5591 spec->eapd_mask = spec->gpio_mask = 0x04;
5589 switch (codec->subsystem_id) { 5592 spec->gpio_dir = spec->gpio_data = 0x04;
5590 case 0x1028022f: 5593 }
5591 /* correct EAPD to be GPIO0 */
5592 spec->eapd_mask = spec->gpio_mask = 0x01;
5593 spec->gpio_dir = spec->gpio_data = 0x01;
5594 break;
5595 };
5596 spec->dmic_nids = stac927x_dmic_nids; 5594 spec->dmic_nids = stac927x_dmic_nids;
5597 spec->num_dmics = STAC927X_NUM_DMICS; 5595 spec->num_dmics = STAC927X_NUM_DMICS;
5598 5596
@@ -5601,14 +5599,9 @@ static int patch_stac927x(struct hda_codec *codec)
5601 spec->num_dmuxes = ARRAY_SIZE(stac927x_dmux_nids); 5599 spec->num_dmuxes = ARRAY_SIZE(stac927x_dmux_nids);
5602 break; 5600 break;
5603 default: 5601 default:
5604 if (spec->board_config > STAC_D965_REF) {
5605 /* GPIO0 High = Enable EAPD */
5606 spec->eapd_mask = spec->gpio_mask = 0x01;
5607 spec->gpio_dir = spec->gpio_data = 0x01;
5608 }
5609 spec->num_dmics = 0; 5602 spec->num_dmics = 0;
5610
5611 spec->init = stac927x_core_init; 5603 spec->init = stac927x_core_init;
5604 break;
5612 } 5605 }
5613 5606
5614 spec->num_caps = STAC927X_NUM_CAPS; 5607 spec->num_caps = STAC927X_NUM_CAPS;