xref: /netbsd/external/gpl2/dtc/dist/tests/setprop.c (revision 448a3816)
1 /*	$NetBSD: setprop.c,v 1.1.1.3 2019/12/22 12:34:06 skrll Exp $	*/
2 
3 // SPDX-License-Identifier: LGPL-2.1-or-later
4 /*
5  * libfdt - Flat Device Tree manipulation
6  *	Testcase for fdt_setprop()
7  * Copyright (C) 2006 David Gibson, IBM Corporation.
8  */
9 
10 #include <stdlib.h>
11 #include <stdio.h>
12 #include <string.h>
13 #include <ctype.h>
14 #include <stdint.h>
15 
16 #include <libfdt.h>
17 
18 #include "tests.h"
19 #include "testdata.h"
20 
21 #define SPACE		65536
22 #define NEW_STRING	"here is quite a long test string, blah blah blah"
23 
main(int argc,char * argv[])24 int main(int argc, char *argv[])
25 {
26 	void *fdt;
27 	void *buf;
28 	const uint32_t *intp;
29 	const char *strp;
30 	int err;
31 
32 	test_init(argc, argv);
33 	fdt = load_blob_arg(argc, argv);
34 
35 	buf = xmalloc(SPACE);
36 
37 	err = fdt_open_into(fdt, buf, SPACE);
38 	if (err)
39 		FAIL("fdt_open_into(): %s", fdt_strerror(err));
40 
41 	fdt = buf;
42 
43 	intp = check_getprop_cell(fdt, 0, "prop-int", TEST_VALUE_1);
44 
45 	verbose_printf("Old int value was 0x%08x\n", *intp);
46 	err = fdt_setprop_string(fdt, 0, "prop-int", NEW_STRING);
47 	if (err)
48 		FAIL("Failed to set \"prop-int\" to \"%s\": %s",
49 		     NEW_STRING, fdt_strerror(err));
50 
51 	strp = check_getprop_string(fdt, 0, "prop-int", NEW_STRING);
52 	verbose_printf("New value is \"%s\"\n", strp);
53 
54 	strp = check_getprop(fdt, 0, "prop-str", strlen(TEST_STRING_1)+1,
55 			     TEST_STRING_1);
56 
57 	verbose_printf("Old string value was \"%s\"\n", strp);
58 	err = fdt_setprop_empty(fdt, 0, "prop-str");
59 	if (err)
60 		FAIL("Failed to empty \"prop-str\": %s",
61 		     fdt_strerror(err));
62 
63 	check_getprop(fdt, 0, "prop-str", 0, NULL);
64 
65 	err = fdt_setprop_u32(fdt, 0, "prop-u32", TEST_VALUE_2);
66 	if (err)
67 		FAIL("Failed to set \"prop-u32\" to 0x%08x: %s",
68 		     TEST_VALUE_2, fdt_strerror(err));
69 	check_getprop_cell(fdt, 0, "prop-u32", TEST_VALUE_2);
70 
71 	err = fdt_setprop_cell(fdt, 0, "prop-cell", TEST_VALUE_2);
72 	if (err)
73 		FAIL("Failed to set \"prop-cell\" to 0x%08x: %s",
74 		     TEST_VALUE_2, fdt_strerror(err));
75 	check_getprop_cell(fdt, 0, "prop-cell", TEST_VALUE_2);
76 
77 	err = fdt_setprop_u64(fdt, 0, "prop-u64", TEST_VALUE64_1);
78 	if (err)
79 		FAIL("Failed to set \"prop-u64\" to 0x%016llx: %s",
80 		     TEST_VALUE64_1, fdt_strerror(err));
81 	check_getprop_64(fdt, 0, "prop-u64", TEST_VALUE64_1);
82 
83 	PASS();
84 }
85