aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/firewire/motu/motu-stream.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sound/firewire/motu/motu-stream.c b/sound/firewire/motu/motu-stream.c
index 5630a8f1f2f1..82891583b736 100644
--- a/sound/firewire/motu/motu-stream.c
+++ b/sound/firewire/motu/motu-stream.c
@@ -236,6 +236,7 @@ static int ensure_packet_formats(struct snd_motu *motu)
int snd_motu_stream_start_duplex(struct snd_motu *motu)
{
+ unsigned int generation = motu->rx_resources.generation;
int err = 0;
if (motu->substreams_counter == 0)
@@ -245,6 +246,16 @@ int snd_motu_stream_start_duplex(struct snd_motu *motu)
amdtp_streaming_error(&motu->tx_stream))
finish_session(motu);
+ if (generation != fw_parent_device(motu->unit)->card->generation) {
+ err = fw_iso_resources_update(&motu->rx_resources);
+ if (err < 0)
+ return err;
+
+ err = fw_iso_resources_update(&motu->tx_resources);
+ if (err < 0)
+ return err;
+ }
+
if (!amdtp_stream_running(&motu->rx_stream)) {
err = ensure_packet_formats(motu);
if (err < 0)