1# 2# Device Tree Control 3# 4 5config SUPPORT_OF_CONTROL 6 bool 7 8config DTC 9 bool 10 11menu "Device Tree Control" 12 depends on SUPPORT_OF_CONTROL 13 14config OF_CONTROL 15 bool "Run-time configuration via Device Tree" 16 select DTC 17 help 18 This feature provides for run-time configuration of U-Boot 19 via a flattened device tree. 20 21config OF_BOARD_FIXUP 22 bool "Board-specific manipulation of Device Tree" 23 help 24 In certain circumstances it is necessary to be able to modify 25 U-Boot's device tree (e.g. to delete device from it). This option 26 make the Device Tree writeable and provides a board-specific 27 "board_fix_fdt" callback (called during pre-relocation time), which 28 enables the board initialization to modifiy the Device Tree. The 29 modified copy is subsequently used by U-Boot after relocation. 30 31config SPL_OF_CONTROL 32 bool "Enable run-time configuration via Device Tree in SPL" 33 depends on SPL && OF_CONTROL 34 help 35 Some boards use device tree in U-Boot but only have 4KB of SRAM 36 which is not enough to support device tree. Enable this option to 37 allow such boards to be supported by U-Boot SPL. 38 39config TPL_OF_CONTROL 40 bool "Enable run-time configuration via Device Tree in TPL" 41 depends on TPL && OF_CONTROL 42 help 43 Some boards use device tree in U-Boot but only have 4KB of SRAM 44 which is not enough to support device tree. Enable this option to 45 allow such boards to be supported by U-Boot TPL. 46 47config OF_LIVE 48 bool "Enable use of a live tree" 49 depends on OF_CONTROL 50 help 51 Normally U-Boot uses a flat device tree which saves space and 52 avoids the need to unpack the tree before use. However a flat 53 tree does not support modifcation from within U-Boot since it 54 can invalidate driver-model device tree offsets. This option 55 enables a live tree which is available after relocation, 56 and can be adjusted as needed. 57 58choice 59 prompt "Provider of DTB for DT control" 60 depends on OF_CONTROL 61 62config OF_SEPARATE 63 bool "Separate DTB for DT control" 64 depends on !SANDBOX 65 help 66 If this option is enabled, the device tree will be built and 67 placed as a separate u-boot.dtb file alongside the U-Boot image. 68 69config OF_EMBED 70 bool "Embedded DTB for DT control" 71 help 72 If this option is enabled, the device tree will be picked up and 73 built into the U-Boot image. This is suitable for local debugging 74 and development only and is not recommended for production devices. 75 Boards in the mainline U-Boot tree should not use it. 76 77config OF_BOARD 78 bool "Provided by the board at runtime" 79 depends on !SANDBOX 80 help 81 If this option is enabled, the device tree will be provided by 82 the board at runtime if the board supports it, instead of being 83 bundled with the image. 84 85config OF_HOSTFILE 86 bool "Host filed DTB for DT control" 87 depends on SANDBOX 88 help 89 If this option is enabled, DTB will be read from a file on startup. 90 This is only useful for Sandbox. Use the -d flag to U-Boot to 91 specify the file to read. 92 93endchoice 94 95config DEFAULT_DEVICE_TREE 96 string "Default Device Tree for DT control" 97 depends on OF_CONTROL 98 help 99 This option specifies the default Device Tree used for DT control. 100 It can be overridden from the command line: 101 $ make DEVICE_TREE=<device-tree-name> 102 103config OF_LIST 104 string "List of device tree files to include for DT control" 105 depends on SPL_LOAD_FIT || MULTI_DTB_FIT 106 default DEFAULT_DEVICE_TREE 107 help 108 This option specifies a list of device tree files to use for DT 109 control. These will be packaged into a FIT. At run-time, U-boot 110 or SPL will select the correct DT to use by examining the 111 hardware (e.g. reading a board ID value). This is a list of 112 device tree files (without the directory or .dtb suffix) 113 separated by <space>. 114 115 116config DTB_RESELECT 117 bool "Support swapping dtbs at a later point in boot" 118 depends on MULTI_DTB_FIT 119 help 120 It is possible during initial boot you may need to use a generic 121 dtb until you can fully determine the board your running on. This 122 config allows boards to implement a function at a later point 123 during boot to switch to the "correct" dtb. 124 125config MULTI_DTB_FIT 126 bool "Support embedding several DTBs in a FIT image for u-boot" 127 help 128 This option provides hooks to allow U-boot to parse an 129 appended FIT image and enable board specific code to then select 130 the correct DTB to be used. Use this if you need to support 131 multiple DTBs but don't use the SPL. 132 133 134config SPL_MULTI_DTB_FIT 135 depends on SPL_LOAD_FIT && SPL_OF_CONTROL && !SPL_OF_PLATDATA 136 bool "Support embedding several DTBs in a FIT image for the SPL" 137 help 138 This option provides the SPL with the ability to select its own 139 DTB at runtime from an appended FIT image containing several DTBs. 140 This allows using the same SPL binary on multiple platforms. 141 The primary purpose is to handle different versions of 142 the same platform without tweaking the platform code if the 143 differences can be expressed in the DTBs (common examples are: bus 144 capabilities, pad configurations). 145 146config SPL_OF_LIST 147 string "List of device tree files to include for DT control in SPL" 148 depends on SPL_MULTI_DTB_FIT 149 default OF_LIST 150 help 151 This option specifies a list of device tree files to use for DT 152 control in the SPL. These will be packaged into a FIT. At run-time, 153 the SPL will select the correct DT to use by examining the 154 hardware (e.g. reading a board ID value). This is a list of 155 device tree files (without the directory or .dtb suffix) 156 separated by <space>. 157 158choice 159 prompt "SPL OF LIST compression" 160 depends on SPL_MULTI_DTB_FIT 161 default SPL_MULTI_DTB_FIT_LZO 162 163config SPL_MULTI_DTB_FIT_LZO 164 bool "LZO" 165 depends on SYS_MALLOC_F 166 select SPL_LZO 167 help 168 Compress the FIT image containing the DTBs available for the SPL 169 using LZO compression. (requires lzop on host). 170 171config SPL_MULTI_DTB_FIT_GZIP 172 bool "GZIP" 173 depends on SYS_MALLOC_F 174 select SPL_GZIP 175 help 176 Compress the FIT image containing the DTBs available for the SPL 177 using GZIP compression. (requires gzip on host) 178 179config SPL_MULTI_DTB_FIT_NO_COMPRESSION 180 bool "No compression" 181 help 182 Do not compress the FIT image containing the DTBs available for the SPL. 183 Use this options only if LZO is not available and the DTBs are very small. 184endchoice 185 186choice 187 prompt "Location of uncompressed DTBs " 188 depends on (SPL_MULTI_DTB_FIT_GZIP || SPL_MULTI_DTB_FIT_LZO) 189 default SPL_MULTI_DTB_FIT_DYN_ALLOC if SYS_MALLOC_F 190 191config SPL_MULTI_DTB_FIT_DYN_ALLOC 192 bool "Dynamically allocate the memory" 193 depends on SYS_MALLOC_F 194 195config SPL_MULTI_DTB_FIT_USER_DEFINED_AREA 196 bool "User-defined location" 197endchoice 198 199config SPL_MULTI_DTB_FIT_UNCOMPRESS_SZ 200 hex "Size of memory reserved to uncompress the DTBs" 201 depends on (SPL_MULTI_DTB_FIT_GZIP || SPL_MULTI_DTB_FIT_LZO) 202 default 0x8000 203 help 204 This is the size of this area where the DTBs are uncompressed. 205 If this area is dynamically allocated, make sure that 206 SPL_SYS_MALLOC_F_LEN is big enough to contain it. 207 208config SPL_MULTI_DTB_FIT_USER_DEF_ADDR 209 hex "Address of memory where dtbs are uncompressed" 210 depends on SPL_MULTI_DTB_FIT_USER_DEFINED_AREA 211 help 212 the FIT image containing the DTBs is uncompressed in an area defined 213 at compilation time. This is the address of this area. It must be 214 aligned on 2-byte boundary. 215 216config OF_SPL_REMOVE_PROPS 217 string "List of device tree properties to drop for SPL" 218 depends on SPL_OF_CONTROL 219 default "interrupt-parent" if SPL_PINCTRL && SPL_CLK 220 default "clocks clock-names interrupt-parent" if SPL_PINCTRL 221 default "pinctrl-0 pinctrl-names interrupt-parent" if SPL_CLK 222 default "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent" 223 help 224 Since SPL normally runs in a reduced memory space, the device tree 225 is cut down to only what is needed to load and start U-Boot. Only 226 nodes marked with the property "u-boot,dm-pre-reloc" will be 227 included. In addition, some properties are not used by U-Boot and 228 can be discarded. This option defines the list of properties to 229 discard. 230 231config SPL_OF_PLATDATA 232 bool "Generate platform data for use in SPL" 233 depends on SPL_OF_CONTROL 234 help 235 For very constrained SPL environments the overhead of decoding 236 device tree nodes and converting their contents into platform data 237 is too large. This overhead includes libfdt code as well as the 238 device tree contents itself. The latter is fairly compact, but the 239 former can add 3KB or more to a Thumb 2 Image. 240 241 This option enables generation of platform data from the device 242 tree as C code. This code creates devices using U_BOOT_DEVICE() 243 declarations. The benefit is that it allows driver code to access 244 the platform data directly in C structures, avoidin the libfdt 245 overhead. 246 247 This option works by generating C structure declarations for each 248 compatible string, then adding platform data and U_BOOT_DEVICE 249 declarations for each node. See README.platdata for more 250 information. 251 252config TPL_OF_PLATDATA 253 bool "Generate platform data for use in TPL" 254 depends on TPL_OF_CONTROL 255 help 256 For very constrained SPL environments the overhead of decoding 257 device tree nodes and converting their contents into platform data 258 is too large. This overhead includes libfdt code as well as the 259 device tree contents itself. The latter is fairly compact, but the 260 former can add 3KB or more to a Thumb 2 Image. 261 262 This option enables generation of platform data from the device 263 tree as C code. This code creates devices using U_BOOT_DEVICE() 264 declarations. The benefit is that it allows driver code to access 265 the platform data directly in C structures, avoidin the libfdt 266 overhead. 267 268 This option works by generating C structure declarations for each 269 compatible string, then adding platform data and U_BOOT_DEVICE 270 declarations for each node. See README.platdata for more 271 information. 272 273endmenu 274 275config MKIMAGE_DTC_PATH 276 string "Path to dtc binary for use within mkimage" 277 default "dtc" 278 help 279 The mkimage host tool will, in order to generate FIT images make 280 calls to the dtc application in order to create the output. In 281 some cases the system dtc may not support all required features 282 and the path to a different version should be given here. 283