Comment 7 for bug 332479

Revision history for this message
chris (christoph-plattner-deactivatedaccount) wrote :

Hello to all !

I solved the problem on my HP HDX16.
I patched the kernel driver "./sound/pci/hda/patch_sigmatel.c".
The problem is, that the linux-2.6.28 does not recognize the HP codecs well,
and the 2.6.27 did something different, so that the codec was initized per
accident (I have to reanalyze the 2.6.27 case, why it worked there).

Anyway, I added the model "hp-hdx" and added the PCI recognition for
my IDT 82HD71B7X codec.

In a second step I added the MUTE LED stuff !!!!!!!!

I like it now, the mute LED changes to orange, when mute and back to
white, when unmuted. The LED is also handled in the same C file, so
only one file has to be patched.

I already put my patch to ALSA, but there was no reaction yet. I can
provide my patch here too, but I have it @home, now I am @work.
In the botton I added the patch out of the ALSA bugtrack page,
identations may be corrrupt here, sorry ...

I also got feedback from one tester of my patch, that it was not wokring
on his HDX18. I have a HX16.

Con you provide me an lspci -v of your HDX18 sound device !
I want to check, if the subvendor/subdevice matches.

Christoph

Patch (copied from alsa issue 4418, created by me):
-------------------------------------------------------------------------------

diff -u linux-source-2.6.28-diff-base/sound/pci/hda/patch_sigmatel.c linux-source-2.6.28/sound/pci/hda/patch_sigmatel.c
--- linux-source-2.6.28-diff-base/sound/pci/hda/patch_sigmatel.c 2009-02-18 19:48:30.000000000 +0100
+++ linux-source-2.6.28/sound/pci/hda/patch_sigmatel.c 2009-02-23 00:00:43.000000000 +0100
@@ -91,6 +91,7 @@
        STAC_DELL_M4_3,
        STAC_HP_M4,
        STAC_HP_DV5,
+ STAC_HP_HDX,
        STAC_92HD71BXX_MODELS
 };

@@ -1760,6 +1761,7 @@
        [STAC_DELL_M4_3] = dell_m4_3_pin_configs,
        [STAC_HP_M4] = NULL,
        [STAC_HP_DV5] = NULL,
+ [STAC_HP_HDX] = NULL,
 };

 static const char *stac92hd71bxx_models[STAC_92HD71BXX_MODELS] = {
@@ -1769,6 +1771,7 @@
        [STAC_DELL_M4_3] = "dell-m4-3",
        [STAC_HP_M4] = "hp-m4",
        [STAC_HP_DV5] = "hp-dv5",
+ [STAC_HP_HDX] = "hp-hdx",
 };

 static struct snd_pci_quirk stac92hd71bxx_cfg_tbl[] = {
@@ -1785,6 +1788,8 @@
                      "HP dv5", STAC_HP_DV5),
        SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x361a,
                                "unknown HP", STAC_HP_M4),
+ SND_PCI_QUIRK(PCI_VENDOR_ID_HP, 0x361b,
+ "HP HDX", STAC_HP_HDX),
        SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0233,
                                "unknown Dell", STAC_DELL_M4_1),
        SND_PCI_QUIRK(PCI_VENDOR_ID_DELL, 0x0234,
@@ -4743,6 +4748,11 @@
                spec->num_smuxes = 0;
                spec->num_dmuxes = 0;
                break;
+ case STAC_HP_HDX:
+ spec->num_dmics = 1;
+ spec->num_dmuxes = 1;
+ spec->num_smuxes = 0;
+ break;
        default:
                spec->num_dmics = STAC92HD71BXX_NUM_DMICS;
                spec->num_smuxes = ARRAY_SIZE(stac92hd71bxx_smux_nids);