Merge tag 'tpm-030822' of https://source.denx.de/u-boot/custodians/u-boot-tpm
[platform/kernel/u-boot.git] / lib / Kconfig
index 034af72..e888c29 100644 (file)
@@ -15,6 +15,16 @@ config SYS_NUM_ADDR_MAP
        help
          Sets the number of entries in the virtual-physical mapping table.
 
+config PHYSMEM
+       bool "Access to physical memory region (> 4G)"
+       help
+         Some basic support is provided for operations on memory not
+         normally accessible to 32-bit U-Boot - e.g. some architectures
+         support access to more than 4G of memory on 32-bit
+         machines using physical address extension or similar.
+         Enable this to access this basic support, which only supports clearing
+         the memory.
+
 config BCH
        bool "Enable Software based BCH ECC"
        help
@@ -42,11 +52,6 @@ config CC_OPTIMIZE_LIBS_FOR_SPEED
 
 config CHARSET
        bool
-       default y if UT_UNICODE || EFI_LOADER || UFS
-       help
-         Enables support for various conversions between different
-         character sets, such as between unicode representations and
-         different 'code pages'.
 
 config DYNAMIC_CRC_TABLE
        bool "Enable Dynamic tables for CRC"
@@ -80,6 +85,11 @@ config TPL_PRINTF
        select TPL_SPRINTF
        select TPL_STRTO if !TPL_USE_TINY_PRINTF
 
+config VPL_PRINTF
+       bool
+       select VPL_SPRINTF
+       select VPL_STRTO if !VPL_USE_TINY_PRINTF
+
 config SPRINTF
        bool
        default y
@@ -90,6 +100,9 @@ config SPL_SPRINTF
 config TPL_SPRINTF
        bool
 
+config VPL_SPRINTF
+       bool
+
 config SSCANF
        bool
 
@@ -103,6 +116,9 @@ config SPL_STRTO
 config TPL_STRTO
        bool
 
+config VPL_STRTO
+       bool
+
 config IMAGE_SPARSE
        bool
 
@@ -155,6 +171,17 @@ config TPL_USE_TINY_PRINTF
 
          The supported format specifiers are %c, %s, %u/%d and %x.
 
+config VPL_USE_TINY_PRINTF
+       bool "Enable tiny printf() version for VPL"
+       depends on VPL
+       help
+         This option enables a tiny, stripped down printf version.
+         This should only be used in space limited environments,
+         like SPL versions with hard memory limits. This version
+         reduces the code size by about 2.5KiB on armv7.
+
+         The supported format specifiers are %c, %s, %u/%d and %x.
+
 config PANIC_HANG
        bool "Do not reset the system on fatal error"
        help
@@ -192,8 +219,27 @@ config LIB_HW_RAND
 
 endchoice
 
+config SUPPORT_ACPI
+       bool
+       help
+         Enable this if your arch or board can support generating ACPI
+         (Advanced Configuration and Power Interface) tables. In this case
+         U-Boot can generate these tables and pass them to the Operating
+         System.
+
+config GENERATE_ACPI_TABLE
+       bool "Generate an ACPI (Advanced Configuration and Power Interface) table"
+       depends on SUPPORT_ACPI
+       select QFW if QEMU
+       help
+         The Advanced Configuration and Power Interface (ACPI) specification
+         provides an open standard for device configuration and management
+         by the operating system. It defines platform-independent interfaces
+         for configuration and power management monitoring.
+
 config SPL_TINY_MEMSET
        bool "Use a very small memset() in SPL"
+       depends on SPL
        help
          The faster memset() is the arch-specific one (if available) enabled
          by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
@@ -203,6 +249,7 @@ config SPL_TINY_MEMSET
 
 config TPL_TINY_MEMSET
        bool "Use a very small memset() in TPL"
+       depends on TPL
        help
          The faster memset() is the arch-specific one (if available) enabled
          by CONFIG_USE_ARCH_MEMSET. If that is not enabled, we can still get
