Lines Matching +full:motor +full:- +full:driver
1 // SPDX-License-Identifier: GPL-2.0
6 #define pr_fmt(fmt) "### dt-test ### " fmt
10 #include <linux/dma-direct.h> /* to test phys_to_dma/dma_to_phys */
29 #include <linux/i2c-mux.h>
30 #include <linux/gpio/driver.h>
54 #define OF_KREF_READ(NODE) kref_read(&(NODE)->kobj.kref)
85 np = of_find_node_by_path("/testcase-data"); in of_unittest_find_node_by_name()
87 unittest(np && name && !strcmp("/testcase-data", name), in of_unittest_find_node_by_name()
88 "find /testcase-data failed\n"); in of_unittest_find_node_by_name()
93 np = of_find_node_by_path("/testcase-data/"); in of_unittest_find_node_by_name()
94 unittest(!np, "trailing '/' on /testcase-data/ should fail\n"); in of_unittest_find_node_by_name()
96 np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); in of_unittest_find_node_by_name()
98 unittest(np && name && !strcmp("/testcase-data/phandle-tests/consumer-a", name), in of_unittest_find_node_by_name()
99 "find /testcase-data/phandle-tests/consumer-a failed\n"); in of_unittest_find_node_by_name()
103 np = of_find_node_by_path("testcase-alias"); in of_unittest_find_node_by_name()
105 unittest(np && name && !strcmp("/testcase-data", name), in of_unittest_find_node_by_name()
106 "find testcase-alias failed\n"); in of_unittest_find_node_by_name()
111 np = of_find_node_by_path("testcase-alias/"); in of_unittest_find_node_by_name()
112 unittest(!np, "trailing '/' on testcase-alias/ should fail\n"); in of_unittest_find_node_by_name()
114 np = of_find_node_by_path("testcase-alias/phandle-tests/consumer-a"); in of_unittest_find_node_by_name()
116 unittest(np && name && !strcmp("/testcase-data/phandle-tests/consumer-a", name), in of_unittest_find_node_by_name()
117 "find testcase-alias/phandle-tests/consumer-a failed\n"); in of_unittest_find_node_by_name()
121 np = of_find_node_by_path("/testcase-data/missing-path"); in of_unittest_find_node_by_name()
122 unittest(!np, "non-existent path returned node %pOF\n", np); in of_unittest_find_node_by_name()
125 np = of_find_node_by_path("missing-alias"); in of_unittest_find_node_by_name()
126 unittest(!np, "non-existent alias returned node %pOF\n", np); in of_unittest_find_node_by_name()
129 np = of_find_node_by_path("testcase-alias/missing-path"); in of_unittest_find_node_by_name()
130 unittest(!np, "non-existent alias with relative path returned node %pOF\n", np); in of_unittest_find_node_by_name()
133 np = of_find_node_opts_by_path("/testcase-data:testoption", &options); in of_unittest_find_node_by_name()
138 np = of_find_node_opts_by_path("/testcase-data:test/option", &options); in of_unittest_find_node_by_name()
143 np = of_find_node_opts_by_path("/testcase-data/testcase-device1:test/option", &options); in of_unittest_find_node_by_name()
148 np = of_find_node_opts_by_path("/testcase-data:testoption", NULL); in of_unittest_find_node_by_name()
152 np = of_find_node_opts_by_path("testcase-alias:testaliasoption", in of_unittest_find_node_by_name()
158 np = of_find_node_opts_by_path("testcase-alias:test/alias/option", in of_unittest_find_node_by_name()
164 np = of_find_node_opts_by_path("testcase-alias:testaliasoption", NULL); in of_unittest_find_node_by_name()
169 np = of_find_node_opts_by_path("testcase-alias", &options); in of_unittest_find_node_by_name()
184 np = of_find_node_by_path("/testcase-data"); in of_unittest_dynamic()
197 /* Add a new property - should pass*/ in of_unittest_dynamic()
198 prop->name = "new-property"; in of_unittest_dynamic()
199 prop->value = "new-property-data"; in of_unittest_dynamic()
200 prop->length = strlen(prop->value) + 1; in of_unittest_dynamic()
203 /* Try to add an existing property - should fail */ in of_unittest_dynamic()
205 prop->name = "new-property"; in of_unittest_dynamic()
206 prop->value = "new-property-data-should-fail"; in of_unittest_dynamic()
207 prop->length = strlen(prop->value) + 1; in of_unittest_dynamic()
211 /* Try to modify an existing property - should pass */ in of_unittest_dynamic()
212 prop->value = "modify-property-data-should-pass"; in of_unittest_dynamic()
213 prop->length = strlen(prop->value) + 1; in of_unittest_dynamic()
217 /* Try to modify non-existent property - should pass*/ in of_unittest_dynamic()
219 prop->name = "modify-property"; in of_unittest_dynamic()
220 prop->value = "modify-missing-property-data-should-pass"; in of_unittest_dynamic()
221 prop->length = strlen(prop->value) + 1; in of_unittest_dynamic()
225 /* Remove property - should pass */ in of_unittest_dynamic()
229 /* Adding very large property - should pass */ in of_unittest_dynamic()
231 prop->name = "large-property-PAGE_SIZEx8"; in of_unittest_dynamic()
232 prop->length = PAGE_SIZE * 8; in of_unittest_dynamic()
233 prop->value = kzalloc(prop->length, GFP_KERNEL); in of_unittest_dynamic()
234 unittest(prop->value != NULL, "Unable to allocate large buffer\n"); in of_unittest_dynamic()
235 if (prop->value) in of_unittest_dynamic()
246 if (child->parent != np) { in of_unittest_check_node_linkage()
249 rc = -EINVAL; in of_unittest_check_node_linkage()
298 size = snprintf(buf, buf_size - 2, fmt, np); in of_unittest_printf_one()
307 for (i = 0; i < 2; i++, size--) { in of_unittest_printf_one()
321 const char *full_name = "/testcase-data/platform-tests/test-device@1/dev@100"; in of_unittest_printf()
330 num_to_str(phandle_str, sizeof(phandle_str), np->phandle, 0); in of_unittest_printf()
337 of_unittest_printf_one(np, "%pOFnc", "dev:test-sub-device"); in of_unittest_printf()
342 of_unittest_printf_one(np, "%-10pOFP", "dev@100 "); in of_unittest_printf()
344 of_unittest_printf_one(np, "%pOFF", "----"); in of_unittest_printf()
345 of_unittest_printf_one(np, "%pOFPF", "dev@100:----"); in of_unittest_printf()
346 of_unittest_printf_one(np, "%pOFPFPc", "dev@100:----:dev@100:test-sub-device"); in of_unittest_printf()
347 of_unittest_printf_one(np, "%pOFc", "test-sub-device"); in of_unittest_printf()
349 "\"test-sub-device\",\"test-compat2\",\"test-compat3\""); in of_unittest_printf()
366 if (!np->phandle) in of_unittest_check_phandles()
369 hash_for_each_possible(phandle_ht, nh, node, np->phandle) { in of_unittest_check_phandles()
370 if (nh->np->phandle == np->phandle) { in of_unittest_check_phandles()
372 np->phandle, nh->np, np); in of_unittest_check_phandles()
382 nh->np = np; in of_unittest_check_phandles()
383 hash_add(phandle_ht, &nh->node, np->phandle); in of_unittest_check_phandles()
391 hash_del(&nh->node); in of_unittest_check_phandles()
402 np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); in of_unittest_parse_phandle_with_args()
408 rc = of_count_phandle_with_args(np, "phandle-list", "#phandle-cells"); in of_unittest_parse_phandle_with_args()
415 rc = of_parse_phandle_with_args(np, "phandle-list", in of_unittest_parse_phandle_with_args()
416 "#phandle-cells", i, &args); in of_unittest_parse_phandle_with_args()
418 /* Test the values from tests-phandle.dtsi */ in of_unittest_parse_phandle_with_args()
432 passed &= (rc == -ENOENT); in of_unittest_parse_phandle_with_args()
457 passed &= (rc == -ENOENT); in of_unittest_parse_phandle_with_args()
463 unittest(passed, "index %i - data error on node %pOF rc=%i\n", in of_unittest_parse_phandle_with_args()
472 rc = of_parse_phandle_with_args(np, "phandle-list-missing", in of_unittest_parse_phandle_with_args()
473 "#phandle-cells", 0, &args); in of_unittest_parse_phandle_with_args()
474 unittest(rc == -ENOENT, "expected:%i got:%i\n", -ENOENT, rc); in of_unittest_parse_phandle_with_args()
475 rc = of_count_phandle_with_args(np, "phandle-list-missing", in of_unittest_parse_phandle_with_args()
476 "#phandle-cells"); in of_unittest_parse_phandle_with_args()
477 unittest(rc == -ENOENT, "expected:%i got:%i\n", -ENOENT, rc); in of_unittest_parse_phandle_with_args()
483 …"OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-d… in of_unittest_parse_phandle_with_args()
485 rc = of_parse_phandle_with_args(np, "phandle-list", in of_unittest_parse_phandle_with_args()
486 "#phandle-cells-missing", 0, &args); in of_unittest_parse_phandle_with_args()
489 …"OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-d… in of_unittest_parse_phandle_with_args()
491 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); in of_unittest_parse_phandle_with_args()
494 …"OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-d… in of_unittest_parse_phandle_with_args()
496 rc = of_count_phandle_with_args(np, "phandle-list", in of_unittest_parse_phandle_with_args()
497 "#phandle-cells-missing"); in of_unittest_parse_phandle_with_args()
500 …"OF: /testcase-data/phandle-tests/consumer-a: could not get #phandle-cells-missing for /testcase-d… in of_unittest_parse_phandle_with_args()
502 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); in of_unittest_parse_phandle_with_args()
508 "OF: /testcase-data/phandle-tests/consumer-a: could not find phandle"); in of_unittest_parse_phandle_with_args()
510 rc = of_parse_phandle_with_args(np, "phandle-list-bad-phandle", in of_unittest_parse_phandle_with_args()
511 "#phandle-cells", 0, &args); in of_unittest_parse_phandle_with_args()
514 "OF: /testcase-data/phandle-tests/consumer-a: could not find phandle"); in of_unittest_parse_phandle_with_args()
516 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); in of_unittest_parse_phandle_with_args()
519 "OF: /testcase-data/phandle-tests/consumer-a: could not find phandle"); in of_unittest_parse_phandle_with_args()
521 rc = of_count_phandle_with_args(np, "phandle-list-bad-phandle", in of_unittest_parse_phandle_with_args()
522 "#phandle-cells"); in of_unittest_parse_phandle_with_args()
525 "OF: /testcase-data/phandle-tests/consumer-a: could not find phandle"); in of_unittest_parse_phandle_with_args()
527 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); in of_unittest_parse_phandle_with_args()
533 "OF: /testcase-data/phandle-tests/consumer-a: #phandle-cells = 3 found 1"); in of_unittest_parse_phandle_with_args()
535 rc = of_parse_phandle_with_args(np, "phandle-list-bad-args", in of_unittest_parse_phandle_with_args()
536 "#phandle-cells", 1, &args); in of_unittest_parse_phandle_with_args()
539 "OF: /testcase-data/phandle-tests/consumer-a: #phandle-cells = 3 found 1"); in of_unittest_parse_phandle_with_args()
541 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); in of_unittest_parse_phandle_with_args()
544 "OF: /testcase-data/phandle-tests/consumer-a: #phandle-cells = 3 found 1"); in of_unittest_parse_phandle_with_args()
546 rc = of_count_phandle_with_args(np, "phandle-list-bad-args", in of_unittest_parse_phandle_with_args()
547 "#phandle-cells"); in of_unittest_parse_phandle_with_args()
550 "OF: /testcase-data/phandle-tests/consumer-a: #phandle-cells = 3 found 1"); in of_unittest_parse_phandle_with_args()
552 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); in of_unittest_parse_phandle_with_args()
562 np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-b"); in of_unittest_parse_phandle_with_args_map()
568 p[0] = of_find_node_by_path("/testcase-data/phandle-tests/provider0"); in of_unittest_parse_phandle_with_args_map()
569 p[1] = of_find_node_by_path("/testcase-data/phandle-tests/provider1"); in of_unittest_parse_phandle_with_args_map()
570 p[2] = of_find_node_by_path("/testcase-data/phandle-tests/provider2"); in of_unittest_parse_phandle_with_args_map()
571 p[3] = of_find_node_by_path("/testcase-data/phandle-tests/provider3"); in of_unittest_parse_phandle_with_args_map()
572 p[4] = of_find_node_by_path("/testcase-data/phandle-tests/provider4"); in of_unittest_parse_phandle_with_args_map()
573 p[5] = of_find_node_by_path("/testcase-data/phandle-tests/provider5"); in of_unittest_parse_phandle_with_args_map()
582 rc = of_count_phandle_with_args(np, "phandle-list", "#phandle-cells"); in of_unittest_parse_phandle_with_args_map()
589 rc = of_parse_phandle_with_args_map(np, "phandle-list", in of_unittest_parse_phandle_with_args_map()
592 /* Test the values from tests-phandle.dtsi */ in of_unittest_parse_phandle_with_args_map()
609 passed &= (rc == -ENOENT); in of_unittest_parse_phandle_with_args_map()
643 passed &= (rc == -ENOENT); in of_unittest_parse_phandle_with_args_map()
649 unittest(passed, "index %i - data error on node %s rc=%i\n", in of_unittest_parse_phandle_with_args_map()
650 i, args.np->full_name, rc); in of_unittest_parse_phandle_with_args_map()
658 rc = of_parse_phandle_with_args_map(np, "phandle-list-missing", in of_unittest_parse_phandle_with_args_map()
660 unittest(rc == -ENOENT, "expected:%i got:%i\n", -ENOENT, rc); in of_unittest_parse_phandle_with_args_map()
666 …"OF: /testcase-data/phandle-tests/consumer-b: could not get #phandle-missing-cells for /testcase-d… in of_unittest_parse_phandle_with_args_map()
668 rc = of_parse_phandle_with_args_map(np, "phandle-list", in of_unittest_parse_phandle_with_args_map()
669 "phandle-missing", 0, &args); in of_unittest_parse_phandle_with_args_map()
671 …"OF: /testcase-data/phandle-tests/consumer-b: could not get #phandle-missing-cells for /testcase-d… in of_unittest_parse_phandle_with_args_map()
673 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); in of_unittest_parse_phandle_with_args_map()
679 "OF: /testcase-data/phandle-tests/consumer-b: could not find phandle 12345678"); in of_unittest_parse_phandle_with_args_map()
681 rc = of_parse_phandle_with_args_map(np, "phandle-list-bad-phandle", in of_unittest_parse_phandle_with_args_map()
684 "OF: /testcase-data/phandle-tests/consumer-b: could not find phandle 12345678"); in of_unittest_parse_phandle_with_args_map()
686 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); in of_unittest_parse_phandle_with_args_map()
692 "OF: /testcase-data/phandle-tests/consumer-b: #phandle-cells = 2 found 1"); in of_unittest_parse_phandle_with_args_map()
694 rc = of_parse_phandle_with_args_map(np, "phandle-list-bad-args", in of_unittest_parse_phandle_with_args_map()
697 "OF: /testcase-data/phandle-tests/consumer-b: #phandle-cells = 2 found 1"); in of_unittest_parse_phandle_with_args_map()
699 unittest(rc == -EINVAL, "expected:%i got:%i\n", -EINVAL, rc); in of_unittest_parse_phandle_with_args_map()
715 np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); in of_unittest_property_string()
721 rc = of_property_match_string(np, "phandle-list-names", "first"); in of_unittest_property_string()
723 rc = of_property_match_string(np, "phandle-list-names", "second"); in of_unittest_property_string()
725 rc = of_property_match_string(np, "phandle-list-names", "third"); in of_unittest_property_string()
727 rc = of_property_match_string(np, "phandle-list-names", "fourth"); in of_unittest_property_string()
728 unittest(rc == -ENODATA, "unmatched string; rc=%i\n", rc); in of_unittest_property_string()
729 rc = of_property_match_string(np, "missing-property", "blah"); in of_unittest_property_string()
730 unittest(rc == -EINVAL, "missing property; rc=%i\n", rc); in of_unittest_property_string()
731 rc = of_property_match_string(np, "empty-property", "blah"); in of_unittest_property_string()
732 unittest(rc == -ENODATA, "empty property; rc=%i\n", rc); in of_unittest_property_string()
733 rc = of_property_match_string(np, "unterminated-string", "blah"); in of_unittest_property_string()
734 unittest(rc == -EILSEQ, "unterminated string; rc=%i\n", rc); in of_unittest_property_string()
737 rc = of_property_count_strings(np, "string-property"); in of_unittest_property_string()
739 rc = of_property_count_strings(np, "phandle-list-names"); in of_unittest_property_string()
741 rc = of_property_count_strings(np, "unterminated-string"); in of_unittest_property_string()
742 unittest(rc == -EILSEQ, "unterminated string; rc=%i\n", rc); in of_unittest_property_string()
743 rc = of_property_count_strings(np, "unterminated-string-list"); in of_unittest_property_string()
744 unittest(rc == -EILSEQ, "unterminated string array; rc=%i\n", rc); in of_unittest_property_string()
747 rc = of_property_read_string_index(np, "string-property", 0, strings); in of_unittest_property_string()
750 rc = of_property_read_string_index(np, "string-property", 1, strings); in of_unittest_property_string()
751 …unittest(rc == -ENODATA && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n",… in of_unittest_property_string()
752 rc = of_property_read_string_index(np, "phandle-list-names", 0, strings); in of_unittest_property_string()
754 rc = of_property_read_string_index(np, "phandle-list-names", 1, strings); in of_unittest_property_string()
756 rc = of_property_read_string_index(np, "phandle-list-names", 2, strings); in of_unittest_property_string()
759 rc = of_property_read_string_index(np, "phandle-list-names", 3, strings); in of_unittest_property_string()
760 …unittest(rc == -ENODATA && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n",… in of_unittest_property_string()
762 rc = of_property_read_string_index(np, "unterminated-string", 0, strings); in of_unittest_property_string()
763 …unittest(rc == -EILSEQ && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", … in of_unittest_property_string()
764 rc = of_property_read_string_index(np, "unterminated-string-list", 0, strings); in of_unittest_property_string()
767 rc = of_property_read_string_index(np, "unterminated-string-list", 2, strings); /* should fail */ in of_unittest_property_string()
768 …unittest(rc == -EILSEQ && strings[0] == NULL, "of_property_read_string_index() failure; rc=%i\n", … in of_unittest_property_string()
772 rc = of_property_read_string_array(np, "string-property", strings, 4); in of_unittest_property_string()
774 rc = of_property_read_string_array(np, "phandle-list-names", strings, 4); in of_unittest_property_string()
776 rc = of_property_read_string_array(np, "unterminated-string", strings, 4); in of_unittest_property_string()
777 unittest(rc == -EILSEQ, "unterminated string; rc=%i\n", rc); in of_unittest_property_string()
778 /* -- An incorrectly formed string should cause a failure */ in of_unittest_property_string()
779 rc = of_property_read_string_array(np, "unterminated-string-list", strings, 4); in of_unittest_property_string()
780 unittest(rc == -EILSEQ, "unterminated string array; rc=%i\n", rc); in of_unittest_property_string()
781 /* -- parsing the correctly formed strings should still work: */ in of_unittest_property_string()
783 rc = of_property_read_string_array(np, "unterminated-string-list", strings, 2); in of_unittest_property_string()
786 rc = of_property_read_string_array(np, "phandle-list-names", strings, 1); in of_unittest_property_string()
790 #define propcmp(p1, p2) (((p1)->length == (p2)->length) && \
791 (p1)->value && (p2)->value && \
792 !memcmp((p1)->value, (p2)->value, (p1)->length) && \
793 !strcmp((p1)->name, (p2)->name))
803 kfree(new->value); in of_unittest_property_copy()
804 kfree(new->name); in of_unittest_property_copy()
808 unittest(new && propcmp(&p2, new), "non-empty property didn't copy correctly\n"); in of_unittest_property_copy()
809 kfree(new->value); in of_unittest_property_copy()
810 kfree(new->name); in of_unittest_property_copy()
819 struct property *ppadd, padd = { .name = "prop-add", .length = 1, .value = "" }; in of_unittest_changeset()
823 struct property *ppupdate, pupdate = { .name = "prop-update", .length = 5, .value = "abcd" }; in of_unittest_changeset()
840 nchangeset = of_find_node_by_path("/testcase-data/changeset"); in of_unittest_changeset()
841 nremove = of_get_child_by_name(nchangeset, "node-remove"); in of_unittest_changeset()
860 n1->parent = parent; in of_unittest_changeset()
861 n2->parent = parent; in of_unittest_changeset()
862 n21->parent = n2; in of_unittest_changeset()
864 ppremove = of_find_property(parent, "prop-remove", NULL); in of_unittest_changeset()
880 unittest(!of_changeset_add_property(&chgset, parent, ppadd), "fail add prop prop-add\n"); in of_unittest_changeset()
885 unittest(!of_changeset_add_prop_string(&chgset, n22, "prop-str", "abcd"), in of_unittest_changeset()
886 "fail add prop prop-str"); in of_unittest_changeset()
887 unittest(!of_changeset_add_prop_string_array(&chgset, n22, "prop-str-array", in of_unittest_changeset()
890 "fail add prop prop-str-array"); in of_unittest_changeset()
891 unittest(!of_changeset_add_prop_u32_array(&chgset, n22, "prop-u32-array", in of_unittest_changeset()
893 "fail add prop prop-u32-array"); in of_unittest_changeset()
900 unittest((np = of_find_node_by_path("/testcase-data/changeset/n2/n21")), in of_unittest_changeset()
903 unittest((np = of_find_node_by_path("/testcase-data/changeset/n2/n22")), in of_unittest_changeset()
909 unittest(!of_find_node_by_path("/testcase-data/changeset/n2/n21"), in of_unittest_changeset()
912 ppremove = of_find_property(parent, "prop-remove", NULL); in of_unittest_changeset()
915 ret = of_property_read_string(parent, "prop-update", &propstr); in of_unittest_changeset()
937 np = of_find_node_by_path("/testcase-data/address-tests"); in of_unittest_dma_get_max_cpu_address()
979 dev_bogus->dma_range_map = map; in of_unittest_dma_ranges_one()
999 of_unittest_dma_ranges_one("/testcase-data/address-tests/device@70000000", in of_unittest_parse_dma_ranges()
1002 of_unittest_dma_ranges_one("/testcase-data/address-tests/bus@80000000/device@1000", in of_unittest_parse_dma_ranges()
1004 of_unittest_dma_ranges_one("/testcase-data/address-tests/pci@90000000", in of_unittest_parse_dma_ranges()
1018 np = of_find_node_by_path("/testcase-data/address-tests/pci@90000000"); in of_unittest_pci_dma_ranges()
1025 pr_err("missing dma-ranges property\n"); in of_unittest_pci_dma_ranges()
1030 * Get the dma-ranges from the device tree in of_unittest_pci_dma_ranges()
1068 np = of_find_node_by_path("/testcase-data/address-tests"); in of_unittest_bus_ranges()
1138 np = of_find_node_by_path("/testcase-data/address-tests/bus@a0000000"); in of_unittest_bus_3cell_ranges()
1192 np = of_find_node_by_path("/testcase-data/address-tests/bus@80000000/device@1000"); in of_unittest_reg()
1216 np = of_find_node_by_path("/testcase-data/interrupts/interrupts0"); in of_unittest_parse_interrupts()
1232 unittest(passed, "index %i - data error on node %pOF rc=%i\n", in of_unittest_parse_interrupts()
1237 np = of_find_node_by_path("/testcase-data/interrupts/interrupts1"); in of_unittest_parse_interrupts()
1249 /* Test the values from tests-phandle.dtsi */ in of_unittest_parse_interrupts()
1278 unittest(passed, "index %i - data error on node %pOF rc=%i\n", in of_unittest_parse_interrupts()
1293 np = of_find_node_by_path("/testcase-data/interrupts/interrupts-extended0"); in of_unittest_parse_interrupts_extended()
1305 /* Test the values from tests-phandle.dtsi */ in of_unittest_parse_interrupts_extended()
1346 * #address-cells. See the comments in in of_unittest_parse_interrupts_extended()
1347 * drivers/of/unittest-data/tests-interrupts.dtsi in of_unittest_parse_interrupts_extended()
1348 * nodes intmap1 and interrupts-extended0 in of_unittest_parse_interrupts_extended()
1358 unittest(passed, "index %i - data error on node %pOF rc=%i\n", in of_unittest_parse_interrupts_extended()
1385 { .path = "/testcase-data/match-node/name0", .data = "A", },
1386 { .path = "/testcase-data/match-node/name1", .data = "B", },
1387 { .path = "/testcase-data/match-node/a/name2", .data = "Ca", },
1388 { .path = "/testcase-data/match-node/b/name2", .data = "Cb", },
1389 { .path = "/testcase-data/match-node/c/name2", .data = "Cc", },
1390 { .path = "/testcase-data/match-node/name3", .data = "E", },
1391 { .path = "/testcase-data/match-node/name4", .data = "G", },
1392 { .path = "/testcase-data/match-node/name5", .data = "H", },
1393 { .path = "/testcase-data/match-node/name6", .data = "G", },
1394 { .path = "/testcase-data/match-node/name7", .data = "I", },
1395 { .path = "/testcase-data/match-node/name8", .data = "J", },
1396 { .path = "/testcase-data/match-node/name9", .data = "K", },
1420 if (strcmp(match->data, match_node_tests[i].data) != 0) { in of_unittest_match_node()
1423 (const char *)match->data); in of_unittest_match_node()
1432 .name = "unittest-bus",
1440 { .compatible = "test-device", }, in of_unittest_platform_populate()
1444 np = of_find_node_by_path("/testcase-data"); in of_unittest_platform_populate()
1447 /* Test that a missing irq domain returns -EPROBE_DEFER */ in of_unittest_platform_populate()
1448 np = of_find_node_by_path("/testcase-data/testcase-device1"); in of_unittest_platform_populate()
1454 unittest(irq == -EPROBE_DEFER, in of_unittest_platform_populate()
1455 "device deferred probe failed - %d\n", irq); in of_unittest_platform_populate()
1457 /* Test that a parsing failure does not return -EPROBE_DEFER */ in of_unittest_platform_populate()
1458 np = of_find_node_by_path("/testcase-data/testcase-device2"); in of_unittest_platform_populate()
1463 "platform testcase-data:testcase-device2: error -ENXIO: IRQ index 0 not found"); in of_unittest_platform_populate()
1468 "platform testcase-data:testcase-device2: error -ENXIO: IRQ index 0 not found"); in of_unittest_platform_populate()
1470 unittest(irq < 0 && irq != -EPROBE_DEFER, in of_unittest_platform_populate()
1471 "device parsing error failed - %d\n", irq); in of_unittest_platform_populate()
1474 np = of_find_node_by_path("/testcase-data/platform-tests"); in of_unittest_platform_populate()
1486 test_bus->dev.of_node = np; in of_unittest_platform_populate()
1490 * registered to catch problems with un-inserted resources. The in of_unittest_platform_populate()
1497 of_platform_populate(np, match, NULL, &test_bus->dev); in of_unittest_platform_populate()
1508 of_platform_depopulate(&test_bus->dev); in of_unittest_platform_populate()
1521 * update_node_properties - adds the properties
1537 child->parent = dup; in update_node_properties()
1546 * compiled with the '-@' option. If you encounter this error, in update_node_properties()
1554 * sets prop->next to NULL in update_node_properties()
1556 for (prop = np->properties; prop != NULL; prop = save_next) { in update_node_properties()
1557 save_next = prop->next; in update_node_properties()
1560 if (ret == -EEXIST && !strcmp(prop->name, "name")) in update_node_properties()
1563 np, prop->name); in update_node_properties()
1569 * attach_node_and_children - attaches nodes
1571 * CAUTION: misleading function name - if node @np already exists in
1601 child = np->child; in attach_node_and_children()
1602 np->child = NULL; in attach_node_and_children()
1606 np->sibling = np->parent->child; in attach_node_and_children()
1607 np->parent->child = np; in attach_node_and_children()
1615 next = child->sibling; in attach_node_and_children()
1622 * unittest_data_add - Reads, copies data from
1636 const int size = __dtbo_testcases_end - __dtbo_testcases_begin; in unittest_data_add()
1642 return -ENODATA; in unittest_data_add()
1648 return -ENOMEM; in unittest_data_add()
1657 return -ENODATA; in unittest_data_add()
1662 return -ENODATA; in unittest_data_add()
1674 return -EINVAL; in unittest_data_add()
1688 "Duplicate name in testcase-data, renamed to \"duplicate-name#1\""); in unittest_data_add()
1690 /* attach the sub-tree to live tree */ in unittest_data_add()
1691 np = unittest_data_node->child; in unittest_data_add()
1693 struct device_node *next = np->sibling; in unittest_data_add()
1695 np->parent = of_root; in unittest_data_add()
1702 "Duplicate name in testcase-data, renamed to \"duplicate-name#1\""); in unittest_data_add()
1714 struct device *dev = &pdev->dev; in unittest_probe()
1715 struct device_node *np = dev->of_node; in unittest_probe()
1719 return -EINVAL; in unittest_probe()
1725 of_platform_populate(np, NULL, NULL, &pdev->dev); in unittest_probe()
1732 struct device *dev = &pdev->dev; in unittest_remove()
1733 struct device_node *np = dev->of_node; in unittest_remove()
1746 .driver = {
1792 pr_debug("%s(): %s %d %d\n", __func__, chip->label, offset, in unittest_gpio_chip_request()
1806 return -ENOMEM; in unittest_gpio_probe()
1810 devptr->chip.fwnode = dev_fwnode(&pdev->dev); in unittest_gpio_probe()
1811 devptr->chip.label = "of-unittest-gpio"; in unittest_gpio_probe()
1812 devptr->chip.base = -1; /* dynamic allocation */ in unittest_gpio_probe()
1813 devptr->chip.ngpio = 5; in unittest_gpio_probe()
1814 devptr->chip.request = unittest_gpio_chip_request; in unittest_gpio_probe()
1816 ret = gpiochip_add_data(&devptr->chip, NULL); in unittest_gpio_probe()
1819 "gpiochip_add_data() for node @%pfw failed, ret = %d\n", devptr->chip.fwnode, ret); in unittest_gpio_probe()
1829 struct device *dev = &pdev->dev; in unittest_gpio_remove()
1831 dev_dbg(dev, "%s for node @%pfw\n", __func__, devptr->chip.fwnode); in unittest_gpio_remove()
1833 if (devptr->chip.base != -1) in unittest_gpio_remove()
1834 gpiochip_remove(&devptr->chip); in unittest_gpio_remove()
1840 { .compatible = "unittest-gpio", },
1847 .driver = {
1848 .name = "unittest-gpio",
1860 * tests: apply overlays before registering driver in of_unittest_overlay_gpio()
1861 * Similar to installing a driver as a module, the in of_unittest_overlay_gpio()
1862 * driver is registered after applying the overlays. in of_unittest_overlay_gpio()
1869 * - apply overlay_gpio_01 in of_unittest_overlay_gpio()
1870 * - apply overlay_gpio_02a in of_unittest_overlay_gpio()
1871 * - apply overlay_gpio_02b in of_unittest_overlay_gpio()
1872 * - register driver in of_unittest_overlay_gpio()
1874 * register driver will result in in of_unittest_overlay_gpio()
1875 * - probe and processing gpio hog for overlay_gpio_01 in of_unittest_overlay_gpio()
1876 * - probe for overlay_gpio_02a in of_unittest_overlay_gpio()
1877 * - processing gpio for overlay_gpio_02b in of_unittest_overlay_gpio()
1899 if (unittest(ret == 0, "could not register unittest gpio driver\n")) in of_unittest_overlay_gpio()
1907 unittest_gpio_chip_request_count - chip_request_count); in of_unittest_overlay_gpio()
1910 * tests: apply overlays after registering driver in of_unittest_overlay_gpio()
1912 * Similar to a driver built-in to the kernel, the in of_unittest_overlay_gpio()
1913 * driver is registered before applying the overlays. in of_unittest_overlay_gpio()
1917 * - apply overlay_gpio_03 in of_unittest_overlay_gpio()
1920 * - probe and processing gpio hog. in of_unittest_overlay_gpio()
1936 unittest_gpio_chip_request_count - chip_request_count); in of_unittest_overlay_gpio()
1941 * - apply overlay_gpio_04a in of_unittest_overlay_gpio()
1944 * - probe for overlay_gpio_04a in of_unittest_overlay_gpio()
1961 * - apply overlay_gpio_04b in of_unittest_overlay_gpio()
1964 * - processing gpio for overlay_gpio_04b in of_unittest_overlay_gpio()
1974 unittest_gpio_chip_request_count - chip_request_count); in of_unittest_overlay_gpio()
2011 put_device(&client->dev); in of_path_i2c_client_exists()
2045 base = "/testcase-data/overlay-node/test-bus"; in unittest_path()
2048 base = "/testcase-data/overlay-node/test-bus/i2c-test-bus"; in unittest_path()
2054 snprintf(buf, sizeof(buf) - 1, "%s/test-unittest%d", base, nr); in unittest_path()
2055 buf[sizeof(buf) - 1] = '\0'; in unittest_path()
2078 snprintf(buf, sizeof(buf) - 1, in overlay_name_from_nr()
2080 buf[sizeof(buf) - 1] = '\0'; in overlay_name_from_nr()
2085 static const char *bus_path = "/testcase-data/overlay-node/test-bus";
2108 track_ovcs_id_cnt--; in of_unittest_untrack_overlay()
2121 ovcs_id = track_ovcs_id[track_ovcs_id_cnt - 1]; in of_unittest_remove_tracked_overlays()
2122 overlay_nr = track_ovcs_id_overlay_nr[track_ovcs_id_cnt - 1]; in of_unittest_remove_tracked_overlays()
2125 if (ret == -ENODEV) { in of_unittest_remove_tracked_overlays()
2148 return -EFAULT; in of_unittest_apply_overlay()
2167 return -EINVAL; in __of_unittest_apply_overlay_check()
2184 return -EINVAL; in __of_unittest_apply_overlay_check()
2232 return -EINVAL; in of_unittest_apply_revert_overlay_check()
2244 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_0()
2250 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_0()
2264 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_1()
2270 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_1()
2285 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_2()
2291 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_2()
2304 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_3()
2310 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_3()
2334 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_5()
2340 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_5()
2374 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_6()
2388 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_6()
2391 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_6()
2405 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_6()
2421 for (i = 1; i >= 0; i--) { in of_unittest_overlay_6()
2461 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_8()
2470 …mory leak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_8()
2481 …will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest8/prope… in of_unittest_overlay_8()
2487 …will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/test-unittest8/prope… in of_unittest_overlay_8()
2501 …rlay: node_overlaps_later_cs: #6 overlaps with #7 @/testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_8()
2512 …rlay: node_overlaps_later_cs: #6 overlaps with #7 @/testcase-data/overlay-node/test-bus/test-unitt… in of_unittest_overlay_8()
2527 for (i = 1; i >= 0; i--) { in of_unittest_overlay_8()
2555 child_path = kasprintf(GFP_KERNEL, "%s/test-unittest101", in of_unittest_overlay_10()
2607 struct device *dev = &pdev->dev; in unittest_i2c_bus_probe()
2608 struct device_node *np = dev->of_node; in unittest_i2c_bus_probe()
2615 return -EINVAL; in unittest_i2c_bus_probe()
2623 return -ENOMEM; in unittest_i2c_bus_probe()
2626 std->pdev = pdev; in unittest_i2c_bus_probe()
2629 adap = &std->adap; in unittest_i2c_bus_probe()
2631 adap->nr = -1; in unittest_i2c_bus_probe()
2632 strscpy(adap->name, pdev->name, sizeof(adap->name)); in unittest_i2c_bus_probe()
2633 adap->class = I2C_CLASS_DEPRECATED; in unittest_i2c_bus_probe()
2634 adap->algo = &unittest_i2c_algo; in unittest_i2c_bus_probe()
2635 adap->dev.parent = dev; in unittest_i2c_bus_probe()
2636 adap->dev.of_node = dev->of_node; in unittest_i2c_bus_probe()
2637 adap->timeout = 5 * HZ; in unittest_i2c_bus_probe()
2638 adap->retries = 3; in unittest_i2c_bus_probe()
2651 struct device *dev = &pdev->dev; in unittest_i2c_bus_remove()
2652 struct device_node *np = dev->of_node; in unittest_i2c_bus_remove()
2656 i2c_del_adapter(&std->adap); in unittest_i2c_bus_remove()
2660 { .compatible = "unittest-i2c-bus", },
2667 .driver = {
2668 .name = "unittest-i2c-bus",
2675 struct device *dev = &client->dev; in unittest_i2c_dev_probe()
2676 struct device_node *np = client->dev.of_node; in unittest_i2c_dev_probe()
2680 return -EINVAL; in unittest_i2c_dev_probe()
2690 struct device *dev = &client->dev; in unittest_i2c_dev_remove()
2691 struct device_node *np = client->dev.of_node; in unittest_i2c_dev_remove()
2697 { .name = "unittest-i2c-dev" },
2702 .driver = {
2703 .name = "unittest-i2c-dev",
2720 struct device *dev = &client->dev; in unittest_i2c_mux_probe()
2721 struct i2c_adapter *adap = client->adapter; in unittest_i2c_mux_probe()
2722 struct device_node *np = client->dev.of_node, *child; in unittest_i2c_mux_probe()
2730 return -EINVAL; in unittest_i2c_mux_probe()
2733 max_reg = (u32)-1; in unittest_i2c_mux_probe()
2737 if (max_reg == (u32)-1 || reg > max_reg) in unittest_i2c_mux_probe()
2740 nchans = max_reg == (u32)-1 ? 0 : max_reg + 1; in unittest_i2c_mux_probe()
2743 return -EINVAL; in unittest_i2c_mux_probe()
2749 return -ENOMEM; in unittest_i2c_mux_probe()
2754 return -ENODEV; in unittest_i2c_mux_probe()
2765 struct device *dev = &client->dev; in unittest_i2c_mux_remove()
2766 struct device_node *np = client->dev.of_node; in unittest_i2c_mux_remove()
2774 { .name = "unittest-i2c-mux" },
2779 .driver = {
2780 .name = "unittest-i2c-mux",
2795 "could not register unittest i2c device driver\n")) in of_unittest_overlay_i2c_init()
2801 "could not register unittest i2c bus driver\n")) in of_unittest_overlay_i2c_init()
2807 "i2c i2c-1: Added multiplexed i2c bus 2"); in of_unittest_overlay_i2c_init()
2812 "i2c i2c-1: Added multiplexed i2c bus 2"); in of_unittest_overlay_i2c_init()
2815 "could not register unittest i2c mux driver\n")) in of_unittest_overlay_i2c_init()
2837 …ak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/i2c-test-bus/test… in of_unittest_overlay_i2c_12()
2842 …ak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/i2c-test-bus/test… in of_unittest_overlay_i2c_12()
2856 …ak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/i2c-test-bus/test… in of_unittest_overlay_i2c_13()
2862 …ak will occur if overlay removed, property: /testcase-data/overlay-node/test-bus/i2c-test-bus/test… in of_unittest_overlay_i2c_13()
2881 "i2c i2c-1: Added multiplexed i2c bus 3"); in of_unittest_overlay_i2c_15()
2886 "i2c i2c-1: Added multiplexed i2c bus 3"); in of_unittest_overlay_i2c_15()
2912 * ret = -EBUSY which is -16. in of_notify()
2921 of_node_get(nd->overlay); in of_notify()
2926 found = of_find_node_by_name(nd->overlay, "test-unittest16"); in of_notify()
2929 ret = -EBUSY; in of_notify()
2934 found = of_find_node_by_name(nd->overlay, "test-unittest17"); in of_notify()
2937 ret = -EEXIST; in of_notify()
2942 found = of_find_node_by_name(nd->overlay, "test-unittest18"); in of_notify()
2945 ret = -EXDEV; in of_notify()
2950 found = of_find_node_by_name(nd->overlay, "test-unittest19"); in of_notify()
2953 ret = -ENODEV; in of_notify()
2958 of_node_put(nd->overlay); in of_notify()
2959 ret = -EINVAL; in of_notify()
2990 * Applying overlays 16 - 19 will each trigger an error for a in of_unittest_overlay_notify()
2996 /* --- overlay 16 --- */ in of_unittest_overlay_notify()
2998 …_INFO, "OF: overlay: overlay changeset pre-apply notifier error -16, target: /testcase-data/overla… in of_unittest_overlay_notify()
3003 …_INFO, "OF: overlay: overlay changeset pre-apply notifier error -16, target: /testcase-data/overla… in of_unittest_overlay_notify()
3007 /* --- overlay 17 --- */ in of_unittest_overlay_notify()
3009 …INFO, "OF: overlay: overlay changeset post-apply notifier error -17, target: /testcase-data/overla… in of_unittest_overlay_notify()
3014 …INFO, "OF: overlay: overlay changeset post-apply notifier error -17, target: /testcase-data/overla… in of_unittest_overlay_notify()
3018 /* --- overlay 18 --- */ in of_unittest_overlay_notify()
3026 …_INFO, "OF: overlay: overlay changeset pre-remove notifier error -18, target: /testcase-data/overl… in of_unittest_overlay_notify()
3029 …_INFO, "OF: overlay: overlay changeset pre-remove notifier error -18, target: /testcase-data/overl… in of_unittest_overlay_notify()
3030 if (ret == -EXDEV) { in of_unittest_overlay_notify()
3044 /* --- overlay 19 --- */ in of_unittest_overlay_notify()
3052 …INFO, "OF: overlay: overlay changeset post-remove notifier error -19, target: /testcase-data/overl… in of_unittest_overlay_notify()
3054 …INFO, "OF: overlay: overlay changeset post-remove notifier error -19, target: /testcase-data/overl… in of_unittest_overlay_notify()
3055 if (ret == -ENODEV) in of_unittest_overlay_notify()
3066 /* --- overlay 20 --- */ in of_unittest_overlay_notify()
3090 unittest(0, "could not register unittest driver\n"); in of_unittest_overlay()
3167 const char *refcount_path = "/testcase-data/refcount-node"; in of_unittest_lifecycle()
3168 const char *refcount_parent_path = "/testcase-data"; in of_unittest_lifecycle()
3171 * Node lifecycle tests, non-dynamic node: in of_unittest_lifecycle()
3173 * - Decrementing refcount to zero via of_node_put() should cause the in of_unittest_lifecycle()
3177 * - Decrementing refcount past zero should result in additional in of_unittest_lifecycle()
3193 refcount = kref_read(&np->kobj.kref); in of_unittest_lifecycle()
3200 …N_INFO, "OF: ERROR: of_node_release() detected bad of_node_put() on /testcase-data/refcount-node"); in of_unittest_lifecycle()
3207 unittest(1, "/testcase-data/refcount-node is one"); in of_unittest_lifecycle()
3210 …N_INFO, "OF: ERROR: of_node_release() detected bad of_node_put() on /testcase-data/refcount-node"); in of_unittest_lifecycle()
3221 EXPECT_BEGIN(KERN_INFO, "------------[ cut here ]------------"); in of_unittest_lifecycle()
3223 EXPECT_BEGIN(KERN_INFO, "refcount_t: underflow; use-after-free."); in of_unittest_lifecycle()
3224 EXPECT_BEGIN(KERN_INFO, "---[ end trace <<int>> ]---"); in of_unittest_lifecycle()
3227 unittest(1, "/testcase-data/refcount-node is zero"); in of_unittest_lifecycle()
3230 EXPECT_END(KERN_INFO, "---[ end trace <<int>> ]---"); in of_unittest_lifecycle()
3231 EXPECT_END(KERN_INFO, "refcount_t: underflow; use-after-free."); in of_unittest_lifecycle()
3233 EXPECT_END(KERN_INFO, "------------[ cut here ]------------"); in of_unittest_lifecycle()
3239 EXPECT_NOT_BEGIN(KERN_INFO, "------------[ cut here ]------------"); in of_unittest_lifecycle()
3241 EXPECT_NOT_BEGIN(KERN_INFO, "refcount_t: underflow; use-after-free."); in of_unittest_lifecycle()
3242 EXPECT_NOT_BEGIN(KERN_INFO, "---[ end trace <<int>> ]---"); in of_unittest_lifecycle()
3244 unittest(1, "/testcase-data/refcount-node is zero, second time"); in of_unittest_lifecycle()
3247 EXPECT_NOT_END(KERN_INFO, "---[ end trace <<int>> ]---"); in of_unittest_lifecycle()
3248 EXPECT_NOT_END(KERN_INFO, "refcount_t: underflow; use-after-free."); in of_unittest_lifecycle()
3250 EXPECT_NOT_END(KERN_INFO, "------------[ cut here ]------------"); in of_unittest_lifecycle()
3254 * attempt to of_node_get() node "refcount-node". One example of in of_unittest_lifecycle()
3259 * Prevent the stack trace by removing node "refcount-node" from in of_unittest_lifecycle()
3264 * Directly manipulate the child list of node /testcase-data to in of_unittest_lifecycle()
3265 * remove child refcount-node. This is ignoring all proper methods in of_unittest_lifecycle()
3275 prev_sibling = np->child; in of_unittest_lifecycle()
3276 next_sibling = prev_sibling->sibling; in of_unittest_lifecycle()
3277 if (!strcmp(prev_sibling->full_name, "refcount-node")) { in of_unittest_lifecycle()
3278 np->child = next_sibling; in of_unittest_lifecycle()
3279 next_sibling = next_sibling->sibling; in of_unittest_lifecycle()
3282 if (!strcmp(next_sibling->full_name, "refcount-node")) in of_unittest_lifecycle()
3283 prev_sibling->sibling = next_sibling->sibling; in of_unittest_lifecycle()
3285 next_sibling = next_sibling->sibling; in of_unittest_lifecycle()
3361 OVERLAY_INFO(overlay_base, -9999, 0),
3378 OVERLAY_INFO(overlay_16, -EBUSY, 0),
3379 OVERLAY_INFO(overlay_17, -EEXIST, 0),
3390 OVERLAY_INFO(overlay_bad_add_dup_node, -EINVAL, -ENODEV),
3391 OVERLAY_INFO(overlay_bad_add_dup_prop, -EINVAL, -ENODEV),
3392 OVERLAY_INFO(overlay_bad_phandle, -EINVAL, 0),
3393 OVERLAY_INFO(overlay_bad_symbol, -EINVAL, -ENODEV),
3394 OVERLAY_INFO(overlay_bad_unresolved, -EINVAL, 0),
3435 for (info = overlays; info && info->name; info++) { in unittest_unflatten_overlay_base()
3436 if (!strcmp(overlay_name, info->name)) { in unittest_unflatten_overlay_base()
3448 if (info->expected_result != -9999) { in unittest_unflatten_overlay_base()
3453 data_size = info->dtbo_end - info->dtbo_begin; in unittest_unflatten_overlay_base()
3459 size = fdt_totalsize(info->dtbo_begin); in unittest_unflatten_overlay_base()
3471 memcpy(new_fdt, info->dtbo_begin, size); in unittest_unflatten_overlay_base()
3483 * /proc/device-tree/ contains the updated structure and values from
3496 for (info = overlays; info && info->name; info++) { in overlay_data_apply()
3497 if (!strcmp(overlay_name, info->name)) { in overlay_data_apply()
3507 size = info->dtbo_end - info->dtbo_begin; in overlay_data_apply()
3511 ret = of_overlay_fdt_apply(info->dtbo_begin, size, &info->ovcs_id, in overlay_data_apply()
3514 *ovcs_id = info->ovcs_id; in overlay_data_apply()
3521 if (ret != info->expected_result) { in overlay_data_apply()
3523 info->expected_result, ret, overlay_name); in overlay_data_apply()
3529 ret2 = of_overlay_remove(&info->ovcs_id); in overlay_data_apply()
3530 if (ret2 != info->expected_result_remove) { in overlay_data_apply()
3532 info->expected_result_remove, ret2, in overlay_data_apply()
3582 pprev = &overlay_base_root->child; in of_unittest_overlay_high_level()
3583 for (np = overlay_base_root->child; np; np = np->sibling) { in of_unittest_overlay_high_level()
3585 *pprev = np->sibling; in of_unittest_overlay_high_level()
3588 pprev = &np->sibling; in of_unittest_overlay_high_level()
3595 pprev = &overlay_base_root->child; in of_unittest_overlay_high_level()
3596 for (np = overlay_base_root->child; np; np = np->sibling) { in of_unittest_overlay_high_level()
3599 *pprev = np->sibling; in of_unittest_overlay_high_level()
3602 pprev = &np->sibling; in of_unittest_overlay_high_level()
3609 if (!strcmp(np->full_name, base_child->full_name)) { in of_unittest_overlay_high_level()
3627 for (np = overlay_base_root->child; np; np = np->sibling) in of_unittest_overlay_high_level()
3628 np->parent = of_root; in of_unittest_overlay_high_level()
3632 for (last_sibling = np = of_root->child; np; np = np->sibling) in of_unittest_overlay_high_level()
3636 last_sibling->sibling = overlay_base_root->child; in of_unittest_overlay_high_level()
3638 of_root->child = overlay_base_root->child; in of_unittest_overlay_high_level()
3650 prop->name); in of_unittest_overlay_high_level()
3654 kfree(new_prop->name); in of_unittest_overlay_high_level()
3655 kfree(new_prop->value); in of_unittest_overlay_high_level()
3657 /* "name" auto-generated by unflatten */ in of_unittest_overlay_high_level()
3658 if (!strcmp(prop->name, "name")) in of_unittest_overlay_high_level()
3661 prop->name); in of_unittest_overlay_high_level()
3666 prop->name); in of_unittest_overlay_high_level()
3677 /* --- overlay --- */ in of_unittest_overlay_high_level()
3680 …"OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/subst… in of_unittest_overlay_high_level()
3682 … WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/fairway-1/status"); in of_unittest_overlay_high_level()
3684 …eak will occur if overlay removed, property: /testcase-data-2/fairway-1/ride@100/track@30/incline-… in of_unittest_overlay_high_level()
3686 …eak will occur if overlay removed, property: /testcase-data-2/fairway-1/ride@100/track@40/incline-… in of_unittest_overlay_high_level()
3688 …"OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/light… in of_unittest_overlay_high_level()
3690 …"OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/light… in of_unittest_overlay_high_level()
3692 …"OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/light… in of_unittest_overlay_high_level()
3713 …"OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/light… in of_unittest_overlay_high_level()
3715 …"OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/light… in of_unittest_overlay_high_level()
3717 …"OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/light… in of_unittest_overlay_high_level()
3719 …eak will occur if overlay removed, property: /testcase-data-2/fairway-1/ride@100/track@40/incline-… in of_unittest_overlay_high_level()
3721 …eak will occur if overlay removed, property: /testcase-data-2/fairway-1/ride@100/track@30/incline-… in of_unittest_overlay_high_level()
3723 … WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/fairway-1/status"); in of_unittest_overlay_high_level()
3725 …"OF: overlay: WARNING: memory leak will occur if overlay removed, property: /testcase-data-2/subst… in of_unittest_overlay_high_level()
3729 /* --- overlay_bad_add_dup_node --- */ in of_unittest_overlay_high_level()
3732 …ay: ERROR: multiple fragments add and/or delete node /testcase-data-2/substation@100/motor-1/contr… in of_unittest_overlay_high_level()
3734 …ltiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/contr… in of_unittest_overlay_high_level()
3736 …"OF: changeset: apply failed: REMOVE_PROPERTY /testcase-data-2/substation@100/motor-1/controller:n… in of_unittest_overlay_high_level()
3738 "OF: Error reverting changeset (-19)"); in of_unittest_overlay_high_level()
3744 "OF: Error reverting changeset (-19)"); in of_unittest_overlay_high_level()
3746 …"OF: changeset: apply failed: REMOVE_PROPERTY /testcase-data-2/substation@100/motor-1/controller:n… in of_unittest_overlay_high_level()
3748 …ltiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/contr… in of_unittest_overlay_high_level()
3750 …ay: ERROR: multiple fragments add and/or delete node /testcase-data-2/substation@100/motor-1/contr… in of_unittest_overlay_high_level()
3752 /* --- overlay_bad_add_dup_prop --- */ in of_unittest_overlay_high_level()
3755 …ay: ERROR: multiple fragments add and/or delete node /testcase-data-2/substation@100/motor-1/elect… in of_unittest_overlay_high_level()
3757 …ltiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/elect… in of_unittest_overlay_high_level()
3759 …ltiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/elect… in of_unittest_overlay_high_level()
3761 …"OF: changeset: apply failed: REMOVE_PROPERTY /testcase-data-2/substation@100/motor-1/electric:nam… in of_unittest_overlay_high_level()
3763 "OF: Error reverting changeset (-19)"); in of_unittest_overlay_high_level()
3769 "OF: Error reverting changeset (-19)"); in of_unittest_overlay_high_level()
3771 …"OF: changeset: apply failed: REMOVE_PROPERTY /testcase-data-2/substation@100/motor-1/electric:nam… in of_unittest_overlay_high_level()
3773 …ltiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/elect… in of_unittest_overlay_high_level()
3775 …ltiple fragments add, update, and/or delete property /testcase-data-2/substation@100/motor-1/elect… in of_unittest_overlay_high_level()
3777 …ay: ERROR: multiple fragments add and/or delete node /testcase-data-2/substation@100/motor-1/elect… in of_unittest_overlay_high_level()
3779 /* --- overlay_bad_phandle --- */ in of_unittest_overlay_high_level()
3784 /* --- overlay_bad_symbol --- */ in of_unittest_overlay_high_level()
3787 …"OF: changeset: apply failed: REMOVE_PROPERTY /testcase-data-2/substation@100/hvac-medium-2:name"); in of_unittest_overlay_high_level()
3789 "OF: Error reverting changeset (-19)"); in of_unittest_overlay_high_level()
3795 "OF: Error reverting changeset (-19)"); in of_unittest_overlay_high_level()
3797 …"OF: changeset: apply failed: REMOVE_PROPERTY /testcase-data-2/substation@100/hvac-medium-2:name"); in of_unittest_overlay_high_level()
3799 /* --- overlay_bad_unresolved --- */ in of_unittest_overlay_high_level()
3804 "OF: resolver: overlay phandle fixup failed: -22"); in of_unittest_overlay_high_level()
3810 "OF: resolver: overlay phandle fixup failed: -22"); in of_unittest_overlay_high_level()
3824 * PCI device tree node test driver
3838 dn = pdev->dev.of_node; in testdrv_probe()
3840 dev_err(&pdev->dev, "does not find bus endpoint"); in testdrv_probe()
3841 return -EINVAL; in testdrv_probe()
3844 for (info = overlays; info && info->name; info++) { in testdrv_probe()
3845 if (!strcmp(info->name, "overlay_pci_node")) in testdrv_probe()
3848 if (!info || !info->name) { in testdrv_probe()
3849 dev_err(&pdev->dev, "no overlay data for overlay_pci_node"); in testdrv_probe()
3850 return -ENODEV; in testdrv_probe()
3853 size = info->dtbo_end - info->dtbo_begin; in testdrv_probe()
3854 ret = of_overlay_fdt_apply(info->dtbo_begin, size, &ovcs_id, dn); in testdrv_probe()
3859 of_platform_default_populate(dn, NULL, &pdev->dev); in testdrv_probe()
3869 of_platform_depopulate(&pdev->dev); in testdrv_remove()
3888 return -ENODEV; in unittest_pci_probe()
3890 dev = &pdev->dev; in unittest_pci_probe()
3892 dev = dev->parent; in unittest_pci_probe()
3895 return -ENODEV; in unittest_pci_probe()
3899 unittest(res->start == exp_addr, "Incorrect translated address %llx, expected %llx\n", in unittest_pci_probe()
3900 (u64)res->start, exp_addr); in unittest_pci_probe()
3908 { .compatible = "unittest-pci" },
3914 .driver = {
3915 .name = "unittest-pci",
3928 pnp = pdev->dev.of_node; in of_unittest_pci_node_verify()
3931 return -ENODEV; in of_unittest_pci_node_verify()
3934 path = kasprintf(GFP_KERNEL, "%pOF/pci-ep-bus@0/unittest-pci@100", pnp); in of_unittest_pci_node_verify()
3936 unittest(np, "Failed to get unittest-pci node under PCI node\n"); in of_unittest_pci_node_verify()
3938 rc = -ENODEV; in of_unittest_pci_node_verify()
3945 rc = -ENODEV; in of_unittest_pci_node_verify()
3947 path = kasprintf(GFP_KERNEL, "%pOF/pci-ep-bus@0", pnp); in of_unittest_pci_node_verify()
3950 child_dev = device_find_any_child(&pdev->dev); in of_unittest_pci_node_verify()
3971 unittest(!rc, "Failed to register pci test driver; rc = %d\n", rc); in of_unittest_pci_node()
3976 if (unittest(!rc, "Failed to register unittest pci driver\n")) { in of_unittest_pci_node()
3989 "No test PCI device been found. Please run QEMU with '-device pci-testdev'\n"); in of_unittest_pci_node()
4014 pr_info("start of unittest - you will see error messages\n"); in of_unittest()
4026 np = of_find_node_by_path("/testcase-data/phandle-tests/consumer-a"); in of_unittest()
4062 pr_info("end of unittest - %i passed, %i failed\n", in of_unittest()