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	  If unsure, say N here, but this option is safe to enable.
27
28config OF_ALL_DTBS
29	bool "Build all Device Tree Blobs"
30	depends on COMPILE_TEST
31	select DTC
32	help
33	  This option builds all possible Device Tree Blobs (DTBs) for the
34	  current architecture.
35
36	  If unsure, say N here, but this option is safe to enable.
37
38config OF_FLATTREE
39	bool
40	select DTC
41	select LIBFDT
42	select CRC32
43
44config OF_EARLY_FLATTREE
45	bool
46	select DMA_DECLARE_COHERENT if HAS_DMA
47	select OF_FLATTREE
48
49config OF_PROMTREE
50	bool
51
52config OF_KOBJ
53	def_bool SYSFS
54
55# Hardly any platforms need this.  It is safe to select, but only do so if you
56# need it.
57config OF_DYNAMIC
58	bool "Support for dynamic device trees" if OF_UNITTEST
59	select OF_KOBJ
60	help
61	  On some platforms, the device tree can be manipulated at runtime.
62	  While this option is selected automatically on such platforms, you
63	  can enable it manually to improve device tree unit test coverage.
64
65config OF_ADDRESS
66	def_bool y
67	depends on !SPARC && (HAS_IOMEM || UML)
68
69config OF_IRQ
70	def_bool y
71	depends on !SPARC && IRQ_DOMAIN
72
73config OF_NET
74	depends on NETDEVICES
75	def_bool y
76
77config OF_RESERVED_MEM
78	bool
79	depends on OF_EARLY_FLATTREE
80	default y if DMA_DECLARE_COHERENT || DMA_CMA
81
82config OF_RESOLVE
83	bool
84
85config OF_OVERLAY
86	bool "Device Tree overlays"
87	select OF_DYNAMIC
88	select OF_FLATTREE
89	select OF_RESOLVE
90	help
91	  Overlays are a method to dynamically modify part of the kernel's
92	  device tree with dynamically loaded data.
93	  While this option is selected automatically when needed, you can
94	  enable it manually to improve device tree unit test coverage.
95
96config OF_NUMA
97	bool
98
99config OF_DMA_DEFAULT_COHERENT
100	# arches should select this if DMA is coherent by default for OF devices
101	bool
102
103endif # OF
104