You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
firewire: reread config ROM when device reset the bus
When a device changes its configuration ROM, it announces this with a
bus reset. firewire-core has to check which node initiated a bus reset
and whether any unit directories went away or were added on this node.
Tested with an IOI FWB-IDE01AB which has its link-on bit set if bus
power is available but does not respond to ROM read requests if self
power is off. This implements
- recognition of the units if self power is switched on after fw-core
gave up the initial attempt to read the config ROM,
- shutdown of the units when self power is switched off.
Also tested with a second PC running Linux/ieee1394. When the eth1394
driver is inserted and removed on that node, fw-core now notices the
addition and removal of the IPv4 unit on the ieee1394 node.
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
This commit is contained in:
@@ -108,6 +108,7 @@ static struct fw_node *fw_node_create(u32 sid, int port_count, int color)
|
||||
node->node_id = LOCAL_BUS | SELF_ID_PHY_ID(sid);
|
||||
node->link_on = SELF_ID_LINK_ON(sid);
|
||||
node->phy_speed = SELF_ID_PHY_SPEED(sid);
|
||||
node->initiated_reset = SELF_ID_PHY_INITIATOR(sid);
|
||||
node->port_count = port_count;
|
||||
|
||||
atomic_set(&node->ref_count, 1);
|
||||
@@ -431,6 +432,8 @@ update_tree(struct fw_card *card, struct fw_node *root)
|
||||
event = FW_NODE_LINK_OFF;
|
||||
else if (!node0->link_on && node1->link_on)
|
||||
event = FW_NODE_LINK_ON;
|
||||
else if (node1->initiated_reset && node1->link_on)
|
||||
event = FW_NODE_INITIATED_RESET;
|
||||
else
|
||||
event = FW_NODE_UPDATED;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user