diff options
Diffstat (limited to 'drivers/firewire/fw-topology.c')
-rw-r--r-- | drivers/firewire/fw-topology.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/firewire/fw-topology.c b/drivers/firewire/fw-topology.c index d2c7a3d7e1cb..213b0ff8f3d6 100644 --- a/drivers/firewire/fw-topology.c +++ b/drivers/firewire/fw-topology.c | |||
@@ -108,6 +108,7 @@ static struct fw_node *fw_node_create(u32 sid, int port_count, int color) | |||
108 | node->node_id = LOCAL_BUS | SELF_ID_PHY_ID(sid); | 108 | node->node_id = LOCAL_BUS | SELF_ID_PHY_ID(sid); |
109 | node->link_on = SELF_ID_LINK_ON(sid); | 109 | node->link_on = SELF_ID_LINK_ON(sid); |
110 | node->phy_speed = SELF_ID_PHY_SPEED(sid); | 110 | node->phy_speed = SELF_ID_PHY_SPEED(sid); |
111 | node->initiated_reset = SELF_ID_PHY_INITIATOR(sid); | ||
111 | node->port_count = port_count; | 112 | node->port_count = port_count; |
112 | 113 | ||
113 | atomic_set(&node->ref_count, 1); | 114 | atomic_set(&node->ref_count, 1); |
@@ -289,12 +290,11 @@ static struct fw_node *build_tree(struct fw_card *card, | |||
289 | beta_repeaters_present = true; | 290 | beta_repeaters_present = true; |
290 | 291 | ||
291 | /* | 292 | /* |
292 | * If all PHYs does not report the same gap count | 293 | * If PHYs report different gap counts, set an invalid count |
293 | * setting, we fall back to 63 which will force a gap | 294 | * which will force a gap count reconfiguration and a reset. |
294 | * count reconfiguration and a reset. | ||
295 | */ | 295 | */ |
296 | if (SELF_ID_GAP_COUNT(q) != gap_count) | 296 | if (SELF_ID_GAP_COUNT(q) != gap_count) |
297 | gap_count = 63; | 297 | gap_count = 0; |
298 | 298 | ||
299 | update_hop_count(node); | 299 | update_hop_count(node); |
300 | 300 | ||
@@ -431,6 +431,8 @@ update_tree(struct fw_card *card, struct fw_node *root) | |||
431 | event = FW_NODE_LINK_OFF; | 431 | event = FW_NODE_LINK_OFF; |
432 | else if (!node0->link_on && node1->link_on) | 432 | else if (!node0->link_on && node1->link_on) |
433 | event = FW_NODE_LINK_ON; | 433 | event = FW_NODE_LINK_ON; |
434 | else if (node1->initiated_reset && node1->link_on) | ||
435 | event = FW_NODE_INITIATED_RESET; | ||
434 | else | 436 | else |
435 | event = FW_NODE_UPDATED; | 437 | event = FW_NODE_UPDATED; |
436 | 438 | ||