{
        const struct hda_codec_preset **tbl, *preset;
 
+       if (codec->bus->modelname && !strcmp(codec->bus->modelname, "generic"))
+               return NULL; /* use the generic parser */
+
        for (tbl = hda_preset_tables; *tbl; tbl++) {
                for (preset = *tbl; preset->id; preset++) {
                        u32 mask = preset->mask;
                                                         0);
        }
 
-       if (strcmp(codec->bus->modelname, "generic"))
-               codec->preset = find_codec_preset(codec);
+       codec->preset = find_codec_preset(codec);
        if (! *bus->card->mixername)
                snd_hda_get_codec_name(codec, bus->card->mixername,
                                       sizeof(bus->card->mixername));