return ref1.of_offset == ref2.of_offset;
}
+/**
+ * oftree_valid() - check if an oftree is valid
+ *
+ * @tree: Reference containing oftree
+ * Return: true if the reference contains a valid oftree, false if node
+ */
+static inline bool oftree_valid(oftree tree)
+{
+ if (of_live_active())
+ return tree.np;
+ else
+ return tree.fdt;
+}
+
+/**
+ * oftree_null() - Obtain a null oftree
+ *
+ * This returns an oftree which points to no tree. It works both with the flat
+ * tree and livetree.
+ */
+static inline oftree oftree_null(void)
+{
+ oftree tree;
+
+ if (of_live_active())
+ tree.np = NULL;
+ else
+ tree.fdt = NULL;
+
+ return tree;
+}
+
/**
* ofnode_null() - Obtain a null ofnode
*
return tree;
}
+/**
+ * oftree_from_np() - Returns an oftree from a node pointer
+ *
+ * @root: Root node of the tree
+ * Returns: reference to the given node
+ */
+static inline oftree oftree_from_np(struct device_node *root)
+{
+ oftree tree;
+
+ tree.np = root;
+
+ return tree;
+}
+
+/**
+ * oftree_from_fdt() - Returns an oftree from a flat device tree pointer
+ *
+ * @fdt: Device tree to use
+ *
+ * Returns: reference to the given node
+ */
+static inline oftree oftree_from_fdt(void *fdt)
+{
+ oftree tree;
+
+ tree.fdt = fdt;
+
+ return tree;
+}
+
/**
* ofnode_name_eq() - Check if the node name is equivalent to a given name
* ignoring the unit address
ut_assert(ofnode_valid(node));
ut_asserteq_str("sbe5", ofnode_get_name(node));
+ ut_assert(!oftree_valid(oftree_null()));
+
ut_assertok(make_ofnode_fdt(uts, fdt, sizeof(fdt)));
if (of_live_active()) {
ut_assertok(unflatten_device_tree(fdt, &root));
- tree.np = root;
+ tree = oftree_from_np(root);
} else {
- tree.fdt = fdt;
+ tree = oftree_from_fdt(fdt);
}
+ ut_assert(oftree_valid(tree));
/* Make sure they don't work on this new tree */
node = ofnode_path_root(tree, "mmc0");