Device Tree (OF) API¶
The KUnit device tree API is used to test device tree (of_*) dependent code.
-
int __of_overlay_apply_kunit(struct kunit *test, u8 *overlay_begin, const u8 *overlay_end)¶
Test managed
of_overlay_fdt_apply()
variant
Parameters
struct kunit *test
test context
u8 *overlay_begin
start address of overlay to apply
const u8 *overlay_end
end address of overlay to apply
Description
This is mostly internal API. See of_overlay_apply_kunit()
for the wrapper
that makes this easier to use.
Similar to of_overlay_fdt_apply()
, except the overlay is managed by the test
case and is automatically removed with of_overlay_remove()
after the test
case concludes.
Return
0 on success, negative errno on failure
-
of_overlay_apply_kunit¶
of_overlay_apply_kunit (test, overlay_name)
Test managed
of_overlay_fdt_apply()
for built-in overlays
Parameters
test
test context
overlay_name
name of overlay to apply
Description
This macro is used to apply a device tree overlay built with the cmd_dt_S_dtbo rule in scripts/Makefile.lib that has been compiled into the kernel image or KUnit test module. The overlay is automatically removed when the test is finished.
Unit tests that need device tree nodes should compile an overlay file with overlay_name.dtbo.o in their Makefile along with their unit test and then load the overlay during their test. The overlay_name matches the filename of the overlay without the dtbo filename extension. If CONFIG_OF_OVERLAY is not enabled, the test will be skipped.
In the Makefile
obj-$(CONFIG_OF_OVERLAY_KUNIT_TEST) += overlay_test.o kunit_overlay_test.dtbo.o
In the test
static void of_overlay_kunit_of_overlay_apply(struct kunit *test)
{
struct device_node *np;
KUNIT_ASSERT_EQ(test, 0,
of_overlay_apply_kunit(test, kunit_overlay_test));
np = of_find_node_by_name(NULL, "test-kunit");
KUNIT_EXPECT_NOT_ERR_OR_NULL(test, np);
of_node_put(np);
}
Return
0 on success, negative errno on failure.
Parameters
struct kunit *test
test to skip if the root node isn’t populated
-
int of_overlay_fdt_apply_kunit(struct kunit *test, void *overlay_fdt, u32 overlay_fdt_size, int *ovcs_id)¶
Test managed
of_overlay_fdt_apply()
Parameters
struct kunit *test
test context
void *overlay_fdt
device tree overlay to apply
u32 overlay_fdt_size
size in bytes of overlay_fdt
int *ovcs_id
identifier of overlay, used to remove the overlay
Description
Just like of_overlay_fdt_apply()
, except the overlay is managed by the test
case and is automatically removed with of_overlay_remove()
after the test
case concludes.
Return
0 on success, negative errno on failure
-
void of_node_put_kunit(struct kunit *test, struct device_node *node)¶
Test managed
of_node_put()
Parameters
struct kunit *test
test context
struct device_node *node
node to pass to
of_node_put()
Description
Just like of_node_put()
, except the node is managed by the test case and is
automatically put with of_node_put()
after the test case concludes.