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;