Kconfig 35 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126
  1. menu "Library routines"
  2. config ADDR_MAP
  3. bool "Enable support for non-identity virtual-physical mappings"
  4. help
  5. Enables helper code for implementing non-identity virtual-physical
  6. memory mappings for 32bit CPUs.
  7. This library only works in the post-relocation phase.
  8. config SYS_NUM_ADDR_MAP
  9. int "Size of the address-map table"
  10. depends on ADDR_MAP
  11. default 16
  12. help
  13. Sets the number of entries in the virtual-physical mapping table.
  14. config SYS_TIMER_COUNTS_DOWN
  15. bool "System timer counts down rather than up"
  16. config PHYSMEM
  17. bool "Access to physical memory region (> 4G)"
  18. help
  19. Some basic support is provided for operations on memory not
  20. normally accessible to 32-bit U-Boot - e.g. some architectures
  21. support access to more than 4G of memory on 32-bit
  22. machines using physical address extension or similar.
  23. Enable this to access this basic support, which only supports clearing
  24. the memory.
  25. config BCH
  26. bool "Enable Software based BCH ECC"
  27. help
  28. Enables software based BCH ECC algorithm present in lib/bch.c
  29. This is used by SoC platforms which do not have built-in ELM
  30. hardware engine required for BCH ECC correction.
  31. config BINMAN_FDT
  32. bool "Allow access to binman information in the device tree"
  33. depends on BINMAN && DM && OF_CONTROL
  34. default y if OF_SEPARATE || OF_EMBED
  35. help
  36. This enables U-Boot to access information about binman entries,
  37. stored in the device tree in a binman node. Typical uses are to
  38. locate entries in the firmware image. See binman.h for the available
  39. functionality.
  40. config CC_OPTIMIZE_LIBS_FOR_SPEED
  41. bool "Optimize libraries for speed"
  42. help
  43. Enabling this option will pass "-O2" to gcc when compiling
  44. under "lib" directory.
  45. If unsure, say N.
  46. config CHARSET
  47. bool
  48. config DYNAMIC_CRC_TABLE
  49. bool "Enable Dynamic tables for CRC"
  50. help
  51. Enable this option to calculate entries for CRC tables at runtime.
  52. This can be helpful when reducing the size of the build image
  53. config HAVE_ARCH_IOMAP
  54. bool
  55. help
  56. Enable this option if architecture provides io{read,write}{8,16,32}
  57. I/O accessor functions.
  58. config HAVE_PRIVATE_LIBGCC
  59. bool
  60. config LIB_UUID
  61. bool
  62. config SPL_LIB_UUID
  63. depends on SPL
  64. bool
  65. config SEMIHOSTING
  66. bool "Support semihosting"
  67. depends on ARM || RISCV
  68. help
  69. Semihosting is a method for a target to communicate with a host
  70. debugger. It uses special instructions which the debugger will trap
  71. on and interpret. This allows U-Boot to read/write files, print to
  72. the console, and execute arbitrary commands on the host system.
  73. Enabling this option will add support for reading and writing files
  74. on the host system. If you don't have a debugger attached then trying
  75. to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
  76. config SEMIHOSTING_FALLBACK
  77. bool "Recover gracefully when semihosting fails"
  78. depends on SEMIHOSTING && (ARM64 || RISCV)
  79. default y
  80. help
  81. Normally, if U-Boot makes a semihosting call and no debugger is
  82. attached, then it will panic due to a synchronous abort
  83. exception. This config adds an exception handler which will allow
  84. U-Boot to recover. Say 'y' if unsure.
  85. config SPL_SEMIHOSTING
  86. bool "Support semihosting in SPL"
  87. depends on SPL && (ARM || RISCV)
  88. help
  89. Semihosting is a method for a target to communicate with a host
  90. debugger. It uses special instructions which the debugger will trap
  91. on and interpret. This allows U-Boot to read/write files, print to
  92. the console, and execute arbitrary commands on the host system.
  93. Enabling this option will add support for reading and writing files
  94. on the host system. If you don't have a debugger attached then trying
  95. to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
  96. config SPL_SEMIHOSTING_FALLBACK
  97. bool "Recover gracefully when semihosting fails in SPL"
  98. depends on SPL_SEMIHOSTING && (ARM64 || RISCV)
  99. select ARMV8_SPL_EXCEPTION_VECTORS if ARM64
  100. default y
  101. help
  102. Normally, if U-Boot makes a semihosting call and no debugger is
  103. attached, then it will panic due to a synchronous abort
  104. exception. This config adds an exception handler which will allow
  105. U-Boot to recover. Say 'y' if unsure.
  106. config PRINTF
  107. bool
  108. default y
  109. config SPL_PRINTF
  110. bool
  111. select SPL_SPRINTF
  112. select SPL_STRTO if !SPL_USE_TINY_PRINTF
  113. config TPL_PRINTF
  114. bool
  115. select TPL_SPRINTF
  116. select TPL_STRTO if !TPL_USE_TINY_PRINTF
  117. config VPL_PRINTF
  118. bool
  119. select VPL_SPRINTF
  120. select VPL_STRTO if !VPL_USE_TINY_PRINTF
  121. config SPRINTF
  122. bool
  123. default y
  124. config SPL_SPRINTF
  125. bool
  126. config TPL_SPRINTF
  127. bool
  128. config VPL_SPRINTF
  129. bool
  130. config SSCANF
  131. bool
  132. config STRTO
  133. bool
  134. default y
  135. config SPL_STRTO
  136. bool
  137. config TPL_STRTO
  138. bool
  139. config VPL_STRTO
  140. bool
  141. config IMAGE_SPARSE
  142. bool
  143. config IMAGE_SPARSE_FILLBUF_SIZE
  144. hex "Android sparse image CHUNK_TYPE_FILL buffer size"
  145. default 0x80000
  146. depends on IMAGE_SPARSE
  147. help
  148. Set the size of the fill buffer used when processing CHUNK_TYPE_FILL
  149. chunks.
  150. config USE_PRIVATE_LIBGCC
  151. bool "Use private libgcc"
  152. depends on HAVE_PRIVATE_LIBGCC
  153. default y if HAVE_PRIVATE_LIBGCC && ((ARM && !ARM64) || MIPS)
  154. help
  155. This option allows you to use the built-in libgcc implementation
  156. of U-Boot instead of the one provided by the compiler.
  157. If unsure, say N.
  158. config SYS_HZ
  159. int
  160. default 1000
  161. help
  162. The frequency of the timer returned by get_timer().
  163. get_timer() must operate in milliseconds and this option must be
  164. set to 1000.
  165. config SPL_USE_TINY_PRINTF
  166. bool "Enable tiny printf() version in SPL"
  167. depends on SPL
  168. default y
  169. help
  170. This option enables a tiny, stripped down printf version.
  171. This should only be used in space limited environments,
  172. like SPL versions with hard memory limits. This version
  173. reduces the code size by about 2.5KiB on armv7.
  174. The supported format specifiers are %c, %s, %u/%d and %x.
  175. config TPL_USE_TINY_PRINTF
  176. bool "Enable tiny printf() version in TPL"
  177. depends on TPL
  178. default y if SPL_USE_TINY_PRINTF
  179. help
  180. This option enables a tiny, stripped down printf version.
  181. This should only be used in space limited environments,
  182. like SPL versions with hard memory limits. This version
  183. reduces the code size by about 2.5KiB on armv7.
  184. The supported format specifiers are %c, %s, %u/%d and %x.
  185. config VPL_USE_TINY_PRINTF
  186. bool "Enable tiny printf() version for VPL"
  187. depends on VPL
  188. help
  189. This option enables a tiny, stripped down printf version.
  190. This should only be used in space limited environments,
  191. like SPL versions with hard memory limits. This version
  192. reduces the code size by about 2.5KiB on armv7.
  193. The supported format specifiers are %c, %s, %u/%d and %x.
  194. config PANIC_HANG
  195. bool "Do not reset the system on fatal error"
  196. help
  197. Define this option to stop the system in case of a fatal error,
  198. so that you have to reset it manually. This is probably NOT a good
  199. idea for an embedded system where you want the system to reboot
  200. automatically as fast as possible, but it may be useful during
  201. development since you can try to debug the conditions that lead to
  202. the situation.
  203. config REGEX
  204. bool "Enable regular expression support"
  205. default y if NET
  206. help
  207. If this variable is defined, U-Boot is linked against the
  208. SLRE (Super Light Regular Expression) library, which adds
  209. regex support to some commands, for example "env grep" and
  210. "setexpr".
  211. choice
  212. prompt "Pseudo-random library support type"
  213. depends on NET_RANDOM_ETHADDR || RANDOM_UUID || CMD_UUID || \
  214. RNG_SANDBOX || UT_LIB && AES || FAT_WRITE
  215. default LIB_RAND
  216. help
  217. Select the library to provide pseudo-random number generator
  218. functions. LIB_HW_RAND supports certain hardware engines that
  219. provide this functionality. If in doubt, select LIB_RAND.
  220. config LIB_RAND
  221. bool "Pseudo-random library support"
  222. config LIB_HW_RAND
  223. bool "HW Engine for random library support"
  224. endchoice
  225. config SUPPORT_ACPI
  226. bool
  227. help
  228. Enable this if your arch or board can support generating ACPI
  229. (Advanced Configuration and Power Interface) tables. In this case
  230. U-Boot can generate these tables and pass them to the Operating
  231. System.
  232. config ACPI
  233. bool "Enable support for ACPI libraries"
  234. depends on SUPPORT_ACPI
  235. help
  236. Provides library functions for dealing with ACPI tables. This does
  237. not necessarily include generation of tables
  238. (see GENERATE_ACPI_TABLE), but allows for tables to be located.
  239. config GENERATE_ACPI_TABLE
  240. bool "Generate an ACPI (Advanced Configuration and Power Interface) table"
  241. depends on ACPI
  242. select QFW if QEMU
  243. help
  244. The Advanced Configuration and Power Interface (ACPI) specification
  245. provides an open standard for device configuration and management
  246. by the operating system. It defines platform-independent interfaces
  247. for configuration and power management monitoring.
  248. config SPL_TINY_MEMSET
  249. bool "Use a very small memset() in SPL"
  250. depends on SPL
  251. help
  252. The faster memset() is the arch-specific one (if available) enabled
  253. by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
  254. better performance by writing a word at a time. But in very
  255. size-constrained environments even this may be too big. Enable this
  256. option to reduce code size slightly at the cost of some speed.
  257. config TPL_TINY_MEMSET
  258. bool "Use a very small memset() in TPL"
  259. depends on TPL
  260. help
  261. The faster memset() is the arch-specific one (if available) enabled
  262. by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
  263. better performance by writing a word at a time. But in very
  264. size-constrained environments even this may be too big. Enable this
  265. option to reduce code size slightly at the cost of some speed.
  266. config RBTREE
  267. bool
  268. config BITREVERSE
  269. bool "Bit reverse library from Linux"
  270. config TRACE
  271. bool "Support for tracing of function calls and timing"
  272. imply CMD_TRACE
  273. imply TIMER_EARLY
  274. help
  275. Enables function tracing within U-Boot. This allows recording of call
  276. traces including timing information. The command can write data to
  277. memory for exporting for analysis (e.g. using bootchart).
  278. See doc/README.trace for full details.
  279. config TRACE_BUFFER_SIZE
  280. hex "Size of trace buffer in U-Boot"
  281. depends on TRACE
  282. default 0x01000000
  283. help
  284. Sets the size of the trace buffer in U-Boot. This is allocated from
  285. memory during relocation. If this buffer is too small, the trace
  286. history will be truncated, with later records omitted.
  287. If early trace is enabled (i.e. before relocation), this buffer must
  288. be large enough to include all the data from the early trace buffer as
  289. well, since this is copied over to the main buffer during relocation.
  290. A trace record is emitted for each function call and each record is
  291. 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
  292. the size is too small then 'trace stats' will show a message saying
  293. how many records were dropped due to buffer overflow.
  294. config TRACE_CALL_DEPTH_LIMIT
  295. int "Trace call depth limit"
  296. depends on TRACE
  297. default 15
  298. help
  299. Sets the maximum call depth up to which function calls are recorded.
  300. config TRACE_EARLY
  301. bool "Enable tracing before relocation"
  302. depends on TRACE
  303. help
  304. Sometimes it is helpful to trace execution of U-Boot before
  305. relocation. This is possible by using a arch-specific, fixed buffer
  306. position in memory. Enable this option to start tracing as early as
  307. possible after U-Boot starts.
  308. config TRACE_EARLY_SIZE
  309. hex "Size of early trace buffer in U-Boot"
  310. depends on TRACE_EARLY
  311. default 0x00100000
  312. help
  313. Sets the size of the early trace buffer in bytes. This is used to hold
  314. tracing information before relocation.
  315. config TRACE_EARLY_CALL_DEPTH_LIMIT
  316. int "Early trace call depth limit"
  317. depends on TRACE_EARLY
  318. default 15
  319. help
  320. Sets the maximum call depth up to which function calls are recorded
  321. during early tracing.
  322. config TRACE_EARLY_ADDR
  323. hex "Address of early trace buffer in U-Boot"
  324. depends on TRACE_EARLY
  325. default 0x00100000
  326. help
  327. Sets the address of the early trace buffer in U-Boot. This memory
  328. must be accessible before relocation.
  329. A trace record is emitted for each function call and each record is
  330. 12 bytes (see struct trace_call). A suggested minimum size is 1MB. If
  331. the size is too small then the message which says the amount of early
  332. data being coped will the the same as the
  333. config CIRCBUF
  334. bool "Enable circular buffer support"
  335. source lib/dhry/Kconfig
  336. menu "Security support"
  337. config AES
  338. bool "Support the AES algorithm"
  339. help
  340. This provides a means to encrypt and decrypt data using the AES
  341. (Advanced Encryption Standard). This algorithm uses a symetric key
  342. and is widely used as a streaming cipher. Different key lengths are
  343. supported by the algorithm but only a 128-bit key is supported at
  344. present.
  345. source lib/ecdsa/Kconfig
  346. source lib/rsa/Kconfig
  347. source lib/crypto/Kconfig
  348. source lib/crypt/Kconfig
  349. source lib/rsa_ark/Kconfig
  350. config TPM
  351. bool "Trusted Platform Module (TPM) Support"
  352. depends on DM
  353. imply DM_RNG
  354. help
  355. This enables support for TPMs which can be used to provide security
  356. features for your board. The TPM can be connected via LPC or I2C
  357. and a sandbox TPM is provided for testing purposes. Use the 'tpm'
  358. command to interactive the TPM. Driver model support is provided
  359. for the low-level TPM interface, but only one TPM is supported at
  360. a time by the TPM library.
  361. config SPL_TPM
  362. bool "Trusted Platform Module (TPM) Support in SPL"
  363. depends on SPL_DM
  364. imply SPL_CRC8
  365. help
  366. This enables support for TPMs which can be used to provide security
  367. features for your board. The TPM can be connected via LPC or I2C
  368. and a sandbox TPM is provided for testing purposes. Use the 'tpm'
  369. command to interactive the TPM. Driver model support is provided
  370. for the low-level TPM interface, but only one TPM is supported at
  371. a time by the TPM library.
  372. config TPL_TPM
  373. bool "Trusted Platform Module (TPM) Support in TPL"
  374. depends on TPL_DM
  375. help
  376. This enables support for TPMs which can be used to provide security
  377. features for your board. The TPM can be connected via LPC or I2C
  378. and a sandbox TPM is provided for testing purposes. Use the 'tpm'
  379. command to interactive the TPM. Driver model support is provided
  380. for the low-level TPM interface, but only one TPM is supported at
  381. a time by the TPM library.
  382. config VPL_TPM
  383. bool "Trusted Platform Module (TPM) Support in VPL"
  384. depends on VPL_DM
  385. help
  386. This enables support for TPMs which can be used to provide security
  387. features for your board. The TPM can be connected via LPC or I2C
  388. and a sandbox TPM is provided for testing purposes. Use the 'tpm'
  389. command to interactive the TPM. Driver model support is provided
  390. for the low-level TPM interface, but only one TPM is supported at
  391. a time by the TPM library.
  392. endmenu
  393. menu "Android Verified Boot"
  394. config LIBAVB
  395. bool "Android Verified Boot 2.0 support"
  396. depends on ANDROID_BOOT_IMAGE
  397. help
  398. This enables support of Android Verified Boot 2.0 which can be used
  399. to assure the end user of the integrity of the software running on a
  400. device. Introduces such features as boot chain of trust, rollback
  401. protection etc.
  402. endmenu
  403. menu "Hashing Support"
  404. config BLAKE2
  405. bool "Enable BLAKE2 support"
  406. help
  407. This option enables support of hashing using BLAKE2B algorithm.
  408. The hash is calculated in software.
  409. The BLAKE2 algorithm produces a hash value (digest) between 1 and
  410. 64 bytes.
  411. config SHA1
  412. bool "Enable SHA1 support"
  413. help
  414. This option enables support of hashing using SHA1 algorithm.
  415. The hash is calculated in software.
  416. The SHA1 algorithm produces a 160-bit (20-byte) hash value
  417. (digest).
  418. config SHA256
  419. bool "Enable SHA256 support"
  420. help
  421. This option enables support of hashing using SHA256 algorithm.
  422. The hash is calculated in software.
  423. The SHA256 algorithm produces a 256-bit (32-byte) hash value
  424. (digest).
  425. config SHA512
  426. bool "Enable SHA512 support"
  427. default y if TI_SECURE_DEVICE && FIT_SIGNATURE
  428. help
  429. This option enables support of hashing using SHA512 algorithm.
  430. The hash is calculated in software.
  431. The SHA512 algorithm produces a 512-bit (64-byte) hash value
  432. (digest).
  433. config SHA384
  434. bool "Enable SHA384 support"
  435. select SHA512
  436. help
  437. This option enables support of hashing using SHA384 algorithm.
  438. The hash is calculated in software. This is also selects SHA512,
  439. because these implementations share the bulk of the code..
  440. The SHA384 algorithm produces a 384-bit (48-byte) hash value
  441. (digest).
  442. config SHA_HW_ACCEL
  443. bool "Enable hardware acceleration for SHA hash functions"
  444. help
  445. This option enables hardware acceleration for the SHA1 and SHA256
  446. hashing algorithms. This affects the 'hash' command and also the
  447. hash_lookup_algo() function.
  448. if SPL
  449. config SPL_CRC32
  450. bool "Enable CRC32 support in SPL"
  451. default y if SPL_LEGACY_IMAGE_SUPPORT || SPL_EFI_PARTITION
  452. default y if SPL_ENV_SUPPORT || TPL_BLOBLIST
  453. help
  454. This option enables support of hashing using CRC32 algorithm.
  455. The CRC32 algorithm produces 32-bit checksum value. For FIT
  456. images, this is the least secure type of checksum, suitable for
  457. detected accidental image corruption. For secure applications you
  458. should consider SHA256 or SHA384.
  459. config SPL_SHA1
  460. bool "Enable SHA1 support in SPL"
  461. default y if SHA1
  462. help
  463. This option enables support of hashing using SHA1 algorithm.
  464. The hash is calculated in software.
  465. The SHA1 algorithm produces a 160-bit (20-byte) hash value
  466. (digest).
  467. config SPL_SHA256
  468. bool "Enable SHA256 support in SPL"
  469. default y if SHA256
  470. help
  471. This option enables support of hashing using SHA256 algorithm.
  472. The hash is calculated in software.
  473. The SHA256 algorithm produces a 256-bit (32-byte) hash value
  474. (digest).
  475. config SPL_SHA512
  476. bool "Enable SHA512 support in SPL"
  477. default y if SHA512
  478. help
  479. This option enables support of hashing using SHA512 algorithm.
  480. The hash is calculated in software.
  481. The SHA512 algorithm produces a 512-bit (64-byte) hash value
  482. (digest).
  483. config SPL_SHA384
  484. bool "Enable SHA384 support in SPL"
  485. default y if SHA384
  486. select SPL_SHA512
  487. help
  488. This option enables support of hashing using SHA384 algorithm.
  489. The hash is calculated in software. This is also selects SHA512,
  490. because these implementations share the bulk of the code..
  491. The SHA384 algorithm produces a 384-bit (48-byte) hash value
  492. (digest).
  493. config SPL_SHA_HW_ACCEL
  494. bool "Enable hardware acceleration for SHA hash functions"
  495. default y if SHA_HW_ACCEL
  496. help
  497. This option enables hardware acceleration for the SHA1 and SHA256
  498. hashing algorithms. This affects the 'hash' command and also the
  499. hash_lookup_algo() function.
  500. config SPL_SHA_PROG_HW_ACCEL
  501. bool "Enable Progressive hashing support using hardware in SPL"
  502. depends on SHA_PROG_HW_ACCEL
  503. default y
  504. help
  505. This option enables hardware-acceleration for SHA progressive
  506. hashing.
  507. Data can be streamed in a block at a time and the hashing is
  508. performed in hardware.
  509. endif
  510. config VPL_SHA1
  511. bool "Enable SHA1 support in VPL"
  512. depends on VPL
  513. default y if SHA1
  514. help
  515. This option enables support of hashing using SHA1 algorithm.
  516. The hash is calculated in software.
  517. The SHA1 algorithm produces a 160-bit (20-byte) hash value
  518. (digest).
  519. config VPL_SHA256
  520. bool "Enable SHA256 support in VPL"
  521. depends on VPL
  522. default y if SHA256
  523. help
  524. This option enables support of hashing using SHA256 algorithm.
  525. The hash is calculated in software.
  526. The SHA256 algorithm produces a 256-bit (32-byte) hash value
  527. (digest).
  528. if SHA_HW_ACCEL
  529. config SHA512_HW_ACCEL
  530. bool "Enable hardware acceleration for SHA512"
  531. depends on SHA512
  532. help
  533. This option enables hardware acceleration for the SHA384 and SHA512
  534. hashing algorithms. This affects the 'hash' command and also the
  535. hash_lookup_algo() function.
  536. config SHA_PROG_HW_ACCEL
  537. bool "Enable Progressive hashing support using hardware"
  538. help
  539. This option enables hardware-acceleration for SHA progressive
  540. hashing.
  541. Data can be streamed in a block at a time and the hashing is
  542. performed in hardware.
  543. endif
  544. config MD5
  545. bool "Support MD5 algorithm"
  546. help
  547. This option enables MD5 support. MD5 is an algorithm designed
  548. in 1991 that produces a 16-byte digest (or checksum) from its input
  549. data. It has a number of vulnerabilities which preclude its use in
  550. security applications, but it can be useful for providing a quick
  551. checksum of a block of data.
  552. config SPL_MD5
  553. bool "Support MD5 algorithm in SPL"
  554. depends on SPL
  555. help
  556. This option enables MD5 support in SPL. MD5 is an algorithm designed
  557. in 1991 that produces a 16-byte digest (or checksum) from its input
  558. data. It has a number of vulnerabilities which preclude its use in
  559. security applications, but it can be useful for providing a quick
  560. checksum of a block of data.
  561. config CRC8
  562. def_bool y
  563. help
  564. Enables CRC8 support in U-Boot. This is normally required. CRC8 is
  565. a simple and fast checksumming algorithm which does a bytewise
  566. checksum with feedback to produce an 8-bit result. The code is small
  567. and it does not require a lookup table (unlike CRC32).
  568. config SPL_CRC8
  569. bool "Support CRC8 in SPL"
  570. depends on SPL
  571. help
  572. Enables CRC8 support in SPL. This is not normally required. CRC8 is
  573. a simple and fast checksumming algorithm which does a bytewise
  574. checksum with feedback to produce an 8-bit result. The code is small
  575. and it does not require a lookup table (unlike CRC32).
  576. config CRC32
  577. def_bool y
  578. help
  579. Enables CRC32 support in U-Boot. This is normally required.
  580. config CRC32C
  581. bool
  582. config XXHASH
  583. bool
  584. endmenu
  585. menu "Compression Support"
  586. config LZ4
  587. bool "Enable LZ4 decompression support"
  588. help
  589. If this option is set, support for LZ4 compressed images
  590. is included. The LZ4 algorithm can run in-place as long as the
  591. compressed image is loaded to the end of the output buffer, and
  592. trades lower compression ratios for much faster decompression.
  593. NOTE: This implements the release version of the LZ4 frame
  594. format as generated by default by the 'lz4' command line tool.
  595. This is not the same as the outdated, less efficient legacy
  596. frame format currently (2015) implemented in the Linux kernel
  597. (generated by 'lz4 -l'). The two formats are incompatible.
  598. config LZMA
  599. bool "Enable LZMA decompression support"
  600. help
  601. This enables support for LZMA (Lempel-Ziv-Markov chain algorithm),
  602. a dictionary compression algorithm that provides a high compression
  603. ratio and fairly fast decompression speed. See also
  604. CONFIG_CMD_LZMADEC which provides a decode command.
  605. config LZO
  606. bool "Enable LZO decompression support"
  607. help
  608. This enables support for the LZO compression algorithm.
  609. config GZIP
  610. bool "Enable gzip decompression support"
  611. select ZLIB
  612. default y
  613. help
  614. This enables support for GZIP compression algorithm.
  615. config ZLIB_UNCOMPRESS
  616. bool "Enables zlib's uncompress() functionality"
  617. help
  618. This enables an extra zlib functionality: the uncompress() function,
  619. which decompresses data from a buffer into another, knowing their
  620. sizes. Unlike gunzip(), there is no header parsing.
  621. config GZIP_COMPRESSED
  622. bool
  623. select ZLIB
  624. config BZIP2
  625. bool "Enable bzip2 decompression support"
  626. help
  627. This enables support for BZIP2 compression algorithm.
  628. config ZLIB
  629. bool
  630. default y
  631. help
  632. This enables ZLIB compression lib.
  633. config ZSTD
  634. bool "Enable Zstandard decompression support"
  635. select XXHASH
  636. help
  637. This enables Zstandard decompression library.
  638. if ZSTD
  639. config ZSTD_LIB_MINIFY
  640. bool "Minify Zstandard code"
  641. default y
  642. help
  643. This disables various optional components and changes the
  644. compilation flags to prioritize space-saving.
  645. For detailed info, see zstd's lib/README.md
  646. https://github.com/facebook/zstd/blob/dev/lib/README.md
  647. endif
  648. config SPL_BZIP2
  649. bool "Enable bzip2 decompression support for SPL build"
  650. depends on SPL
  651. help
  652. This enables support for bzip2 compression algorithm for SPL boot.
  653. config SPL_LZ4
  654. bool "Enable LZ4 decompression support in SPL"
  655. depends on SPL
  656. help
  657. This enables support for the LZ4 decompression algorithm in SPL. LZ4
  658. is a lossless data compression algorithm that is focused on
  659. fast compression and decompression speed. It belongs to the LZ77
  660. family of byte-oriented compression schemes.
  661. config SPL_LZMA
  662. bool "Enable LZMA decompression support for SPL build"
  663. depends on SPL
  664. help
  665. This enables support for LZMA compression algorithm for SPL boot.
  666. config VPL_LZMA
  667. bool "Enable LZMA decompression support for VPL build"
  668. default y if LZMA
  669. help
  670. This enables support for LZMA compression algorithm for VPL boot.
  671. config SPL_LZO
  672. bool "Enable LZO decompression support in SPL"
  673. depends on SPL
  674. help
  675. This enables support for LZO compression algorithm in the SPL.
  676. config SPL_GZIP
  677. bool "Enable gzip decompression support for SPL build"
  678. select SPL_ZLIB
  679. help
  680. This enables support for the GZIP compression algorithm for SPL boot.
  681. config SPL_ZLIB
  682. bool
  683. help
  684. This enables compression lib for SPL boot.
  685. config SPL_ZSTD
  686. bool "Enable Zstandard decompression support in SPL"
  687. depends on SPL
  688. select XXHASH
  689. help
  690. This enables Zstandard decompression library in the SPL.
  691. endmenu
  692. config ERRNO_STR
  693. bool "Enable function for getting errno-related string message"
  694. help
  695. The function errno_str(int errno), returns a pointer to the errno
  696. corresponding text message:
  697. - if errno is null or positive number - a pointer to "Success" message
  698. - if errno is negative - a pointer to errno related message
  699. config HEXDUMP
  700. bool "Enable hexdump"
  701. help
  702. This enables functions for printing dumps of binary data.
  703. config SPL_HEXDUMP
  704. bool "Enable hexdump in SPL"
  705. depends on SPL && HEXDUMP
  706. help
  707. This enables functions for printing dumps of binary data in
  708. SPL.
  709. config GETOPT
  710. bool "Enable getopt"
  711. help
  712. This enables functions for parsing command-line options.
  713. config OF_LIBFDT
  714. bool "Enable the FDT library"
  715. default y if OF_CONTROL
  716. help
  717. This enables the FDT library (libfdt). It provides functions for
  718. accessing binary device tree images in memory, such as adding and
  719. removing nodes and properties, scanning through the tree and finding
  720. particular compatible nodes. The library operates on a flattened
  721. version of the device tree.
  722. config OF_LIBFDT_ASSUME_MASK
  723. hex "Mask of conditions to assume for libfdt"
  724. depends on OF_LIBFDT || FIT
  725. default 0
  726. help
  727. Use this to change the assumptions made by libfdt about the
  728. device tree it is working with. A value of 0 means that no assumptions
  729. are made, and libfdt is able to deal with malicious data. A value of
  730. 0xff means all assumptions are made and any invalid data may cause
  731. unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
  732. config OF_LIBFDT_OVERLAY
  733. bool "Enable the FDT library overlay support"
  734. depends on OF_LIBFDT
  735. default y if ARCH_OMAP2PLUS || ARCH_KEYSTONE
  736. help
  737. This enables the FDT library (libfdt) overlay support.
  738. config SYS_FDT_PAD
  739. hex "Maximum size of the FDT memory area passeed to the OS"
  740. depends on OF_LIBFDT
  741. default 0x13000 if FMAN_ENET || QE || U_QE
  742. default 0x3000
  743. help
  744. During OS boot, we allocate a region of memory within the bootmap
  745. for the FDT. This is the size that we will expand the FDT that we
  746. are using will be extended to be, in bytes.
  747. config SPL_OF_LIBFDT
  748. bool "Enable the FDT library for SPL"
  749. depends on SPL_LIBGENERIC_SUPPORT
  750. default y if SPL_OF_CONTROL
  751. help
  752. This enables the FDT library (libfdt). It provides functions for
  753. accessing binary device tree images in memory, such as adding and
  754. removing nodes and properties, scanning through the tree and finding
  755. particular compatible nodes. The library operates on a flattened
  756. version of the device tree.
  757. config SPL_OF_LIBFDT_ASSUME_MASK
  758. hex "Mask of conditions to assume for libfdt"
  759. depends on SPL_OF_LIBFDT || (FIT && SPL)
  760. default 0xff
  761. help
  762. Use this to change the assumptions made by libfdt in SPL about the
  763. device tree it is working with. A value of 0 means that no assumptions
  764. are made, and libfdt is able to deal with malicious data. A value of
  765. 0xff means all assumptions are made and any invalid data may cause
  766. unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
  767. config TPL_OF_LIBFDT
  768. bool "Enable the FDT library for TPL"
  769. depends on TPL_LIBGENERIC_SUPPORT
  770. default y if TPL_OF_CONTROL
  771. help
  772. This enables the FDT library (libfdt). It provides functions for
  773. accessing binary device tree images in memory, such as adding and
  774. removing nodes and properties, scanning through the tree and finding
  775. particular compatible nodes. The library operates on a flattened
  776. version of the device tree.
  777. config TPL_OF_LIBFDT_ASSUME_MASK
  778. hex "Mask of conditions to assume for libfdt"
  779. depends on TPL_OF_LIBFDT || (FIT && TPL)
  780. default 0xff
  781. help
  782. Use this to change the assumptions made by libfdt in TPL about the
  783. device tree it is working with. A value of 0 means that no assumptions
  784. are made, and libfdt is able to deal with malicious data. A value of
  785. 0xff means all assumptions are made and any invalid data may cause
  786. unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
  787. config VPL_OF_LIBFDT
  788. bool "Enable the FDT library for VPL"
  789. depends on VPL
  790. default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA
  791. help
  792. This enables the FDT library (libfdt). It provides functions for
  793. accessing binary device tree images in memory, such as adding and
  794. removing nodes and properties, scanning through the tree and finding
  795. particular compatible nodes. The library operates on a flattened
  796. version of the device tree.
  797. config VPL_OF_LIBFDT_ASSUME_MASK
  798. hex "Mask of conditions to assume for libfdt"
  799. depends on VPL_OF_LIBFDT || (FIT && VPL)
  800. default 0xff
  801. help
  802. Use this to change the assumptions made by libfdt in SPL about the
  803. device tree it is working with. A value of 0 means that no assumptions
  804. are made, and libfdt is able to deal with malicious data. A value of
  805. 0xff means all assumptions are made and any invalid data may cause
  806. unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
  807. config FDT_FIXUP_PARTITIONS
  808. bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
  809. depends on OF_LIBFDT
  810. depends on CMD_MTDPARTS
  811. help
  812. Allow overwriting defined partitions in the device tree blob
  813. using partition info defined in the 'mtdparts' environment
  814. variable.
  815. menu "System tables"
  816. depends on (!EFI && !SYS_COREBOOT) || (ARM && EFI_LOADER)
  817. config BLOBLIST_TABLES
  818. bool "Put tables in a bloblist"
  819. depends on X86 && BLOBLIST
  820. help
  821. Normally tables are placed at address 0xf0000 and can be up to 64KB
  822. long. With this option, tables are instead placed in the bloblist
  823. with a pointer from 0xf0000. The size can then be larger and the
  824. tables can be placed high in memory.
  825. config GENERATE_SMBIOS_TABLE
  826. bool "Generate an SMBIOS (System Management BIOS) table"
  827. default y
  828. depends on X86 || EFI_LOADER
  829. help
  830. The System Management BIOS (SMBIOS) specification addresses how
  831. motherboard and system vendors present management information about
  832. their products in a standard format by extending the BIOS interface
  833. on Intel architecture systems.
  834. Check http://www.dmtf.org/standards/smbios for details.
  835. See also SMBIOS_SYSINFO which allows SMBIOS values to be provided in
  836. the devicetree.
  837. config LIB_RATIONAL
  838. bool "enable continued fraction calculation routines"
  839. config SPL_LIB_RATIONAL
  840. bool "enable continued fraction calculation routines for SPL"
  841. depends on SPL
  842. endmenu
  843. config ASN1_COMPILER
  844. bool
  845. help
  846. ASN.1 (Abstract Syntax Notation One) is a standard interface
  847. description language for defining data structures that can be
  848. serialized and deserialized in a cross-platform way. It is
  849. broadly used in telecommunications and computer networking,
  850. and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
  851. This option enables the support of the asn1 compiler.
  852. config ASN1_DECODER
  853. bool
  854. help
  855. ASN.1 (Abstract Syntax Notation One) is a standard interface
  856. description language for defining data structures that can be
  857. serialized and deserialized in a cross-platform way. It is
  858. broadly used in telecommunications and computer networking,
  859. and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
  860. This option enables the support of the asn1 decoder.
  861. config SPL_ASN1_DECODER
  862. bool
  863. help
  864. ASN.1 (Abstract Syntax Notation One) is a standard interface
  865. description language for defining data structures that can be
  866. serialized and deserialized in a cross-platform way. It is
  867. broadly used in telecommunications and computer networking,
  868. and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
  869. This option enables the support of the asn1 decoder in the SPL.
  870. config OID_REGISTRY
  871. bool
  872. help
  873. In computing, object identifiers or OIDs are an identifier mechanism
  874. standardized by the International Telecommunication Union (ITU) and
  875. ISO/IEC for naming any object, concept, or "thing" with a globally
  876. unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
  877. Enable fast lookup object identifier registry.
  878. config SPL_OID_REGISTRY
  879. bool
  880. help
  881. In computing, object identifiers or OIDs are an identifier mechanism
  882. standardized by the International Telecommunication Union (ITU) and
  883. ISO/IEC for naming any object, concept, or "thing" with a globally
  884. unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
  885. Enable fast lookup object identifier registry in the SPL.
  886. config SMBIOS_PARSER
  887. bool "SMBIOS parser"
  888. help
  889. A simple parser for SMBIOS data.
  890. source lib/efi/Kconfig
  891. source lib/efi_loader/Kconfig
  892. source lib/optee/Kconfig
  893. config TEST_FDTDEC
  894. bool "enable fdtdec test"
  895. depends on OF_LIBFDT
  896. config LIB_DATE
  897. bool
  898. config LIB_ELF
  899. bool
  900. help
  901. Support basic elf loading/validating functions.
  902. This supports for 32 bit and 64 bit versions.
  903. config LMB
  904. bool "Enable the logical memory blocks library (lmb)"
  905. default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
  906. NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
  907. help
  908. Support the library logical memory blocks.
  909. config LMB_USE_MAX_REGIONS
  910. bool "Use a common number of memory and reserved regions in lmb lib"
  911. default y
  912. help
  913. Define the number of supported memory regions in the library logical
  914. memory blocks.
  915. This feature allow to reduce the lmb library size by using compiler
  916. optimization when LMB_MEMORY_REGIONS == LMB_RESERVED_REGIONS.
  917. config LMB_MAX_REGIONS
  918. int "Number of memory and reserved regions in lmb lib"
  919. depends on LMB_USE_MAX_REGIONS
  920. default 16
  921. help
  922. Define the number of supported regions, memory and reserved, in the
  923. library logical memory blocks.
  924. config LMB_MEMORY_REGIONS
  925. int "Number of memory regions in lmb lib"
  926. depends on !LMB_USE_MAX_REGIONS
  927. default 8
  928. help
  929. Define the number of supported memory regions in the library logical
  930. memory blocks.
  931. The minimal value is CONFIG_NR_DRAM_BANKS.
  932. config LMB_RESERVED_REGIONS
  933. int "Number of reserved regions in lmb lib"
  934. depends on !LMB_USE_MAX_REGIONS
  935. default 8
  936. help
  937. Define the number of supported reserved regions in the library logical
  938. memory blocks.
  939. config PHANDLE_CHECK_SEQ
  940. bool "Enable phandle check while getting sequence number"
  941. help
  942. When there are multiple device tree nodes with same name,
  943. enable this config option to distinguish them using
  944. phandles in fdtdec_get_alias_seq() function.
  945. endmenu
  946. menu "FWU Multi Bank Updates"
  947. source lib/fwu_updates/Kconfig
  948. endmenu