#
# Device Tree Control
#

config SUPPORT_OF_CONTROL
	bool

menu "Device Tree Control"
	depends on SUPPORT_OF_CONTROL

config OF_CONTROL
	bool "Run-time configuration via Device Tree"
	help
	  This feature provides for run-time configuration of U-Boot
	  via a flattened device tree.

config OF_BOARD_FIXUP
	bool "Board-specific manipulation of Device Tree"
	help
	  In certain circumstances it is necessary to be able to modify
	  U-Boot's device tree (e.g. to delete device from it). This option
	  make the Device Tree writeable and provides a board-specific
	  "board_fix_fdt" callback (called during pre-relocation time), which
	  enables the board initialization to modifiy the Device Tree. The
	  modified copy is subsequently used by U-Boot after relocation.

config SPL_OF_CONTROL
	bool "Enable run-time configuration via Device Tree in SPL"
	depends on SPL && OF_CONTROL
	help
	  Some boards use device tree in U-Boot but only have 4KB of SRAM
	  which is not enough to support device tree. Enable this option to
	  allow such boards to be supported by U-Boot SPL.

config OF_LIVE
	bool "Enable use of a live tree"
	depends on OF_CONTROL
	help
	  Normally U-Boot uses a flat device tree which saves space and
	  avoids the need to unpack the tree before use. However a flat
	  tree does not support modifcation from within U-Boot since it
	  can invalidate driver-model device tree offsets. This option
	  enables a live tree which is available after relocation,
	  and can be adjusted as needed.

choice
	prompt "Provider of DTB for DT control"
	depends on OF_CONTROL

config OF_SEPARATE
	bool "Separate DTB for DT control"
	depends on !SANDBOX
	help
	  If this option is enabled, the device tree will be built and
	  placed as a separate u-boot.dtb file alongside the U-Boot image.

config OF_EMBED
	bool "Embedded DTB for DT control"
	help
	  If this option is enabled, the device tree will be picked up and
	  built into the U-Boot image. This is suitable for local debugging
	  and development only and is not recommended for production devices.
	  Boards in the mainline U-Boot tree should not use it.

config OF_BOARD
	bool "Provided by the board at runtime"
	depends on !SANDBOX
	help
	  If this option is enabled, the device tree will be provided by
	  the board at runtime if the board supports it, instead of being
	  bundled with the image.

config OF_HOSTFILE
	bool "Host filed DTB for DT control"
	depends on SANDBOX
	help
	  If this option is enabled, DTB will be read from a file on startup.
	  This is only useful for Sandbox.  Use the -d flag to U-Boot to
	  specify the file to read.

endchoice

config DEFAULT_DEVICE_TREE
	string "Default Device Tree for DT control"
	depends on OF_CONTROL
	help
	  This option specifies the default Device Tree used for DT control.
	  It can be overridden from the command line:
	  $ make DEVICE_TREE=<device-tree-name>

config OF_LIST
	string "List of device tree files to include for DT control"
	depends on SPL_LOAD_FIT || FIT_EMBED
	default DEFAULT_DEVICE_TREE
	help
	  This option specifies a list of device tree files to use for DT
	  control. These will be packaged into a FIT. At run-time, U-boot
	  or SPL will select the correct DT to use by examining the
	  hardware (e.g. reading a board ID value). This is a list of
	  device tree files (without the directory or .dtb suffix)
	  separated by <space>.

config OF_SPL_REMOVE_PROPS
	string "List of device tree properties to drop for SPL"
	depends on SPL_OF_CONTROL
	default "interrupt-parent" if SPL_PINCTRL && SPL_CLK
	default "clocks clock-names interrupt-parent" if SPL_PINCTRL
	default "pinctrl-0 pinctrl-names interrupt-parent" if SPL_CLK
	default "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent"
	help
	  Since SPL normally runs in a reduced memory space, the device tree
	  is cut down to only what is needed to load and start U-Boot. Only
	  nodes marked with the property "u-boot,dm-pre-reloc" will be
	  included. In addition, some properties are not used by U-Boot and
	  can be discarded. This option defines the list of properties to
	  discard.

config SPL_OF_PLATDATA
	bool "Generate platform data for use in SPL"
	depends on SPL_OF_CONTROL
	help
	  For very constrained SPL environments the overhead of decoding
	  device tree nodes and converting their contents into platform data
	  is too large. This overhead includes libfdt code as well as the
	  device tree contents itself. The latter is fairly compact, but the
	  former can add 3KB or more to a Thumb 2 Image.

	  This option enables generation of platform data from the device
	  tree as C code. This code creates devices using U_BOOT_DEVICE()
	  declarations. The benefit is that it allows driver code to access
	  the platform data directly in C structures, avoidin the libfdt
	  overhead.

	  This option works by generating C structure declarations for each
	  compatible string, then adding platform data and U_BOOT_DEVICE
	  declarations for each node. See README.platdata for more
	  information.

endmenu
