At Thu, 16 Aug 2007 00:33:15 +0200, Nicola Fagnani wrote:
As you said, the patch didn't solve the problem. To test audio I used this simple command:
aplay < /bin/bash
but if there is no audio output for a while, executing it produces no noise. When I said the sound goes mute, I meant there is no sound, not that some audio channel is muted.
Ah, so you mean that the sound goes away once after 10 second inactive state that results in the automatic power-off? I thought you meaning that the sound vanishes suddenly _during_ playing back.
If I set the power_save_controller=0 module option the sound works always, so these are the details of my hardware:
Are you sure that you passed power_save_controller=0, not power_save=0? See below.
cat /proc/asound/card0/codec#0
Codec: Realtek ALC885 Address: 0 Vendor Id: 0x10ec0885 Subsystem Id: 0x106b1000
OK, it's an Intel Mac, right? Then maybe the culprit is the missing GPIO initialization. It's done only at creation time. Did you get the PM suspend/resume working with this machine? I guess you'll have the same problem, too.
Anyway, try the patch below. Hopefully it fixes the power-save problem too.
Takashi
diff -r 64a0f0aac927 pci/hda/patch_realtek.c --- a/pci/hda/patch_realtek.c Wed Aug 15 22:20:45 2007 +0200 +++ b/pci/hda/patch_realtek.c Thu Aug 16 12:15:05 2007 +0200 @@ -5275,6 +5275,20 @@ static void alc882_gpio_mute(struct hda_ AC_VERB_SET_GPIO_DATA, gpiostate); }
+/* set up GPIO at initialization */ +static void alc885_macpro_init_hook(struct hda_codec *codec) +{ + alc882_gpio_mute(codec, 0, 0); + alc882_gpio_mute(codec, 1, 0); +} + +/* set up GPIO and update auto-muting at initialization */ +static void alc885_imac24_init_hook(struct hda_codec *codec) +{ + alc885_macpro_init_hook(codec); + alc885_imac24_automute(codec); +} + /* * generic initialization of ADC, input mixers and output mixers */ @@ -5479,6 +5493,7 @@ static struct alc_config_preset alc882_p .num_channel_mode = ARRAY_SIZE(alc882_ch_modes), .channel_mode = alc882_ch_modes, .input_mux = &alc882_capture_source, + .init_hook = alc885_macpro_init_hook, }, [ALC885_IMAC24] = { .mixers = { alc885_imac24_mixer }, @@ -5491,7 +5506,7 @@ static struct alc_config_preset alc882_p .channel_mode = alc882_ch_modes, .input_mux = &alc882_capture_source, .unsol_event = alc885_imac24_unsol_event, - .init_hook = alc885_imac24_automute, + .init_hook = alc885_imac24_init_hook, }, [ALC882_TARGA] = { .mixers = { alc882_targa_mixer, alc882_chmode_mixer, @@ -5693,11 +5708,6 @@ static int patch_alc882(struct hda_codec
if (board_config != ALC882_AUTO) setup_preset(spec, &alc882_presets[board_config]); - - if (board_config == ALC885_MACPRO || board_config == ALC885_IMAC24) { - alc882_gpio_mute(codec, 0, 0); - alc882_gpio_mute(codec, 1, 0); - }
spec->stream_name_analog = "ALC882 Analog"; spec->stream_analog_playback = &alc882_pcm_analog_playback;