[alsa-devel] Recent code changes for HD-audio on HG repo

Takashi Iwai tiwai at suse.de
Thu Aug 16 12:17:36 CEST 2007


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;


More information about the Alsa-devel mailing list