@@ -289,6 +336,9 @@ config TRACE_EARLY_ADDR
          the size is too small then the message which says the amount of early
          data being coped will the the same as the
 
+config CIRCBUF
+       bool "Enable circular buffer support"
+
 source lib/dhry/Kconfig
 
 menu "Security support"
@@ -310,6 +360,7 @@ source lib/crypt/Kconfig
 config TPM
        bool "Trusted Platform Module (TPM) Support"
        depends on DM
+       imply DM_RNG
        help
          This enables support for TPMs which can be used to provide security
          features for your board. The TPM can be connected via LPC or I2C
@@ -340,6 +391,17 @@ config TPL_TPM
          for the low-level TPM interface, but only one TPM is supported at
          a time by the TPM library.
 
+config VPL_TPM
+       bool "Trusted Platform Module (TPM) Support in VPL"
+       depends on VPL_DM
+       help
+         This enables support for TPMs which can be used to provide security
+         features for your board. The TPM can be connected via LPC or I2C
+         and a sandbox TPM is provided for testing purposes. Use the 'tpm'
+         command to interactive the TPM. Driver model support is provided
+         for the low-level TPM interface, but only one TPM is supported at
+         a time by the TPM library.
+
 endmenu
 
 menu "Android Verified Boot"
@@ -357,6 +419,14 @@ endmenu
 
 menu "Hashing Support"
 
+config BLAKE2
+       bool "Enable BLAKE2 support"
+       help
+         This option enables support of hashing using BLAKE2B algorithm.
+         The hash is calculated in software.
+         The BLAKE2 algorithm produces a hash value (digest) between 1 and
+         64 bytes.
+
 config SHA1
        bool "Enable SHA1 support"
        help
@@ -373,7 +443,6 @@ config SHA256
          The SHA256 algorithm produces a 256-bit (32-byte) hash value
          (digest).
 
-
 config SHA512
        bool "Enable SHA512 support"
        help
@@ -399,6 +468,66 @@ config SHA_HW_ACCEL
          hashing algorithms. This affects the 'hash' command and also the
          hash_lookup_algo() function.
 
+if SPL
+
+config SPL_SHA1
+       bool "Enable SHA1 support in SPL"
+       default y if SHA1
+       help
+         This option enables support of hashing using SHA1 algorithm.
+         The hash is calculated in software.
+         The SHA1 algorithm produces a 160-bit (20-byte) hash value
+         (digest).
+
+config SPL_SHA256
+       bool "Enable SHA256 support in SPL"
+       default y if SHA256
+       help
+         This option enables support of hashing using SHA256 algorithm.
+         The hash is calculated in software.
+         The SHA256 algorithm produces a 256-bit (32-byte) hash value
+         (digest).
+
+config SPL_SHA512
+       bool "Enable SHA512 support in SPL"
+       default y if SHA512
+       help
+         This option enables support of hashing using SHA512 algorithm.
+         The hash is calculated in software.
+         The SHA512 algorithm produces a 512-bit (64-byte) hash value
+         (digest).
+
+config SPL_SHA384
+       bool "Enable SHA384 support in SPL"
+       default y if SHA384
+       select SPL_SHA512
+       help
+         This option enables support of hashing using SHA384 algorithm.
+         The hash is calculated in software. This is also selects SHA512,
+         because these implementations share the bulk of the code..
+         The SHA384 algorithm produces a 384-bit (48-byte) hash value
+         (digest).
+
+config SPL_SHA_HW_ACCEL
+       bool "Enable hardware acceleration for SHA hash functions"
+       default y if SHA_HW_ACCEL
+       help
+         This option enables hardware acceleration for the SHA1 and SHA256
+         hashing algorithms. This affects the 'hash' command and also the
+         hash_lookup_algo() function.
+
+config SPL_SHA_PROG_HW_ACCEL
+       bool "Enable Progressive hashing support using hardware in SPL"
+       depends on SHA_PROG_HW_ACCEL
+       default y
+       help
+         This option enables hardware-acceleration for SHA progressive
+         hashing.
+         Data can be streamed in a block at a time and the hashing is
+         performed in hardware.
+
+endif
+
 if SHA_HW_ACCEL
 
 config SHA512_HW_ACCEL
