ALSA: fireface: minor code refactoring to finish streaming session
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sun, 2 Jun 2019 07:12:58 +0000 (16:12 +0900)
committerTakashi Iwai <tiwai@suse.de>
Tue, 11 Jun 2019 09:36:26 +0000 (11:36 +0200)
The operation to finish packet streaming corresponds to stopping
isochronous contexts.

This commit applies code refactoring to move codes to stop into
a helper function to finish the session.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/fireface/ff-stream.c

index 4f40dfb11979555b86aff7cbec96d26ec319ada8..884705ecf9401496b5adeade925735943f1f5d46 100644 (file)
@@ -33,6 +33,9 @@ int snd_ff_stream_get_multiplier_mode(enum cip_sfc sfc,
 
 static inline void finish_session(struct snd_ff *ff)
 {
+       amdtp_stream_stop(&ff->tx_stream);
+       amdtp_stream_stop(&ff->rx_stream);
+
        ff->spec->protocol->finish_session(ff);
        ff->spec->protocol->switch_fetching_mode(ff, false);
 }
@@ -112,9 +115,6 @@ int snd_ff_stream_reserve_duplex(struct snd_ff *ff, unsigned int rate)
                enum snd_ff_stream_mode mode;
                int i;
 
-               amdtp_stream_stop(&ff->tx_stream);
-               amdtp_stream_stop(&ff->rx_stream);
-
                finish_session(ff);
 
                fw_iso_resources_free(&ff->tx_resources);
@@ -165,12 +165,8 @@ int snd_ff_stream_start_duplex(struct snd_ff *ff, unsigned int rate)
                return 0;
 
        if (amdtp_streaming_error(&ff->tx_stream) ||
-           amdtp_streaming_error(&ff->rx_stream)) {
-               amdtp_stream_stop(&ff->tx_stream);
-               amdtp_stream_stop(&ff->rx_stream);
-
+           amdtp_streaming_error(&ff->rx_stream))
                finish_session(ff);
-       }
 
        /*
         * Regardless of current source of clock signal, drivers transfer some
@@ -214,9 +210,6 @@ int snd_ff_stream_start_duplex(struct snd_ff *ff, unsigned int rate)
 
        return 0;
 error:
-       amdtp_stream_stop(&ff->tx_stream);
-       amdtp_stream_stop(&ff->rx_stream);
-
        finish_session(ff);
 
        return err;
@@ -224,12 +217,8 @@ error:
 
 void snd_ff_stream_stop_duplex(struct snd_ff *ff)
 {
-       if (ff->substreams_counter > 0)
-               return;
-
-       amdtp_stream_stop(&ff->tx_stream);
-       amdtp_stream_stop(&ff->rx_stream);
-       finish_session(ff);
+       if (ff->substreams_counter == 0)
+               finish_session(ff);
 }
 
 void snd_ff_stream_update_duplex(struct snd_ff *ff)