ALSA: hda - bug fix on references without checking CONFIG_SND_HDA_POWER_SAVE
authorMengdong Lin <mengdong.lin@intel.com>
Fri, 24 Aug 2012 04:06:30 +0000 (12:06 +0800)
committerTakashi Iwai <tiwai@suse.de>
Fri, 24 Aug 2012 05:22:42 +0000 (07:22 +0200)
The patch to support runtime PM introduced a bug:
Module parameter 'power_save_controller', and the codec flag 'd3_stop_clk'
'd3_stop_clk_ok' are defined only when HDA power save is enabled in config. But
there are references to them without checking macro CONFIG_SND_HDA_POWER_SAVE.

This patch is to fix the bug.

Signed-off-by: Mengdong Lin <mengdong.lin@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_intel.c

index 0de1f76..4a2f35c 100644 (file)
@@ -1320,11 +1320,13 @@ int /*__devinit*/ snd_hda_codec_new(struct hda_bus *bus,
                                           AC_VERB_GET_SUBSYSTEM_ID, 0);
        }
 
+#ifdef CONFIG_SND_HDA_POWER_SAVE
        codec->d3_stop_clk = snd_hda_codec_get_supported_ps(codec,
                                        codec->afg ? codec->afg : codec->mfg,
                                        AC_PWRST_CLKSTOP);
        if (!codec->d3_stop_clk)
                bus->power_keep_link_on = 1;
+#endif
 
        /* power-up all before initialization */
        hda_set_power_state(codec,
@@ -3544,7 +3546,9 @@ static void hda_set_power_state(struct hda_codec *codec, hda_nid_t fg,
        int count;
        unsigned int state;
 
+#ifdef CONFIG_SND_HDA_POWER_SAVE
        codec->d3_stop_clk_ok = 0;
+#endif
 
        if (codec->patch_ops.set_power_state) {
                codec->patch_ops.set_power_state(codec, fg, power_state);
@@ -3569,9 +3573,11 @@ static void hda_set_power_state(struct hda_codec *codec, hda_nid_t fg,
                        break;
        }
 
+#ifdef CONFIG_SND_HDA_POWER_SAVE
        if ((power_state == AC_PWRST_D3)
                && codec->d3_stop_clk && (state & AC_PWRST_CLK_STOP_OK))
                codec->d3_stop_clk_ok = 1;
+#endif
 }
 
 #ifdef CONFIG_SND_HDA_HWDEP
index 726f420..1c9c779 100644 (file)
@@ -2528,8 +2528,10 @@ static int azx_runtime_suspend(struct device *dev)
        struct snd_card *card = dev_get_drvdata(dev);
        struct azx *chip = card->private_data;
 
+#ifdef CONFIG_SND_HDA_POWER_SAVE
        if (!power_save_controller)
                return -EAGAIN;
+#endif
 
        azx_stop_chip(chip);
        azx_clear_irq_pending(chip);