diff options
author | Takashi Iwai <tiwai@suse.de> | 2009-09-14 09:03:12 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-09-14 09:03:12 -0400 |
commit | af6ee302020101bd16c7224c2b03a5fb36e17d99 (patch) | |
tree | 041a9be7c47cda3f95070578c4ff73826f3630cb /sound | |
parent | 3d3792cb455d15881144e9dfba4c67eece260a69 (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>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 33 |
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; |