提交 c374ab42 编写于 作者: C Clemens Ladisch

firewire: core: always enable cycle master packets

As part of the bus manager responsibilities, make sure that the cycle
master sends cycle start packets.  This is needed when the old bus
manager disabled the cycle master's cmstr bit and there are iso-capable
nodes on the new bus.
Signed-off-by: NClemens Ladisch <clemens@ladisch.de>
上级 e91b2787
...@@ -369,10 +369,8 @@ static void fw_card_bm_work(struct work_struct *work) ...@@ -369,10 +369,8 @@ static void fw_card_bm_work(struct work_struct *work)
goto out; goto out;
} else if (root_device_is_cmc) { } else if (root_device_is_cmc) {
/* /*
* FIXME: I suppose we should set the cmstr bit in the * We will send out a force root packet for this
* STATE_CLEAR register of this node, as described in * node as part of the gap count optimization.
* 1394-1995, 8.4.2.6. Also, send out a force root
* packet for this node.
*/ */
new_root_id = root_id; new_root_id = root_id;
} else { } else {
...@@ -413,10 +411,24 @@ static void fw_card_bm_work(struct work_struct *work) ...@@ -413,10 +411,24 @@ static void fw_card_bm_work(struct work_struct *work)
fw_send_phy_config(card, new_root_id, generation, gap_count); fw_send_phy_config(card, new_root_id, generation, gap_count);
fw_core_initiate_bus_reset(card, 1); fw_core_initiate_bus_reset(card, 1);
/* Will allocate broadcast channel after the reset. */ /* Will allocate broadcast channel after the reset. */
} else { goto out;
}
if (root_device_is_cmc) {
/*
* Make sure that the cycle master sends cycle start packets.
*/
card->bm_transaction_data[0] = cpu_to_be32(CSR_STATE_BIT_CMSTR);
rcode = fw_run_transaction(card, TCODE_WRITE_QUADLET_REQUEST,
root_id, generation, SCODE_100,
CSR_REGISTER_BASE + CSR_STATE_SET,
card->bm_transaction_data, sizeof(u32));
if (rcode == RCODE_GENERATION)
goto out;
}
if (local_id == irm_id) if (local_id == irm_id)
allocate_broadcast_channel(card, generation); allocate_broadcast_channel(card, generation);
}
out: out:
fw_node_put(root_node); fw_node_put(root_node);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册