diff options
author | Takashi Iwai <tiwai@suse.de> | 2007-08-16 09:01:03 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2007-10-16 09:59:04 -0400 |
commit | 7debbe51cc001a6deb549999f9d8f53d99c6fd9e (patch) | |
tree | 44eb65cbc760100d73007762bbf94b5215bbf40d /sound/pci/hda | |
parent | d273809e2e512d0638d443dce408ac0342ab73cf (diff) |
[ALSA] hda-codec - Fix PM on ALC885 Intel Macs
Fix power-management on ALC885 Intel Macs.
It fixes the problem with power-saving mode, too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/pci/hda')
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index b47934f87f8c..b63d185433f9 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -5276,6 +5276,20 @@ static void alc882_gpio_mute(struct hda_codec *codec, int pin, int muted) | |||
5276 | AC_VERB_SET_GPIO_DATA, gpiostate); | 5276 | AC_VERB_SET_GPIO_DATA, gpiostate); |
5277 | } | 5277 | } |
5278 | 5278 | ||
5279 | /* set up GPIO at initialization */ | ||
5280 | static void alc885_macpro_init_hook(struct hda_codec *codec) | ||
5281 | { | ||
5282 | alc882_gpio_mute(codec, 0, 0); | ||
5283 | alc882_gpio_mute(codec, 1, 0); | ||
5284 | } | ||
5285 | |||
5286 | /* set up GPIO and update auto-muting at initialization */ | ||
5287 | static void alc885_imac24_init_hook(struct hda_codec *codec) | ||
5288 | { | ||
5289 | alc885_macpro_init_hook(codec); | ||
5290 | alc885_imac24_automute(codec); | ||
5291 | } | ||
5292 | |||
5279 | /* | 5293 | /* |
5280 | * generic initialization of ADC, input mixers and output mixers | 5294 | * generic initialization of ADC, input mixers and output mixers |
5281 | */ | 5295 | */ |
@@ -5480,6 +5494,7 @@ static struct alc_config_preset alc882_presets[] = { | |||
5480 | .num_channel_mode = ARRAY_SIZE(alc882_ch_modes), | 5494 | .num_channel_mode = ARRAY_SIZE(alc882_ch_modes), |
5481 | .channel_mode = alc882_ch_modes, | 5495 | .channel_mode = alc882_ch_modes, |
5482 | .input_mux = &alc882_capture_source, | 5496 | .input_mux = &alc882_capture_source, |
5497 | .init_hook = alc885_macpro_init_hook, | ||
5483 | }, | 5498 | }, |
5484 | [ALC885_IMAC24] = { | 5499 | [ALC885_IMAC24] = { |
5485 | .mixers = { alc885_imac24_mixer }, | 5500 | .mixers = { alc885_imac24_mixer }, |
@@ -5492,7 +5507,7 @@ static struct alc_config_preset alc882_presets[] = { | |||
5492 | .channel_mode = alc882_ch_modes, | 5507 | .channel_mode = alc882_ch_modes, |
5493 | .input_mux = &alc882_capture_source, | 5508 | .input_mux = &alc882_capture_source, |
5494 | .unsol_event = alc885_imac24_unsol_event, | 5509 | .unsol_event = alc885_imac24_unsol_event, |
5495 | .init_hook = alc885_imac24_automute, | 5510 | .init_hook = alc885_imac24_init_hook, |
5496 | }, | 5511 | }, |
5497 | [ALC882_TARGA] = { | 5512 | [ALC882_TARGA] = { |
5498 | .mixers = { alc882_targa_mixer, alc882_chmode_mixer, | 5513 | .mixers = { alc882_targa_mixer, alc882_chmode_mixer, |
@@ -5695,11 +5710,6 @@ static int patch_alc882(struct hda_codec *codec) | |||
5695 | if (board_config != ALC882_AUTO) | 5710 | if (board_config != ALC882_AUTO) |
5696 | setup_preset(spec, &alc882_presets[board_config]); | 5711 | setup_preset(spec, &alc882_presets[board_config]); |
5697 | 5712 | ||
5698 | if (board_config == ALC885_MACPRO || board_config == ALC885_IMAC24) { | ||
5699 | alc882_gpio_mute(codec, 0, 0); | ||
5700 | alc882_gpio_mute(codec, 1, 0); | ||
5701 | } | ||
5702 | |||
5703 | spec->stream_name_analog = "ALC882 Analog"; | 5713 | spec->stream_name_analog = "ALC882 Analog"; |
5704 | spec->stream_analog_playback = &alc882_pcm_analog_playback; | 5714 | spec->stream_analog_playback = &alc882_pcm_analog_playback; |
5705 | spec->stream_analog_capture = &alc882_pcm_analog_capture; | 5715 | spec->stream_analog_capture = &alc882_pcm_analog_capture; |