aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/dtc/dtc.cc
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2020-02-14 18:46:34 +0000
committerKyle Evans <kevans@FreeBSD.org>2020-02-14 18:46:34 +0000
commitaac4229aac3b59dedd160793faf21e18cf85bdfc (patch)
treefe2bd9d2a7e7371c035e27d8e49f350726d6bce9 /usr.bin/dtc/dtc.cc
parent4c3ccd967e6b9a6c157bd38410bdccd098bdb9e1 (diff)
Notes
Diffstat (limited to 'usr.bin/dtc/dtc.cc')
-rw-r--r--usr.bin/dtc/dtc.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/usr.bin/dtc/dtc.cc b/usr.bin/dtc/dtc.cc
index b9423f486815..0cda698011ef 100644
--- a/usr.bin/dtc/dtc.cc
+++ b/usr.bin/dtc/dtc.cc
@@ -94,6 +94,8 @@ void version(const char* progname)
} // Anonymous namespace
using fdt::device_tree;
+using fdt::tree_write_fn_ptr;
+using fdt::tree_read_fn_ptr;
int
main(int argc, char **argv)
@@ -104,8 +106,8 @@ main(int argc, char **argv)
const char *in_file = "-";
FILE *depfile = 0;
bool debug_mode = false;
- auto write_fn = &device_tree::write_binary;
- auto read_fn = &device_tree::parse_dts;
+ tree_write_fn_ptr write_fn = nullptr;
+ tree_read_fn_ptr read_fn = nullptr;
uint32_t boot_cpu = 0;
bool boot_cpu_specified = false;
bool keep_going = false;
@@ -135,6 +137,10 @@ main(int argc, char **argv)
if (arg == "dtb")
{
read_fn = &device_tree::parse_dtb;
+ if (write_fn == nullptr)
+ {
+ write_fn = &device_tree::write_dts;
+ }
}
else if (arg == "dts")
{
@@ -161,6 +167,10 @@ main(int argc, char **argv)
else if (arg == "dts")
{
write_fn = &device_tree::write_dts;
+ if (read_fn == nullptr)
+ {
+ read_fn = &device_tree::parse_dtb;
+ }
}
else
{
@@ -298,6 +308,14 @@ main(int argc, char **argv)
return EXIT_FAILURE;
}
}
+ if (read_fn == nullptr)
+ {
+ read_fn = &device_tree::parse_dts;
+ }
+ if (write_fn == nullptr)
+ {
+ write_fn = &device_tree::write_binary;
+ }
if (optind < argc)
{
in_file = argv[optind];