
menu "Partition Types"

config PARTITIONS
	bool
	help
	  Partition Labels (disklabels) Supported:
	  Zero or more of the following:
	  - CONFIG_MAC_PARTITION   Apple's MacOS partition table.
	  - CONFIG_DOS_PARTITION   MS Dos partition table, traditional on the
	                           Intel architecture, USB sticks, etc.
	  - CONFIG_ISO_PARTITION   ISO partition table, used on CDROM etc.
	  - CONFIG_EFI_PARTITION   GPT partition table, common when EFI is the
	                           bootloader.  Note 2TB partition limit; see
	                           disk/part_efi.c
	  - CONFIG_MTD_PARTITIONS  Memory Technology Device partition table.
	  If IDE or SCSI support is enabled (CONFIG_CMD_IDE or CONFIG_SCSI)
	  you must configure support for at least one non-MTD partition type
	  as well.

config SPL_PARTITIONS
	bool
	select SPL_SPRINTF
	select SPL_STRTO
	help
	  Enable this for base partition support in SPL. The required
	  partition table types shold be enabled separately. This adds a
	  small amount of size to SPL, typically 500 bytes.

config TPL_PARTITIONS
	bool
	select TPL_SPRINTF
	select TPL_STRTO
	help
	  Enable this for base partition support in TPL. The required
	  partition table types shold be enabled separately. This adds a
	  small amount of size to TPL, typically 500 bytes.

config MAC_PARTITION
	bool "Enable Apple's MacOS partition table"
	select PARTITIONS
	help
	  Say Y here if you would like to use device under U-Boot which
	  were partitioned on a Macintosh.

config SPL_MAC_PARTITION
	bool "Enable Apple's MacOS partition table for SPL"
	depends on SPL
	default y if MAC_PARTITION
	select SPL_PARTITIONS

config TEGRA_PARTITION
	bool "Enable Nvidia Tegra partition table"
	select PARTITIONS
	select EFI_PARTITION
	help
	  Say Y here if you would like to use U-Boot on a device that
	  is using the Nvidia Tegra partition table and cannot alter it.

	  If unsure, say N.

config DOS_PARTITION
	bool "Enable MS Dos partition table"
	default y if BOOT_DEFAULTS
	default y if x86 || CMD_FAT || USB_STORAGE
	select PARTITIONS
	help
	  traditional on the Intel architecture, USB sticks, etc.

config SPL_DOS_PARTITION
	bool "Enable MS Dos partition table for SPL"
	depends on SPL
	default n if ARCH_MVEBU
	default n if ARCH_SUNXI
	default y if DOS_PARTITION
	select SPL_PARTITIONS

config ISO_PARTITION
	bool "Enable ISO partition table"
	default y if BOOT_DEFAULTS
	default y if MIPS || ARCH_TEGRA
	select PARTITIONS

config SPL_ISO_PARTITION
	bool "Enable ISO partition table for SPL"
	depends on SPL
	select SPL_PARTITIONS

config AMIGA_PARTITION
	bool "Enable AMIGA partition table"
	select PARTITIONS
	help
	  Say Y here if you would like to use device under U-Boot which
	  were partitioned under AmigaOS.

config SPL_AMIGA_PARTITION
	bool "Enable AMIGA partition table for SPL"
	depends on SPL
	default y if AMIGA_PARTITION
	select SPL_PARTITIONS

config EFI_PARTITION
	bool "Enable EFI GPT partition table"
	default y if BOOT_DEFAULTS
	default y if ARCH_TEGRA
	select PARTITIONS
	select LIB_UUID
	help
	  Say Y here if you would like to use device under U-Boot which
	  were partitioned using EFI GPT.
	  common when EFI is the bootloader.  Note 2TB partition limit;
	  see disk/part_efi.c

config EFI_PARTITION_ENTRIES_NUMBERS
	int "Number of the EFI partition entries"
	depends on EFI_PARTITION
	default 56 if ARCH_SUNXI
	default 128
	help
	  Specify the number of partition entries in the GPT. This is
	  meant to allow less than the standard specifies for devices
	  that might need to place their first-stage bootloader in the
	  middle of a regular GPT.

	  If unsure, leave at 128 entries, which is the standard
	  number.

config EFI_PARTITION_ENTRIES_OFF
	int "Offset (in bytes) of the EFI partition entries"
	depends on EFI_PARTITION
	default 0
	help
	  Specify an earliest location (in bytes) where the partition
	  entries may be located. This is meant to allow "punching a
	  hole into a device" to create a gap for an SPL, its payload
	  and the U-Boot environment.

	  If unsure, leave at 0 (which will locate the partition
	  entries at the first possible LBA following the GPT header).

config SPL_EFI_PARTITION
	bool "Enable EFI GPT partition table for SPL"
	depends on  SPL
	default n if ARCH_MVEBU
	default n if ARCH_SUNXI
	default y if EFI_PARTITION
	select SPL_PARTITIONS

config PARTITION_UUIDS
	bool "Enable support of UUID for partition"
	depends on PARTITIONS
	default y if BOOT_DEFAULTS
	default y if EFI_PARTITION
	select LIB_UUID
	help
	  Activate the configuration of UUID for partition

config SPL_PARTITION_UUIDS
	bool "Enable support of UUID for partition in SPL"
	depends on SPL_PARTITIONS
	default y if SPL_EFI_PARTITION
	select SPL_LIB_UUID

config PARTITION_TYPE_GUID
	bool "Enable support of GUID for partition type"
	depends on EFI_PARTITION
	help
	  Activate the configuration of GUID type
	  for EFI partition

config SPL_PARTITION_TYPE_GUID
	bool "Enable support of GUID for partition type (SPL)"
	depends on SPL_EFI_PARTITION
	help
	  Activate the configuration of GUID type
	  for EFI partition

endmenu
