diff options
Diffstat (limited to 'sound/firewire/dice')
-rw-r--r-- | sound/firewire/dice/dice-stream.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/sound/firewire/dice/dice-stream.c b/sound/firewire/dice/dice-stream.c index 6bbf7421a53c..f61b99a72655 100644 --- a/sound/firewire/dice/dice-stream.c +++ b/sound/firewire/dice/dice-stream.c @@ -399,6 +399,7 @@ static int start_streams(struct snd_dice *dice, enum amdtp_stream_direction dir, */ int snd_dice_stream_start_duplex(struct snd_dice *dice) { + unsigned int generation = dice->rx_resources[0].generation; struct reg_params tx_params, rx_params; unsigned int i; unsigned int rate; @@ -421,6 +422,15 @@ int snd_dice_stream_start_duplex(struct snd_dice *dice) } } + if (generation != fw_parent_device(dice->unit)->card->generation) { + for (i = 0; i < MAX_STREAMS; ++i) { + if (i < tx_params.count) + fw_iso_resources_update(dice->tx_resources + i); + if (i < rx_params.count) + fw_iso_resources_update(dice->rx_resources + i); + } + } + // Check required streams are running or not. err = snd_dice_transaction_get_rate(dice, &rate); if (err < 0) |