[alsa-devel] HDA Intel IDT 92HD71B7X - HP Pavilion DV7-1299EF - Only the left speaker is working

Takashi Iwai tiwai at suse.de
Mon Nov 16 17:28:13 CET 2009


At Sun, 15 Nov 2009 17:26:00 +0100,
Wael Nasreddine (a.k.a eMxyzptlk) wrote:
> 
> On Sat, Nov 14, 2009 at 15:25, Wael Nasreddine (a.k.a eMxyzptlk) <
> mla at nasreddine.com> wrote:
> 
> > On Sat, Nov 14, 2009 at 14:03, Takashi Iwai <tiwai at suse.de> wrote:
> > >
> > > At Sat, 14 Nov 2009 13:46:37 +0100,
> > > Wael Nasreddine (a.k.a eMxyzptlk) wrote:
> > > >
> > > > [1  <multipart/alternative (7bit)>]
> > > > [1.1  <text/plain; UTF-8 (7bit)>]
> > > > On Thu, Nov 12, 2009 at 11:16, Takashi Iwai <tiwai at suse.de> wrote:
> > > >
> > > > > At Thu, 12 Nov 2009 10:46:24 +0100,
> > > > > Wael Nasreddine (a.k.a eMxyzptlk) wrote:
> > > > > >
> > > > > > Takashi,
> > > > > >
> > > > > > I tried the snapshot from
> > > > > >
> > > > >
> > ftp://ftp.kernel.org/pub/linux/kernel/people/tiwai/snapshot/alsa-driver-snapshot.tar.gz
> > > > > > last night with and without options still no go, the options I've
> > > > > > tried:
> > > > > >
> > > > > > - options snd-hda-intel enable_msi=
> > > > > > - options snd-hda-intel enable_msi=1 single_cmd=0
> > > > > > power_save_controller=0 power_save=0 model=hp-dv5
> > > > >
> > > > > power_save should be irrelevant.  And model=hp-dv5 and enable_msi=1
> > > > > are already turned on as default in the recent version.
> > > > >
> > > > > The next would be model=auto to avoid hp-dv5 quirk.
> > > > >
> > > > > Also, it's helpful if you give a summary of your problems again.
> > > > >
> > > > >
> > > > > Takashi
> > > > >
> > > >
> > > > Takashi,
> > > >
> > > > I just tried 'options snd-hda-intel enable_msi=1 model=auto' Didn't
> > > > have much effect, the same problem (sound only from left speaker),
> > > > always the same result with 'speaker-test -c6 -twav' I can only hear
> > > > 'Front Left'
> > >
> > > OK.  But the headphone works, right?
> > >
> > Yes Headphones works, even mics works
> >
> > >
> > > > Summary:
> > > > =======
> > > >
> > > > I have an HP DV7-1299EF, BIOS (Version F.2C, F.2A and F.23) , Due to a
> > BIOS
> > > > BUG, the
> > > > BIOS report only one speaker as an output so the driver does not know
> > > > how to use pins in order to have a stereo output ( at least that's
> > > > what you told me last month when you analysed the alsa-info output)...
> > And
> > > > so one speaker, the left speaker is the only speaker currently working
> > under
> > > > Linux.
> > > >
> > > >
> > > > First I suspected a hardware problem so 2 days ago I restored Windows,
> > > > tried the sound it works, and I updated my BIOS (it was version F.2A
> > > > before) but sadly it has the same BUG, I also tried reverting back to
> > F.2A
> > > > and further back to F.23 same result...
> > > >
> > > > Attached to this mail, my alsa-info.txt
> > >
> > > The codec registers look OK through a quick look.
> > >
> > > You can try GPIO pin up/down for each pin.  Also each pin has two
> > > directions, so you'll have 8 x 2 x 2 trials.
> > > For example, to test GPIO 3, pass 0x08 (= 1 << 3), try the commands
> > > below and check aplay at each.  (the lines '//' are just my comments)
> > >
> > >        // dir = 0, data = 1
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x08
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x00
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x08
> > >
> > >        // dir = 0, data = 0
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x08
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x00
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00
> > >
> > >        // dir = 1, data = 0
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x08
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x08
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x00
> > >
> > >        // dir = 1, data = 1
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_MASK 0x08
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DIR 0x08
> > >        hda-verb /dev/snd/hwC0D0 0x01 SET_GPIO_DATA 0x08
> > >
> > > Repeat these for each GPIO pin, from 0 to 7.
> > >
> > > One another possibility is to use the output pin NID 0x0f.
> > > For testing this, build with the reconfig feature (usually enabled),
> > > then change the pin 0x0f default config, such as
> > >
> > >        echo 0x0f 0x90171111 > /sys/class/sound/hwC0D0/user_pin_configs
> > >
> > > then quit all sound apps and reconfigure
> > >
> > >        echo 1 > /sys/class/sound/hwC0D0/reconfig
> > >
> > > Restore the mixer setup once via alsactl
> > >
> > >        alsactl restore
> > >
> > > Then check the mixer volumes again, try aplay.  With this setup,
> > > try GPIO procedures above, too.
> > >
> > >
> > > thanks,
> > >
> > > Takashi
> >
> > For the tests I've created a little script (attached for review if I
> > done something wrong), Here's the results
> >
> > 0x01:
> > -------> dir = 0, data = 1  =====> Front Left
> > -------> dir = 0, data = 0  =====> Front Left
> > -------> dir = 1, data = 1  =====> Front Left
> > -------> dir = 1, data = 0  =====> No Sound
> >
> > 0x02:
> > -------> dir = 0, data = 1  =====> No Sound
> > -------> dir = 0, data = 0  =====> No Sound
> > -------> dir = 1, data = 1  =====> No Sound
> > -------> dir = 1, data = 0  =====> No Sound
> >
> > 0x04:
> > -------> dir = 0, data = 1  =====> No Sound
> > -------> dir = 0, data = 0  =====> No Sound
> > -------> dir = 1, data = 1  =====> No Sound
> > -------> dir = 1, data = 0  =====> No Sound
> >
> > 0x16:
> > -------> dir = 0, data = 1  =====> No Sound
> > -------> dir = 0, data = 0  =====> No Sound
> > -------> dir = 1, data = 1  =====> No Sound
> > -------> dir = 1, data = 0  =====> No Sound
> >
> > 0x32:
> > -------> dir = 0, data = 1  =====> No Sound
> > -------> dir = 0, data = 0  =====> No Sound
> > -------> dir = 1, data = 1  =====> LFE
> > -------> dir = 1, data = 0  =====> No Sound
> >
> > 0x64:
> > -------> dir = 0, data = 1  =====> No Sound
> > -------> dir = 0, data = 0  =====> No Sound
> > -------> dir = 1, data = 1  =====> LFE
> > -------> dir = 1, data = 0  =====> No Sound
> >
> > 0x128:
> > -------> dir = 0, data = 1  =====> No Sound
> > -------> dir = 0, data = 0  =====> No Sound
> > -------> dir = 1, data = 1  =====> LFE
> > -------> dir = 1, data = 0  =====> No Sound
> >
> >
> > I've got the same results with the NID 0x0f
> >
> >
> Hey Takashi,
> 
> I forgot the
> 
> 0x08:
> -------> dir = 0, data = 1  =====> No Sound
> -------> dir = 0, data = 0  =====> No Sound
> -------> dir = 1, data = 1  =====> No Sound
> -------> dir = 1, data = 0  =====> No Sound
> 
> 
> Looking at the results above, how can I get both the Front Left and LFE to
> output sound? and hopefully we get the right speaker later to work

The LFE could be enabled by the patch below.  Give it a try.

Takashi

---
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 7f76a97..57a561d 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -5468,6 +5468,18 @@ again:
 		break;
 	}
 
+	/* enable LFE on HP dv7 if available */
+	if (spec->board_config == STAC_HP_DV5) {
+		unsigned int cap;
+		cap = snd_hda_param_read(codec, 0x1, AC_PAR_GPIO_CAP);
+		cap &= AC_GPIO_IO_COUNT;
+		if (cap >= 6) {
+			spec->gpio_mask |= 0x20;
+			spec->gpio_dir |= 0x20;
+			spec->gpio_data |= 0x20;
+		}
+	}
+
 	if (hp_bseries_system(codec->subsystem_id)) {
 		pin_cfg = snd_hda_codec_get_pincfg(codec, 0x0f);
 		if (get_defcfg_device(pin_cfg) == AC_JACK_LINE_OUT ||



More information about the Alsa-devel mailing list