diff --git a/test/test-main.c b/test/test-main.c
index 3cdf684..8fcb02e 100644
--- a/test/test-main.c
+++ b/test/test-main.c
@@ -106,7 +106,7 @@
  * This skips long/slow tests where there is not much value in running a flat
  * DT test in addition to a live DT test.
  *
- * @return true to run the given test on the flat device tree
+ * Return: true to run the given test on the flat device tree
  */
 static bool ut_test_run_on_flattree(struct unit_test *test)
 {
@@ -130,7 +130,7 @@
  *	a prefix.
  * @test_name: Name of current test
  * @select_name: Name of test to run (or NULL for all)
- * @return true to run this test, false to skip it
+ * Return: true to run this test, false to skip it
  */
 static bool test_matches(const char *prefix, const char *test_name,
 			 const char *select_name)
@@ -171,7 +171,7 @@
  *
  * @tests: List of tests to run
  * @count: Number of tests to ru
- * @return true if any of the tests have the UT_TESTF_DM flag
+ * Return: true if any of the tests have the UT_TESTF_DM flag
  */
 static bool ut_list_has_dm_tests(struct unit_test *tests, int count)
 {
@@ -189,7 +189,7 @@
  * dm_test_restore() Put things back to normal so sandbox works as expected
  *
  * @of_root: Value to set for of_root
- * @return 0 if OK, -ve on error
+ * Return: 0 if OK, -ve on error
  */
 static int dm_test_restore(struct device_node *of_root)
 {
@@ -212,7 +212,7 @@
  *
  * @uts: Test state
  * @test: Test to prepare for
- * @return 0 if OK, -EAGAIN to skip this test since some required feature is not
+ * Return: 0 if OK, -EAGAIN to skip this test since some required feature is not
  *	available, other -ve on error (meaning that testing cannot likely
  *	continue)
  */
@@ -253,7 +253,7 @@
  *
  * @uts: Test state
  * @test: Test to clean up after
- * @return 0 if OK, -ve on error (meaning that testing cannot likely continue)
+ * Return: 0 if OK, -ve on error (meaning that testing cannot likely continue)
  */
 static int test_post_run(struct unit_test_state *uts, struct unit_test *test)
 {
@@ -275,7 +275,7 @@
  *	incremented by the number of failures (0, one hopes)
  * @test_name: Test to run
  * @name: Name of test, possibly skipping a prefix that should not be displayed
- * @return 0 if all tests passed, -EAGAIN if the test should be skipped, -1 if
+ * Return: 0 if all tests passed, -EAGAIN if the test should be skipped, -1 if
  *	any failed
  */
 static int ut_run_test(struct unit_test_state *uts, struct unit_test *test,
@@ -323,7 +323,7 @@
  *	incremented by the number of failures (0, one hopes)
  * @test: Test to run
  * @name: Name of test, possibly skipping a prefix that should not be displayed
- * @return 0 if all tests passed, -EAGAIN if the test should be skipped, -1 if
+ * Return: 0 if all tests passed, -EAGAIN if the test should be skipped, -1 if
  *	any failed
  */
 static int ut_run_test_live_flat(struct unit_test_state *uts,
@@ -371,7 +371,7 @@
  * @count: Number of tests to run
  * @select_name: Name of a single test to run (from the list provided). If NULL
  *	then all tests are run
- * @return 0 if all tests passed, -ENOENT if test @select_name was not found,
+ * Return: 0 if all tests passed, -ENOENT if test @select_name was not found,
  *	-EBADF if any failed
  */
 static int ut_run_tests(struct unit_test_state *uts, const char *prefix,
