A regression was introduced in 
7639a06c23c7d4cda3: if AC_PAR_SUBSYSTEM_ID
reads as zero, one should retry using AC_VERB_GET_SUBSYSTEM_ID.
This seems to hit many codecs (my own laptop included), and causes
quirks for some machines not to apply correctly.
Reported-by: TienFu Chen <tienfu.chen@canonical.com>
Signed-off-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
 
        codec->power_caps = snd_hdac_read_parm(codec, fg, AC_PAR_POWER_STATE);
        /* reread ssid if not set by parameter */
-       if (codec->subsystem_id == -1)
+       if (codec->subsystem_id == -1 || codec->subsystem_id == 0)
                snd_hdac_read(codec, fg, AC_VERB_GET_SUBSYSTEM_ID, 0,
                              &codec->subsystem_id);