aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/firewire/core-card.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/firewire/core-card.c')
-rw-r--r--drivers/firewire/core-card.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/drivers/firewire/core-card.c b/drivers/firewire/core-card.c
index 7c4cf6cfa74..faf2eee473b 100644
--- a/drivers/firewire/core-card.c
+++ b/drivers/firewire/core-card.c
@@ -208,13 +208,19 @@ static void allocate_broadcast_channel(struct fw_card *card, int generation)
208{ 208{
209 int channel, bandwidth = 0; 209 int channel, bandwidth = 0;
210 210
211 fw_iso_resource_manage(card, generation, 1ULL << 31, &channel, 211 if (!card->broadcast_channel_allocated) {
212 &bandwidth, true, card->bm_transaction_data); 212 fw_iso_resource_manage(card, generation, 1ULL << 31,
213 if (channel == 31) { 213 &channel, &bandwidth, true,
214 card->bm_transaction_data);
215 if (channel != 31) {
216 fw_notify("failed to allocate broadcast channel\n");
217 return;
218 }
214 card->broadcast_channel_allocated = true; 219 card->broadcast_channel_allocated = true;
215 device_for_each_child(card->device, (void *)(long)generation,
216 fw_device_set_broadcast_channel);
217 } 220 }
221
222 device_for_each_child(card->device, (void *)(long)generation,
223 fw_device_set_broadcast_channel);
218} 224}
219 225
220static const char gap_count_table[] = { 226static const char gap_count_table[] = {