1/* $NetBSD: nop_node.c,v 1.1.1.3 2019/12/22 12:34:07 skrll Exp $ */ 2 3// SPDX-License-Identifier: LGPL-2.1-or-later 4/* 5 * libfdt - Flat Device Tree manipulation 6 * Testcase for fdt_nop_node() 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 21int main(int argc, char *argv[]) 22{ 23 void *fdt; 24 int subnode1_offset, subnode2_offset, subsubnode2_offset; 25 int err; 26 27 test_init(argc, argv); 28 fdt = load_blob_arg(argc, argv); 29 30 subnode1_offset = fdt_path_offset(fdt, "/subnode@1"); 31 if (subnode1_offset < 0) 32 FAIL("Couldn't find \"/subnode1\": %s", 33 fdt_strerror(subnode1_offset)); 34 check_getprop_cell(fdt, subnode1_offset, "prop-int", TEST_VALUE_1); 35 36 subnode2_offset = fdt_path_offset(fdt, "/subnode@2"); 37 if (subnode2_offset < 0) 38 FAIL("Couldn't find \"/subnode2\": %s", 39 fdt_strerror(subnode2_offset)); 40 check_getprop_cell(fdt, subnode2_offset, "prop-int", TEST_VALUE_2); 41 42 subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode"); 43 if (subsubnode2_offset < 0) 44 FAIL("Couldn't find \"/subnode@2/subsubnode\": %s", 45 fdt_strerror(subsubnode2_offset)); 46 check_getprop_cell(fdt, subsubnode2_offset, "prop-int", TEST_VALUE_2); 47 48 err = fdt_nop_node(fdt, subnode1_offset); 49 if (err) 50 FAIL("fdt_nop_node(subnode1): %s", fdt_strerror(err)); 51 52 subnode1_offset = fdt_path_offset(fdt, "/subnode@1"); 53 if (subnode1_offset != -FDT_ERR_NOTFOUND) 54 FAIL("fdt_path_offset(subnode1) returned \"%s\" instead of \"%s\"", 55 fdt_strerror(subnode1_offset), 56 fdt_strerror(-FDT_ERR_NOTFOUND)); 57 58 subnode2_offset = fdt_path_offset(fdt, "/subnode@2"); 59 if (subnode2_offset < 0) 60 FAIL("Couldn't find \"/subnode2\": %s", 61 fdt_strerror(subnode2_offset)); 62 check_getprop_cell(fdt, subnode2_offset, "prop-int", TEST_VALUE_2); 63 64 subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode"); 65 if (subsubnode2_offset < 0) 66 FAIL("Couldn't find \"/subnode@2/subsubnode\": %s", 67 fdt_strerror(subsubnode2_offset)); 68 check_getprop_cell(fdt, subsubnode2_offset, "prop-int", TEST_VALUE_2); 69 70 err = fdt_nop_node(fdt, subnode2_offset); 71 if (err) 72 FAIL("fdt_nop_node(subnode2): %s", fdt_strerror(err)); 73 74 subnode1_offset = fdt_path_offset(fdt, "/subnode@1"); 75 if (subnode1_offset != -FDT_ERR_NOTFOUND) 76 FAIL("fdt_path_offset(subnode1) returned \"%s\" instead of \"%s\"", 77 fdt_strerror(subnode1_offset), 78 fdt_strerror(-FDT_ERR_NOTFOUND)); 79 80 subnode2_offset = fdt_path_offset(fdt, "/subnode@2"); 81 if (subnode2_offset != -FDT_ERR_NOTFOUND) 82 FAIL("fdt_path_offset(subnode2) returned \"%s\" instead of \"%s\"", 83 fdt_strerror(subnode2_offset), 84 fdt_strerror(-FDT_ERR_NOTFOUND)); 85 86 subsubnode2_offset = fdt_path_offset(fdt, "/subnode@2/subsubnode"); 87 if (subsubnode2_offset != -FDT_ERR_NOTFOUND) 88 FAIL("fdt_path_offset(subsubnode2) returned \"%s\" instead of \"%s\"", 89 fdt_strerror(subsubnode2_offset), 90 fdt_strerror(-FDT_ERR_NOTFOUND)); 91 92 PASS(); 93} 94