|
@@ -28,9 +28,9 @@
|
|
|
#include <linux/module.h>
|
|
|
#include <linux/slab.h>
|
|
|
#include <linux/spinlock.h>
|
|
|
-#include <linux/string.h>
|
|
|
|
|
|
#include <asm/atomic.h>
|
|
|
+#include <asm/byteorder.h>
|
|
|
#include <asm/system.h>
|
|
|
|
|
|
#include "core.h"
|
|
@@ -510,13 +510,16 @@ static void update_tree(struct fw_card *card, struct fw_node *root)
|
|
|
static void update_topology_map(struct fw_card *card,
|
|
|
u32 *self_ids, int self_id_count)
|
|
|
{
|
|
|
- int node_count;
|
|
|
+ int node_count = (card->root_node->node_id & 0x3f) + 1;
|
|
|
+ __be32 *map = card->topology_map;
|
|
|
+
|
|
|
+ *map++ = cpu_to_be32((self_id_count + 2) << 16);
|
|
|
+ *map++ = cpu_to_be32(be32_to_cpu(card->topology_map[1]) + 1);
|
|
|
+ *map++ = cpu_to_be32((node_count << 16) | self_id_count);
|
|
|
+
|
|
|
+ while (self_id_count--)
|
|
|
+ *map++ = cpu_to_be32p(self_ids++);
|
|
|
|
|
|
- card->topology_map[1]++;
|
|
|
- node_count = (card->root_node->node_id & 0x3f) + 1;
|
|
|
- card->topology_map[2] = (node_count << 16) | self_id_count;
|
|
|
- card->topology_map[0] = (self_id_count + 2) << 16;
|
|
|
- memcpy(&card->topology_map[3], self_ids, self_id_count * 4);
|
|
|
fw_compute_block_crc(card->topology_map);
|
|
|
}
|
|
|
|