summaryrefslogtreecommitdiff
path: root/drivers/of/selftest.c
diff options
context:
space:
mode:
authorScott Wood <scottwood@freescale.com>2014-04-07 23:49:35 (GMT)
committerScott Wood <scottwood@freescale.com>2014-04-07 23:49:35 (GMT)
commit62b8c978ee6b8d135d9e7953221de58000dba986 (patch)
tree683b04b2e627f6710c22c151b23c8cc9a165315e /drivers/of/selftest.c
parent78fd82238d0e5716578c326404184a27ba67fd6e (diff)
downloadlinux-fsl-qoriq-62b8c978ee6b8d135d9e7953221de58000dba986.tar.xz
Rewind v3.13-rc3+ (78fd82238d0e5716) to v3.12
Diffstat (limited to 'drivers/of/selftest.c')
-rw-r--r--drivers/of/selftest.c161
1 files changed, 6 insertions, 155 deletions
diff --git a/drivers/of/selftest.c b/drivers/of/selftest.c
index e21012b..0eb5c38 100644
--- a/drivers/of/selftest.c
+++ b/drivers/of/selftest.c
@@ -9,24 +9,18 @@
#include <linux/errno.h>
#include <linux/module.h>
#include <linux/of.h>
-#include <linux/of_irq.h>
#include <linux/list.h>
#include <linux/mutex.h>
#include <linux/slab.h>
#include <linux/device.h>
-static struct selftest_results {
- int passed;
- int failed;
-} selftest_results;
-
+static bool selftest_passed = true;
#define selftest(result, fmt, ...) { \
if (!(result)) { \
- selftest_results.failed++; \
- pr_err("FAIL %s():%i " fmt, __func__, __LINE__, ##__VA_ARGS__); \
+ pr_err("FAIL %s:%i " fmt, __FILE__, __LINE__, ##__VA_ARGS__); \
+ selftest_passed = false; \
} else { \
- selftest_results.passed++; \
- pr_debug("pass %s():%i\n", __func__, __LINE__); \
+ pr_info("pass %s:%i\n", __FILE__, __LINE__); \
} \
}
@@ -137,6 +131,7 @@ static void __init of_selftest_property_match_string(void)
struct device_node *np;
int rc;
+ pr_info("start\n");
np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a");
if (!np) {
pr_err("No testcase data in device tree\n");
@@ -159,147 +154,6 @@ static void __init of_selftest_property_match_string(void)
selftest(rc == -EILSEQ, "unterminated string; rc=%i", rc);
}
-static void __init of_selftest_parse_interrupts(void)
-{
- struct device_node *np;
- struct of_phandle_args args;
- int i, rc;
-
- np = of_find_node_by_path("/testcase-data/interrupts/interrupts0");
- if (!np) {
- pr_err("missing testcase data\n");
- return;
- }
-
- for (i = 0; i < 4; i++) {
- bool passed = true;
- args.args_count = 0;
- rc = of_irq_parse_one(np, i, &args);
-
- passed &= !rc;
- passed &= (args.args_count == 1);
- passed &= (args.args[0] == (i + 1));
-
- selftest(passed, "index %i - data error on node %s rc=%i\n",
- i, args.np->full_name, rc);
- }
- of_node_put(np);
-
- np = of_find_node_by_path("/testcase-data/interrupts/interrupts1");
- if (!np) {
- pr_err("missing testcase data\n");
- return;
- }
-
- for (i = 0; i < 4; i++) {
- bool passed = true;
- args.args_count = 0;
- rc = of_irq_parse_one(np, i, &args);
-
- /* Test the values from tests-phandle.dtsi */
- switch (i) {
- case 0:
- passed &= !rc;
- passed &= (args.args_count == 1);
- passed &= (args.args[0] == 9);
- break;
- case 1:
- passed &= !rc;
- passed &= (args.args_count == 3);
- passed &= (args.args[0] == 10);
- passed &= (args.args[1] == 11);
- passed &= (args.args[2] == 12);
- break;
- case 2:
- passed &= !rc;
- passed &= (args.args_count == 2);
- passed &= (args.args[0] == 13);
- passed &= (args.args[1] == 14);
- break;
- case 3:
- passed &= !rc;
- passed &= (args.args_count == 2);
- passed &= (args.args[0] == 15);
- passed &= (args.args[1] == 16);
- break;
- default:
- passed = false;
- }
- selftest(passed, "index %i - data error on node %s rc=%i\n",
- i, args.np->full_name, rc);
- }
- of_node_put(np);
-}
-
-static void __init of_selftest_parse_interrupts_extended(void)
-{
- struct device_node *np;
- struct of_phandle_args args;
- int i, rc;
-
- np = of_find_node_by_path("/testcase-data/interrupts/interrupts-extended0");
- if (!np) {
- pr_err("missing testcase data\n");
- return;
- }
-
- for (i = 0; i < 7; i++) {
- bool passed = true;
- rc = of_irq_parse_one(np, i, &args);
-
- /* Test the values from tests-phandle.dtsi */
- switch (i) {
- case 0:
- passed &= !rc;
- passed &= (args.args_count == 1);
- passed &= (args.args[0] == 1);
- break;
- case 1:
- passed &= !rc;
- passed &= (args.args_count == 3);
- passed &= (args.args[0] == 2);
- passed &= (args.args[1] == 3);
- passed &= (args.args[2] == 4);
- break;
- case 2:
- passed &= !rc;
- passed &= (args.args_count == 2);
- passed &= (args.args[0] == 5);
- passed &= (args.args[1] == 6);
- break;
- case 3:
- passed &= !rc;
- passed &= (args.args_count == 1);
- passed &= (args.args[0] == 9);
- break;
- case 4:
- passed &= !rc;
- passed &= (args.args_count == 3);
- passed &= (args.args[0] == 10);
- passed &= (args.args[1] == 11);
- passed &= (args.args[2] == 12);
- break;
- case 5:
- passed &= !rc;
- passed &= (args.args_count == 2);
- passed &= (args.args[0] == 13);
- passed &= (args.args[1] == 14);
- break;
- case 6:
- passed &= !rc;
- passed &= (args.args_count == 1);
- passed &= (args.args[0] == 15);
- break;
- default:
- passed = false;
- }
-
- selftest(passed, "index %i - data error on node %s rc=%i\n",
- i, args.np->full_name, rc);
- }
- of_node_put(np);
-}
-
static int __init of_selftest(void)
{
struct device_node *np;
@@ -314,10 +168,7 @@ static int __init of_selftest(void)
pr_info("start of selftest - you will see error messages\n");
of_selftest_parse_phandle_with_args();
of_selftest_property_match_string();
- of_selftest_parse_interrupts();
- of_selftest_parse_interrupts_extended();
- pr_info("end of selftest - %i passed, %i failed\n",
- selftest_results.passed, selftest_results.failed);
+ pr_info("end of selftest - %s\n", selftest_passed ? "PASS" : "FAIL");
return 0;
}
late_initcall(of_selftest);