
menu "Partition Types"

config PARTITIONS
	bool "Enable Partition Labels (disklabels) support"
	default y
	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 MAC_PARTITION
	bool "Enable Apple's MacOS partition table"
	depends on 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 && PARTITIONS
	default y if MAC_PARTITION

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

config SPL_DOS_PARTITION
	bool "Enable MS Dos partition table for SPL"
	depends on SPL && PARTITIONS
	default y if DOS_PARTITION

config ISO_PARTITION
	bool "Enable ISO partition table"
	depends on PARTITIONS
	default y if DISTRO_DEFAULTS
	default y if MIPS || TEGRA

config SPL_ISO_PARTITION
	bool "Enable ISO partition table for SPL"
	depends on SPL && PARTITIONS
	default y if ISO_PARTITION

config AMIGA_PARTITION
	bool "Enable AMIGA partition table"
	depends on 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 && PARTITIONS
	default y if AMIGA_PARTITION

config EFI_PARTITION
	bool "Enable EFI GPT partition table"
	depends on PARTITIONS
	default y if DISTRO_DEFAULTS
	default y if TEGRA
	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 && PARTITIONS
	default y if EFI_PARTITION

config PARTITION_UUIDS
	bool "Enable support of UUID for partition"
	depends on PARTITIONS
	default y if DISTRO_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

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

endmenu
