Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 091bf4dc authored by Ville Syrjala's avatar Ville Syrjala Committed by Jaroslav Kysela
Browse files

[ALSA] maestro3: HP OmniBook HW volume button magic



Maestro3 driver
Some HP OmniBook laptops (500 and 6000 at least) require some GPIO magic
before the HW volume buttons work. This patch makes them work mostly.
Something is still missing to make them work perfectly. However I have been
unable to figure out what exactly.

Signed-off-by: default avatarVille Syrjala <syrjala@sci.fi>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent db68d15d
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -2392,6 +2392,18 @@ snd_m3_chip_init(m3_t *chip)
	       DISABLE_LEGACY);
	pci_write_config_word(pcidev, PCI_LEGACY_AUDIO_CTRL, w);

	/*
	 * Volume buttons on some HP OmniBook laptops (500 and 6000 at least)
	 * don't work correctly. This makes them work for the most part.
	 * Volume up and down buttons on the laptop side work perfectly.
	 * Fn+cursor_up (volme up) works, Fn+cursor_down (volume down) doesn't,
	 * Fn+F8 (mute) works acts as volume up.
	 */
	outw(~(GPI_VOL_DOWN|GPI_VOL_UP), io + GPIO_MASK);
	outw(inw(io + GPIO_DIRECTION) & ~(GPI_VOL_DOWN|GPI_VOL_UP), io + GPIO_DIRECTION);
	outw((GPI_VOL_DOWN|GPI_VOL_UP), io + GPIO_DATA);
	outw(0xffff, io + GPIO_MASK);

	pci_read_config_dword(pcidev, PCI_ALLEGRO_CONFIG, &n);
	n &= ~HV_BUTTON_FROM_GD;
	n |= HV_CTRL_ENABLE | REDUCED_DEBOUNCE;