ALSA: hda - Simplify EAPD control in patch_realtek.c
authorTakashi Iwai <tiwai@suse.de>
Mon, 27 Jun 2011 13:28:57 +0000 (15:28 +0200)
committerTakashi Iwai <tiwai@suse.de>
Mon, 27 Jun 2011 13:28:57 +0000 (15:28 +0200)
Look through the known NIDs that may have EAPD capabilities and turn
on/off them appropriately instead of checking the individual vendor ids.

This will also avoid the forgotten entries of newly added codec ids
in future.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_realtek.c

index b2dcb84dcbb6b5c1fc57e556d558789298285497..783017d9247f9b1d17a8e6b756eaee40d9ea8c52 100644 (file)
@@ -1366,28 +1366,12 @@ static void set_eapd(struct hda_codec *codec, hda_nid_t nid, int on)
 static void alc_auto_setup_eapd(struct hda_codec *codec, bool on)
 {
        /* We currently only handle front, HP */
-       switch (codec->vendor_id) {
-       case 0x10ec0260:
-               set_eapd(codec, 0x0f, on);
-               set_eapd(codec, 0x10, on);
-               break;
-       case 0x10ec0262:
-       case 0x10ec0267:
-       case 0x10ec0268:
-       case 0x10ec0269:
-       case 0x10ec0270:
-       case 0x10ec0272:
-       case 0x10ec0660:
-       case 0x10ec0662:
-       case 0x10ec0663:
-       case 0x10ec0665:
-       case 0x10ec0862:
-       case 0x10ec0889:
-       case 0x10ec0892:
-               set_eapd(codec, 0x14, on);
-               set_eapd(codec, 0x15, on);
-               break;
-       }
+       static hda_nid_t pins[] = {
+               0x0f, 0x10, 0x14, 0x15, 0
+       };
+       hda_nid_t *p;
+       for (p = pins; *p; p++)
+               set_eapd(codec, *p, on);
 }
 
 /* generic shutup callback;
@@ -1403,6 +1387,7 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type)
 {
        unsigned int tmp;
 
+       alc_auto_setup_eapd(codec, true);
        switch (type) {
        case ALC_INIT_GPIO1:
                snd_hda_sequence_write(codec, alc_gpio1_init_verbs);
@@ -1414,7 +1399,6 @@ static void alc_auto_init_amp(struct hda_codec *codec, int type)
                snd_hda_sequence_write(codec, alc_gpio3_init_verbs);
                break;
        case ALC_INIT_DEFAULT:
-               alc_auto_setup_eapd(codec, true);
                switch (codec->vendor_id) {
                case 0x10ec0260:
                        snd_hda_codec_write(codec, 0x1a, 0,