@@ -430,6 +559,7 @@ config MD5
 
 config SPL_MD5
        bool "Support MD5 algorithm in SPL"
+       depends on SPL
        help
          This option enables MD5 support in SPL. MD5 is an algorithm designed
          in 1991 that produces a 16-byte digest (or checksum) from its input
@@ -437,6 +567,11 @@ config SPL_MD5
          security applications, but it can be useful for providing a quick
          checksum of a block of data.
 
+config CRC32
+       def_bool y
+       help
+         Enables CRC32 support in U-Boot. This is normally required.
+
 config CRC32C
        bool
 
@@ -511,6 +646,7 @@ config ZSTD
 
 config SPL_LZ4
        bool "Enable LZ4 decompression support in SPL"
+       depends on SPL
        help
          This enables support for the LZ4 decompression algorithm in SPL. LZ4
          is a lossless data compression algorithm that is focused on
@@ -519,11 +655,19 @@ config SPL_LZ4
 
 config SPL_LZMA
        bool "Enable LZMA decompression support for SPL build"
+       depends on SPL
        help
          This enables support for LZMA compression algorithm for SPL boot.
 
+config VPL_LZMA
+       bool "Enable LZMA decompression support for VPL build"
+       default y if LZMA
+       help
+         This enables support for LZMA compression algorithm for VPL boot.
+
 config SPL_LZO
        bool "Enable LZO decompression support in SPL"
+       depends on SPL
        help
          This enables support for LZO compression algorithm in the SPL.
 
@@ -540,6 +684,7 @@ config SPL_ZLIB
 
 config SPL_ZSTD
        bool "Enable Zstandard decompression support in SPL"
+       depends on SPL
        select XXHASH
        help
          This enables Zstandard decompression library in the SPL.
@@ -601,6 +746,7 @@ config OF_LIBFDT_OVERLAY
 
 config SPL_OF_LIBFDT
        bool "Enable the FDT library for SPL"
+       depends on SPL_LIBGENERIC_SUPPORT
        default y if SPL_OF_CONTROL
        help
          This enables the FDT library (libfdt). It provides functions for
@@ -611,7 +757,7 @@ config SPL_OF_LIBFDT
 
 config SPL_OF_LIBFDT_ASSUME_MASK
        hex "Mask of conditions to assume for libfdt"
-       depends on SPL_OF_LIBFDT || FIT
+       depends on SPL_OF_LIBFDT || (FIT && SPL)
        default 0xff
        help
          Use this to change the assumptions made by libfdt in SPL about the
@@ -622,6 +768,7 @@ config SPL_OF_LIBFDT_ASSUME_MASK
 
 config TPL_OF_LIBFDT
        bool "Enable the FDT library for TPL"
+       depends on TPL_LIBGENERIC_SUPPORT
        default y if TPL_OF_CONTROL
        help
          This enables the FDT library (libfdt). It provides functions for
@@ -632,7 +779,7 @@ config TPL_OF_LIBFDT
 
 config TPL_OF_LIBFDT_ASSUME_MASK
        hex "Mask of conditions to assume for libfdt"
-       depends on TPL_OF_LIBFDT || FIT
+       depends on TPL_OF_LIBFDT || (FIT && TPL)
        default 0xff
        help
          Use this to change the assumptions made by libfdt in TPL about the
@@ -641,6 +788,28 @@ config TPL_OF_LIBFDT_ASSUME_MASK
          0xff means all assumptions are made and any invalid data may cause
          unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
 
