diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2010-06-10 02:40:49 -0400 |
---|---|---|
committer | Clemens Ladisch <clemens@ladisch.de> | 2010-06-10 02:40:49 -0400 |
commit | e91b2787d0a2e4719b016e8dec0afd2d5ab6c30f (patch) | |
tree | e76a3665243ed9fb7275228d9a14dcb0eb5b567a /drivers/firewire/core-topology.c | |
parent | 7e0e314f198d5048b74c8f0ef9f4c1c02e5ecfc9 (diff) |
firewire: allocate broadcast channel in hardware
On OHCI 1.1 controllers, let the hardware allocate the broadcast channel
automatically. This removes a theoretical race condition directly after
a bus reset where it could be possible to read the channel allocation
register with channel 31 still being unallocated.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Diffstat (limited to 'drivers/firewire/core-topology.c')
-rw-r--r-- | drivers/firewire/core-topology.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/firewire/core-topology.c b/drivers/firewire/core-topology.c index ca3c65318165..00a556f3a585 100644 --- a/drivers/firewire/core-topology.c +++ b/drivers/firewire/core-topology.c | |||
@@ -543,7 +543,8 @@ void fw_core_handle_bus_reset(struct fw_card *card, int node_id, int generation, | |||
543 | 543 | ||
544 | spin_lock_irqsave(&card->lock, flags); | 544 | spin_lock_irqsave(&card->lock, flags); |
545 | 545 | ||
546 | card->broadcast_channel_allocated = false; | 546 | card->broadcast_channel_allocated = (card->driver->get_features(card) & |
547 | FEATURE_CHANNEL_31_ALLOCATED) != 0; | ||
547 | card->node_id = node_id; | 548 | card->node_id = node_id; |
548 | /* | 549 | /* |
549 | * Update node_id before generation to prevent anybody from using | 550 | * Update node_id before generation to prevent anybody from using |