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