1# SPDX-License-Identifier: GPL-2.0
2config DTC
3	bool
4
5menuconfig OF
6	bool "Device Tree and Open Firmware support"
7	help
8	  This option enables the device tree infrastructure.
9	  It is automatically selected by platforms that need it or can
10	  be enabled manually for unittests, overlays or
11	  compile-coverage.
12
13if OF
14
15config OF_UNITTEST
16	bool "Device Tree runtime unit tests"
17	depends on !SPARC
18	select IRQ_DOMAIN
19	select OF_EARLY_FLATTREE
20	select OF_RESOLVE
21	help
22	  This option builds in test cases for the device tree infrastructure
23	  that are executed once at boot time, and the results dumped to the
24	  console.
25
26	  This option should only be enabled for a development kernel. The tests
27	  will taint the kernel with TAINT_TEST. The tests will cause ERROR and
28	  WARNING messages to print on the console. The tests will cause stack
29	  traces to print on the console.  It is possible that the tests will
30	  leave the devicetree in a corrupted state.
31
32	  The unittest output will be verbose.  Copy the output to a file
33	  via capturing the console output or via the dmesg command.  Process
34	  this file with scripts/dtc/of_unittest_expect to reduce the
35	  verbosity, test whether expected output is present, and to
36	  summarize the results.
37
38	  If unsure, say N here. This option is not safe to enable.
39
40config OF_ALL_DTBS
41	bool "Build all Device Tree Blobs"
42	depends on COMPILE_TEST
43	select DTC
44	help
45	  This option builds all possible Device Tree Blobs (DTBs) for the
46	  current architecture.
47
48	  If unsure, say N here, but this option is safe to enable.
49
50config OF_FLATTREE
51	bool
52	select DTC
53	select LIBFDT
54	select CRC32
55
56config OF_EARLY_FLATTREE
57	bool
58	select DMA_DECLARE_COHERENT if HAS_DMA && HAS_IOMEM
59	select OF_FLATTREE
60
61config OF_PROMTREE
62	bool
63
64config OF_KOBJ
65	def_bool SYSFS
66
67# Hardly any platforms need this.  It is safe to select, but only do so if you
68# need it.
69config OF_DYNAMIC
70	bool "Support for dynamic device trees" if OF_UNITTEST
71	select OF_KOBJ
72	help
73	  On some platforms, the device tree can be manipulated at runtime.
74	  While this option is selected automatically on such platforms, you
75	  can enable it manually to improve device tree unit test coverage.
76
77config OF_ADDRESS
78	def_bool y
79	depends on !SPARC && (HAS_IOMEM || UML)
80
81config OF_IRQ
82	def_bool y
83	depends on !SPARC && IRQ_DOMAIN
84
85config OF_RESERVED_MEM
86	def_bool OF_EARLY_FLATTREE
87
88config OF_RESOLVE
89	bool
90
91config OF_OVERLAY
92	bool "Device Tree overlays"
93	select OF_DYNAMIC
94	select OF_FLATTREE
95	select OF_RESOLVE
96	help
97	  Overlays are a method to dynamically modify part of the kernel's
98	  device tree with dynamically loaded data.
99	  While this option is selected automatically when needed, you can
100	  enable it manually to improve device tree unit test coverage.
101
102config OF_NUMA
103	bool
104
105endif # OF
106