+config VPL_OF_LIBFDT
+       bool "Enable the FDT library for VPL"
+       depends on VPL
+       default y if VPL_OF_CONTROL && !VPL_OF_PLATDATA
+       help
+         This enables the FDT library (libfdt). It provides functions for
+         accessing binary device tree images in memory, such as adding and
+         removing nodes and properties, scanning through the tree and finding
+         particular compatible nodes. The library operates on a flattened
+         version of the device tree.
+
+config VPL_OF_LIBFDT_ASSUME_MASK
+       hex "Mask of conditions to assume for libfdt"
+       depends on VPL_OF_LIBFDT || (FIT && VPL)
+       default 0xff
+       help
+         Use this to change the assumptions made by libfdt in SPL about the
+         device tree it is working with. A value of 0 means that no assumptions
+         are made, and libfdt is able to deal with malicious data. A value of
+         0xff means all assumptions are made and any invalid data may cause
+         unsafe execution. See FDT_ASSUME_PERFECT, etc. in libfdt_internal.h
+
 config FDT_FIXUP_PARTITIONS
        bool "overwrite MTD partitions in DTS through defined in 'mtdparts'"
        depends on OF_LIBFDT
@@ -688,17 +857,52 @@ endmenu
 
 config ASN1_COMPILER
        bool
+       help
+         ASN.1 (Abstract Syntax Notation One) is a standard interface
+         description language for defining data structures that can be
+         serialized and deserialized in a cross-platform way. It is
+         broadly used in telecommunications and computer networking,
+         and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
+         This option enables the support of the asn1 compiler.
 
 config ASN1_DECODER
        bool
        help
-         Enable asn1 decoder library.
+         ASN.1 (Abstract Syntax Notation One) is a standard interface
+         description language for defining data structures that can be
+         serialized and deserialized in a cross-platform way. It is
+         broadly used in telecommunications and computer networking,
+         and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
+         This option enables the support of the asn1 decoder.
+
+config SPL_ASN1_DECODER
+       bool
+       help
+         ASN.1 (Abstract Syntax Notation One) is a standard interface
+         description language for defining data structures that can be
+         serialized and deserialized in a cross-platform way. It is
+         broadly used in telecommunications and computer networking,
+         and especially in cryptography (https://en.wikipedia.org/wiki/ASN.1).
+         This option enables the support of the asn1 decoder in the SPL.
 
 config OID_REGISTRY
        bool
        help
+         In computing, object identifiers or OIDs are an identifier mechanism
+         standardized by the International Telecommunication Union (ITU) and
+         ISO/IEC for naming any object, concept, or "thing" with a globally
+         unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
          Enable fast lookup object identifier registry.
 
+config SPL_OID_REGISTRY
+       bool
+       help
+         In computing, object identifiers or OIDs are an identifier mechanism
+         standardized by the International Telecommunication Union (ITU) and
+         ISO/IEC for naming any object, concept, or "thing" with a globally
+         unambiguous persistent name (https://en.wikipedia.org/wiki/Object_identifier).
+         Enable fast lookup object identifier registry in the SPL.
+
 config SMBIOS_PARSER
        bool "SMBIOS parser"
        help
@@ -723,13 +927,13 @@ config LIB_ELF
 
 config LMB
        bool "Enable the logical memory blocks library (lmb)"
-       default y if ARC || ARM || M68K || MICROBLAZE || MIPS || NDS32 || \
+       default y if ARC || ARM || M68K || MICROBLAZE || MIPS || \
                     NIOS2 || PPC || RISCV || SANDBOX || SH || X86 || XTENSA
        help
          Support the library logical memory blocks.
 
 config LMB_USE_MAX_REGIONS
-       bool "Use a commun number of memory and reserved regions in lmb lib"
+       bool "Use a common number of memory and reserved regions in lmb lib"
        depends on LMB
        default y
        help
@@ -764,10 +968,3 @@ config LMB_RESERVED_REGIONS
          memory blocks.
 
 endmenu
-
-config PHANDLE_CHECK_SEQ
-       bool "Enable phandle check while getting sequence number"
-       help
-         When there are multiple device tree nodes with same name,
-          enable this config option to distinguish them using
-         phandles in fdtdec_get_alias_seq() function.