ALSA: x86: Minor code rearrangement
authorTakashi Iwai <tiwai@suse.de>
Wed, 15 Feb 2017 21:08:21 +0000 (22:08 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 16 Feb 2017 08:22:44 +0000 (09:22 +0100)
Put the stuff in the right order; notification should be at the end of
the action.

Also dropped a superfluous debug print and incorrect comments.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/x86/intel_hdmi_audio.c

index 8d67031e8429522c187523f3ef36f8ee0b645b10..dd3baabd1e8295e422297088c38f5b993ab772dc 100644 (file)
@@ -1384,18 +1384,15 @@ static void had_process_hot_plug(struct snd_intelhad *intelhaddata)
                        __func__, __LINE__);
        spin_unlock_irq(&intelhaddata->had_spinlock);
 
-       /* Safety check */
+       had_build_channel_allocation_map(intelhaddata);
+
+       /* Report to above ALSA layer */
        substream = had_substream_get(intelhaddata);
        if (substream) {
-               dev_dbg(intelhaddata->dev,
-                       "Force to stop the active stream by disconnection\n");
-               /* Set runtime->state to hw_params done */
                snd_pcm_stop_xrun(substream);
                had_substream_put(intelhaddata);
        }
 
-       had_build_channel_allocation_map(intelhaddata);
-
        snd_jack_report(intelhaddata->jack, SND_JACK_AVOUT);
 }
 
@@ -1404,14 +1401,11 @@ static void had_process_hot_unplug(struct snd_intelhad *intelhaddata)
 {
        struct snd_pcm_substream *substream;
 
-       substream = had_substream_get(intelhaddata);
-
        spin_lock_irq(&intelhaddata->had_spinlock);
-
        if (!intelhaddata->connected) {
                dev_dbg(intelhaddata->dev, "Device already disconnected\n");
                spin_unlock_irq(&intelhaddata->had_spinlock);
-               goto out;
+               return;
 
        }
 
@@ -1424,16 +1418,17 @@ static void had_process_hot_unplug(struct snd_intelhad *intelhaddata)
                        __func__, __LINE__);
        spin_unlock_irq(&intelhaddata->had_spinlock);
 
+       kfree(intelhaddata->chmap->chmap);
+       intelhaddata->chmap->chmap = NULL;
+
        /* Report to above ALSA layer */
-       if (substream)
+       substream = had_substream_get(intelhaddata);
+       if (substream) {
                snd_pcm_stop_xrun(substream);
+               had_substream_put(intelhaddata);
+       }
 
- out:
        snd_jack_report(intelhaddata->jack, 0);
-       if (substream)
-               had_substream_put(intelhaddata);
-       kfree(intelhaddata->chmap->chmap);
-       intelhaddata->chmap->chmap = NULL;
 }
 
 /*